qt自带静态代码检测工具_两款静态代码检测工具的对比
測(cè)試背景
使用工具:
- 源傘科技Pinpoint
- Sonarqube
測(cè)試項(xiàng)目:
- 開(kāi)源國(guó)產(chǎn)CMS軟件iBase4J(6000行代碼)
測(cè)試結(jié)果匯總
數(shù)據(jù)統(tǒng)計(jì):
- SonarQube結(jié)果:
代碼錯(cuò)誤 安全隱患 風(fēng)格質(zhì)量 總量
有效/總量 2/6 4/4 0/93 6/103
- 源傘科技Pinpoint結(jié)果:
代碼錯(cuò)誤 安全隱患 風(fēng)格質(zhì)量 總量
有效/總量 2/2 19/19 6/7 27/28
有效報(bào)告:我們定義有效報(bào)告為真實(shí)影響程序執(zhí)行并值得進(jìn)一步檢查修復(fù)的問(wèn)題報(bào)告。
測(cè)試細(xì)節(jié):
從數(shù)量看,Pinpoint結(jié)果確實(shí)明顯少于SonarQube。但是有效報(bào)告明顯少于Pinpoint.
2. 安全隱患:
從質(zhì)量看,首先Pinpoint可以找到很多SonarQube無(wú)法發(fā)現(xiàn)的Vulnerability,也就是安全隱患(19比4),其中SonarQube找到的4個(gè)有效報(bào)告Pinpoint也能找到,Pinpoint找到15個(gè)SonarQube沒(méi)有找到的問(wèn)題。
SonarQube的3個(gè)報(bào)告屬于同一類別,是在exception.printStackTrace()調(diào)用的時(shí)候,最好打log,不要直接打到屏幕上(這個(gè)被SonarQube歸類為安全問(wèn)題), Pinpoint會(huì)提示這里會(huì)有stack trace信息泄露問(wèn)題。如下圖所示:
Pinpoint:
SonarQube:
除了這些,Pinpoint還找到了如下所示的安全隱患
這些問(wèn)題SonarQube都沒(méi)有報(bào)告。
3. 代碼錯(cuò)誤:
對(duì)于代碼錯(cuò)誤,SonarQube找到了6個(gè),而Pinpoint只找到2個(gè)問(wèn)題,這兩個(gè)問(wèn)題SonarQube也找到了,是有效報(bào)告。SonarQube歸類為bug的另外4個(gè)Pinpoint沒(méi)有報(bào)告的問(wèn)題可以歸為兩類:
第一個(gè)是參數(shù)修改,這個(gè)是JAVA中很常見(jiàn)的應(yīng)用方式,不太會(huì)引起程序錯(cuò)誤,也會(huì)帶來(lái)大量誤報(bào),所以Pinpoint沒(méi)有列為bug,如下圖:
第二個(gè)是常量的,隱式類型轉(zhuǎn)換,也是正確的用法,如下圖:
4. 質(zhì)量風(fēng)格
對(duì)于風(fēng)格質(zhì)量類問(wèn)題,SonarQube共報(bào)了93個(gè)問(wèn)題,而Pinpoint只報(bào)了7個(gè),兩個(gè)工具的報(bào)告完全沒(méi)有交集。SonarQube共報(bào)了93個(gè)問(wèn)題,所有這些問(wèn)題并不會(huì)產(chǎn)生實(shí)際代碼錯(cuò)誤的問(wèn)題,比如 if(a) {if(b){}} 要寫(xiě)成 if(a&&b){} 這樣的問(wèn)題,舉例如下:
這些中的很多問(wèn)題實(shí)際上可以修改一下,但是無(wú)論改與不改并不會(huì)實(shí)際影響程序的執(zhí)行。Pinpoint報(bào)告的7個(gè)問(wèn)題SonarQube都沒(méi)有報(bào),這里包括幾類問(wèn)題:
可能缺失的異常處理(這里mkdir可能失敗),如下圖:
可能引起反序列化安全隱患的問(wèn)題:
無(wú)意義的包裝+拆裝組合,切實(shí)影響程序的執(zhí)行效率
無(wú)意義的null-check:
除了最后一個(gè)影響不大(Severity=Low)其他每一個(gè)都是要仔細(xì)檢查的,SonarQube雖然報(bào)了93個(gè),但是這7個(gè)重要的都沒(méi)有報(bào)。
主要結(jié)論:
為國(guó)產(chǎn)工具源傘科技Pinpoint打Call !!
總結(jié)
以上是生活随笔為你收集整理的qt自带静态代码检测工具_两款静态代码检测工具的对比的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: [云炬ThinkPython阅读笔记]3
- 下一篇: [云炬ThinkPython阅读笔记]3