一些程式碼靜態檢查工具的簡介
1、KLOCWORK:
適用語言:C, C++, JAVA
是否開源:否,
是否需要編譯:是
作用:程式碼靜態檢查工具。用於高效檢測軟體缺陷和安全隱患,提供優秀的靜態原始碼分析解決方案。軟體號稱是業界領導者,能夠快速、準確分析大規模(幾百萬,甚至幾千萬行)、高複雜度程式碼的工具。能夠自動化檢測和解決C/C++、Java等原始碼中的嚴重、安全和規範類的缺陷。通過對構建環境、原始碼和開發過程給出一個完整的分析,最終實現高質量軟體。
2、COVERITY:
適用語言:C, C++, JAVA,PYTHON,java scrip
是否開源:否,
是否需要編譯:是
作用:用於高效檢測軟體缺陷和安全隱患,提供優秀的靜態原始碼分析解決方案。軟體號稱是業界領導者,是第一個能夠快速、準確分析大規模(幾百萬,甚至幾千萬行)、高複雜度程式碼的工具。內部採用Prevent SQS(軟體質量系統)架構方法,能夠自動化檢測和解決C/C++、Java等原始碼中的嚴重缺陷。通過對構建環境、原始碼和開發過程給出一個完整的分析,最終實現高質量軟體。
3、FORTIFY:
適用語言:C, C++, JAVA,PYTHON,java scrip
是否開源:否,
是否需要編譯:是
作用:程式碼安全測試工具。它通過內建的五大主要分析引擎:資料流、語義、結構、控制流、配置流等對應用軟體的原始碼進行靜態的分析,分析的過程中與它特有的軟體安全漏洞規則集進行全面地匹配、查詢,從而將原始碼中存在的安全漏洞掃描出來,並給予整理報告。
4、CPPTEST:
適用語言:C, C++
是否開源:否,
是否需要編譯:是
作用:Parasoft ® C/C++test TM –針對 C/C++ 開發的綜合性程式碼質量保障工具,使用C++test經時間驗證的重要最佳實踐—例如靜態分析,全面的程式碼審查,執行時錯誤檢測,整合覆蓋率分析的單元測試和元件測試—能夠在開發週期的開始階段,自動地在開發者的桌面上完成。能夠通過命令列模式自動化地執行迴歸和持續整合測試,為監測和分析質量趨勢提供資料。
5、TOX
適用語言:PYTHON
是否開源:是
是否需要編譯:否
作用:TOX是一個通用的virtualenv管理和測試命令列工具,TOX的目標是提供最先進的自動化打包,測試和釋出的Python軟體的工具,可以用於控制檯或者基礎到你的持續構建平臺。
支援功能:
1)、檢查你的包被正確地安裝不同版本的Python和解析器
2)、在每個環境中執行你的測試,配置測試工具的選擇
3)、作為一個持續整合伺服器的前端,大大降低了測試工作量。
6、Flake8
適用語言:PYTHON
是否開源:是
是否需要編譯:否
作用:Flake8是Python程式碼規範利器,他封裝了三個工具:1)PyFlakes:靜態檢查Python程式碼邏輯錯誤的工具;2)pep8: 靜態檢查PEP 8編碼風格的工具;3)Ned Batchelder’s McCabe script:靜態分析Python程式碼複雜度的工具。flake8綜合了上述三個工具的功能,還提供了擴充套件開發介面。
主要特徵:
1)包含這行檔案將被忽略:#flake8: noqa
2)結尾包含#noqa註釋的行將不釋出告警
3)GIT和Mercurial鉤子
4)McCabe複雜度檢查器
5)可以通過flake8.extension入口點擴充套件
Flake8的下載地址:https://pypi.python.org/pypi/flake8
7、GO LINT:
適用語言:GO
是否開源:是
是否需要編譯:否
作用:編碼規範類檢查
8、GO VET:
適用語言:GO是否開源:是
是否需要編譯:否
作用:檢查原始碼並報告可疑結構
9、SONAR:
適用語言:C, C++, JAVA,PYTHON,java scrip
是否開源:是
是否需要編譯:否
作用:Sonar (SonarQube)是一個開源平臺,用於管理原始碼的質量。Sonar 不只是一個質量資料報告工具,更是程式碼質量管理平臺。支援的語言包括:Java、PHP、C#、C、Cobol、PL/SQL、Flex 等。
開源中國程式碼質量管理系統 -> http://sonar.oschina.net/
主要特點:
•程式碼覆蓋:通過單元測試,將會顯示哪行程式碼被選中
•改善編碼規則
•搜尋編碼規則:按照名字,外掛,啟用級別和類別進行查詢
•專案搜尋:按照專案的名字進行查詢
•對比資料:比較同一張表中的任何測量的趨勢
10、Scalastyle:
適用語言:Scala
是否開源:是
是否需要編譯:否
作用:Scalastyle是個簡單易用的code style檢測工具,非常輕巧,有助於團隊風格一致。
1)目前有63條規則,主要集中在程式碼格式,如檔案行數、方法行數是否過多,是否指定了返回值,圈複雜度是否高於閾值等
2)有些規則和使用習慣不一致,如檔案首必須有license說明,if後必須有花括號等;
3)使用很簡單,一個配置,一行命令就可以,參見http://www.scalastyle.org/sbt.html
4)可以和CI結合
建議:因為側重格式方面,因此可以有條件使用,即關閉若干與習慣嚴重不符的規則,配合另外的能夠做安全檢查的工具;