主流代码扫描静态分析工具
市場上靜態代碼掃描工具百花齊放,種類繁多,本文通過相關云廠商咨詢、互聯網峰會資料查閱和主流技術網站檢索得出初步結論,和大家分享討論。
1、spotbugs/findbugs(java)
SpotBugs (開源)是一個使用靜態分析來查找 Java 代碼中的錯誤的程序。它是自由軟件,根據GNU 寬通用公共許可證的條款分發。
SpotBugs 是FindBugs(現在是一個廢棄的項目)的一個分支,在其社區的支持下從它停止的那一點開始。詳情請查看官方手冊。
2、TScanCode(C/C++、C#、Lua)
TscanCode(騰訊開源)是一款靜態代碼掃描工具,TscanCode旨在助力開發與測試人員從代碼層面挖掘問題,將那些長期困擾項目的諸如空指針宕機等問題,扼殺于萌芽階段。支持用戶根據不同需求自定義配置檢查項,有極強的擴展性和可維護性。平均掃描速度10W行/分鐘。
3、pclint(C/C++)
由Gimpel Software公司提供(付費)。X PC-lint 是一個強大的靜態分析工具,它將檢查您的 C/C++ 源代碼并發現錯誤、故障、不一致、不可移植的結構、冗余代碼等等。它查看多個模塊,因此享有編譯器所沒有的視角。
4、Cppcheck(C/C++)
支持圖形界面和命令行;Cppcheck是 C/C++ 代碼的靜態分析工具(開源) 。它提供獨特的代碼分析來檢測錯誤,并專注于檢測未定義的行為和危險的編碼結構。目標是減少誤報。Cppcheck 旨在能夠分析您的 C/C++ 代碼,即使它具有非標準語法(在嵌入式項目中很常見)。
5、Klocwork(C、C++、C#、Java、JavaScript?)
國內使用較廣泛的分析工具(付費);適用于 C、C++、C#、Java、JavaScript 和 Python 的Klocwork 靜態代碼分析和SAST工具可識別軟件安全性、質量和可靠性問題,幫助強制遵守標準。
6、Coverity Prevent(C/C++、C#、JAVA)
提供多種輔助工具,專長于最準確的找到最嚴重和最難檢測的缺陷(付費)。
7、ESLint(JavaScrip、NodeJs)
ESLint 是一個開源的 JavaScript 代碼檢查工具,由 Nicholas C. Zakas 于2013年6月創建。代碼檢查是一種靜態的分析,常用于尋找有問題的模式或者代碼,并且不依賴于具體的編碼風格。對大多數編程語言來說都會有代碼檢查,一般來說編譯程序會內置檢查工具。
8、Flake8(Python)
它綜合以下三者的功能,在簡化操作的同時,還提供了擴展開發接口。(開源)
PyFlakes:靜態檢查Python代碼邏輯錯誤的工具。
pep8: 靜態檢查PEP 8編碼風格的工具。
Ned Batchelder’s McCabe script:靜態分析Python代碼復雜度的工具。
9、Pylint(Python)
Pylint 是一種檢查 Python 代碼錯誤、嘗試執行編碼標準并查找代碼異味的工具(開源)。它還可以查找某些類型錯誤,可以推薦有關如何重構特定塊的建議,并可以為您提供有關代碼復雜性的詳細信息。
10、PhpMetrics(PHP)
PhpMetrics 分析您的 PHP 代碼并提供 HTML、JSON、CSV ......關于復雜性、依賴關系、耦合、違規等的報告。(開源)
11、golangci-lint(go)
GolangCI-Lint是一個lint聚合器(開源),它的速度很快,平均速度是gometalinter的5倍。它易于集成和使用,具有良好的輸出并且具有最小數量的誤報。而且它還支持go modules。最重要的是免費開源。
12、sonarqube(多種)
sonar是一款靜態代碼質量分析工具(開源),支持Java、Python、PHP、JavaScript、CSS等25種以上的語言,而且能夠集成在IDE、Jenkins、Git等服務中,方便隨時查看代碼質量分析報告;
總結
以上是生活随笔為你收集整理的主流代码扫描静态分析工具的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 移动端中如何检测设备方向的变化?
- 下一篇: 正则表达式替换排除特定情况