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