1. 程式人生 > >一些程式碼靜態檢查工具的簡介

一些程式碼靜態檢查工具的簡介

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結合
                  建議:因為側重格式方面,因此可以有條件使用,即關閉若干與習慣嚴重不符的規則,配合另外的能夠做安全檢查的工具;