日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

qt自带静态代码检测工具_两款静态代码检测工具的对比

發(fā)布時(shí)間:2025/3/15 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 qt自带静态代码检测工具_两款静态代码检测工具的对比 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

測試背景

使用工具:

  • 源傘科技Pinpoint
  • Sonarqube

測試項(xiàng)目:

  • 開源國產(chǎn)CMS軟件iBase4J(6000行代碼)

測試結(jié)果匯總

數(shù)據(jù)統(tǒng)計(jì):

  • SonarQube結(jié)果:

代碼錯誤 安全隱患 風(fēng)格質(zhì)量 總量

有效/總量 2/6 4/4 0/93 6/103

  • 源傘科技Pinpoint結(jié)果:

代碼錯誤 安全隱患 風(fēng)格質(zhì)量 總量

有效/總量 2/2 19/19 6/7 27/28

有效報(bào)告:我們定義有效報(bào)告為真實(shí)影響程序執(zhí)行并值得進(jìn)一步檢查修復(fù)的問題報(bào)告。

測試細(xì)節(jié):

  • 數(shù)量:
  • 從數(shù)量看,Pinpoint結(jié)果確實(shí)明顯少于SonarQube。但是有效報(bào)告明顯少于Pinpoint.

    2. 安全隱患:

    從質(zhì)量看,首先Pinpoint可以找到很多SonarQube無法發(fā)現(xiàn)的Vulnerability,也就是安全隱患(19比4),其中SonarQube找到的4個(gè)有效報(bào)告Pinpoint也能找到,Pinpoint找到15個(gè)SonarQube沒有找到的問題。

    SonarQube的3個(gè)報(bào)告屬于同一類別,是在exception.printStackTrace()調(diào)用的時(shí)候,最好打log,不要直接打到屏幕上(這個(gè)被SonarQube歸類為安全問題), Pinpoint會提示這里會有stack trace信息泄露問題。如下圖所示:

    Pinpoint:

    SonarQube:

    除了這些,Pinpoint還找到了如下所示的安全隱患

    這些問題SonarQube都沒有報(bào)告。

    3. 代碼錯誤:

    對于代碼錯誤,SonarQube找到了6個(gè),而Pinpoint只找到2個(gè)問題,這兩個(gè)問題SonarQube也找到了,是有效報(bào)告。SonarQube歸類為bug的另外4個(gè)Pinpoint沒有報(bào)告的問題可以歸為兩類:

    第一個(gè)是參數(shù)修改,這個(gè)是JAVA中很常見的應(yīng)用方式,不太會引起程序錯誤,也會帶來大量誤報(bào),所以Pinpoint沒有列為bug,如下圖:

    第二個(gè)是常量的,隱式類型轉(zhuǎn)換,也是正確的用法,如下圖:

    4. 質(zhì)量風(fēng)格

    對于風(fēng)格質(zhì)量類問題,SonarQube共報(bào)了93個(gè)問題,而Pinpoint只報(bào)了7個(gè),兩個(gè)工具的報(bào)告完全沒有交集。SonarQube共報(bào)了93個(gè)問題,所有這些問題并不會產(chǎn)生實(shí)際代碼錯誤的問題,比如 if(a) {if(b){}} 要寫成 if(a&&b){} 這樣的問題,舉例如下:

    這些中的很多問題實(shí)際上可以修改一下,但是無論改與不改并不會實(shí)際影響程序的執(zhí)行。Pinpoint報(bào)告的7個(gè)問題SonarQube都沒有報(bào),這里包括幾類問題:

    可能缺失的異常處理(這里mkdir可能失敗),如下圖:

    可能引起反序列化安全隱患的問題:

    無意義的包裝+拆裝組合,切實(shí)影響程序的執(zhí)行效率

    無意義的null-check:

    除了最后一個(gè)影響不大(Severity=Low)其他每一個(gè)都是要仔細(xì)檢查的,SonarQube雖然報(bào)了93個(gè),但是這7個(gè)重要的都沒有報(bào)。

    主要結(jié)論:

  • 從報(bào)告總量上SonarQube比Pinpoint多報(bào)了很多(103/28),但是有效報(bào)告Pinpoint要明顯多于SonarQube(27/6)。
  • 6個(gè)有效報(bào)告SonarQube和Pinpoint同時(shí)報(bào)出。Pinpoint有21個(gè)有效報(bào)告SonarQube無法檢出。
  • SonarQube絕大多數(shù)是可有可無的修復(fù),并不影響程序執(zhí)行,Pinpoint雖然只有28個(gè)報(bào)告,但是每個(gè)報(bào)告都是值得一看的(除了標(biāo)記為low的那個(gè)無意義的null-check,那個(gè)雖然可以改一下,但是對程序執(zhí)行幾乎沒有影響)。
  • Pinpoint和SonarQube關(guān)注點(diǎn)有區(qū)別,有3個(gè)有效報(bào)告SonarQube報(bào)printStackTrace應(yīng)該打到log里而不是屏幕上,這個(gè)Pinpoint沒有歸類為bug, 同樣的位置Pinpoint報(bào)告的是stack trace信息泄露隱患。
  • 為國產(chǎn)工具源傘科技Pinpoint打Call !!

    總結(jié)

    以上是生活随笔為你收集整理的qt自带静态代码检测工具_两款静态代码检测工具的对比的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。