靜態(tài)代碼掃描盏檐,借用一段網(wǎng)上的原文解釋一下(這里叫靜態(tài)檢查):“靜態(tài)測試包括代碼檢查蜗巧、靜態(tài)結(jié)構(gòu)分析、代碼質(zhì)量度量等奏赘。它可以由人工進行寥闪,充分發(fā)揮人的邏輯思維優(yōu)勢,也可以借助軟件工具自動進行磨淌。代碼檢查代碼檢查包括代碼走查疲憋、桌面檢查、代碼審查等梁只,主要檢查代碼和設計的一致性缚柳,代碼對標準的遵循、可讀性搪锣,代碼的邏輯表達的正確性秋忙,代碼結(jié)構(gòu)的合理性等方面;可以發(fā)現(xiàn)違背程序編寫標準的問題构舟,程序中不安全灰追、不明確和模糊的部分,找出程序中不可移植部分狗超、違背程序編程風格的問題弹澎,包括變量檢查、命名和類型審查努咐、程序邏輯審查苦蒿、程序語法檢查和程序結(jié)構(gòu)檢查等內(nèi)容∩裕”佩迟。
我看了一系列的靜態(tài)代碼掃描或者叫靜態(tài)代碼分析工具后,總結(jié)對工具的看法:靜態(tài)代碼掃描工具竿屹,和編譯器的某些功能其實是很相似的报强,他們也需要詞法分析,語法分析羔沙,語意分析...但和編譯器不一樣的是他們可以自定義各種各樣的復雜的規(guī)則去對代碼進行分析躺涝。
以下將會列出的靜態(tài)代碼掃描工具,會由于實現(xiàn)方法,算法坚嗜,分析的層次不同夯膀,功能上會差異很大。有的可以做SQL注入的檢查苍蔬,有的則不能(當然诱建,由于時間問題還沒有對規(guī)則進行研究,但要檢查復雜的代碼安全漏洞碟绑,是需要更高深分析算法的俺猿,所以有的東西應該不是設置規(guī)則庫就可以檢查到的,但在安全方面的檢查格仲,一定程度上也是可以通過設置規(guī)則進行檢查的)押袍。
.NET
- .NET Compiler Platform(代號羅斯林) -開源編譯器框架,C#和Visual Basic .NET中開發(fā)的微軟 .NET凯肋。提供用于分析和操作語法的API谊惭。
- CodeIt.Right -結(jié)合靜態(tài)代碼分析和自動重構(gòu)最佳實踐,它允許代碼中的錯誤和違規(guī)行為自動修正; 支持C#和VB.NET侮东。
- 的CodeRush -一個插件的Visual Studio它提醒用戶侵犯最佳做法圈盔。
- 的FxCop -免費靜態(tài)分析微軟.NET程序編譯為CIL。獨立和集成在一些微軟的Visual Studio版本; 微軟悄雅。
- NDepend的 -簡化了管理驱敲,通過分析和可視化代碼的依賴關系,通過定義設計規(guī)則宽闲,這樣做影響分析復雜的.NET代碼庫众眨,并通過比較不同版本的代碼。集成到Visual Studio中便锨。
- Parasoft dotTEST -靜態(tài)分析围辙,單元測試和代碼審查的插件為Visual Studio的 ; 適用于語言的Microsoft .NET Framework和.NET Compact Framework我碟,包括C#放案,VB.NET,ASP.NET和托管C ++矫俺。
- 了StyleCop -分析C#源代碼來執(zhí)行一組風格和一致性規(guī)則吱殉。它可以從內(nèi)部運行的Microsoft Visual Studio中或整合到MSBuild的項目。
?厘托,C ++
- Astrée -查找所有可能的運行時錯誤由抽象解釋友雳,可以證明不存在運行時錯誤,并能證明功能的斷言; 針對對安全至關重要的C代碼(例如航空電子設備)铅匹。
- BLAST - (伯克利懶惰抽象軟件驗證工具) -對C程序的基礎上慵懶抽象的開源軟件模型檢測(后續(xù)項目CPAchecker押赊。[5])。
- Cppcheck -開源的工具來檢查幾種類型的錯誤包斑,包括使用STL流礁。
- cpplint -一個開源的工具涕俗,它檢查是否符合谷歌的風格指南對C ++編碼。
- Clang -一個開放源代碼編譯器神帅,它包括一個靜態(tài)分析器它包括一個靜態(tài)分析器再姑。
- Coccinelle的 -一個開源的源代碼模式匹配和改造。
- Cppdepend -簡化了管理找御,通過分析和可視化代碼的依賴關系元镀,通過定義設計規(guī)則,這樣做影響分析霎桅,并比較不同版本的代碼的復雜的C / C ++代碼庫栖疑。
- ECLAIR -對于自動分析,驗證滔驶,C和C ++程序的測試和轉(zhuǎn)化的平臺蔽挠。
- Eclipse(軟件) -一種開放源碼的IDE,包括靜態(tài)代碼分析儀(CODAN)瓜浸。
- Fluctuat - 抽象解釋的程序數(shù)值屬性的驗證澳淑。
- Frama-C -一個開源的靜態(tài)分析框架C.
- Goanna -軟件分析工具,用于C / C ++插佛。
- Klocwork的靜態(tài)代碼分析 -靜態(tài)分析工具杠巡,用于C / C ++。
- Lint -原來的靜態(tài)代碼分析儀C.
- LDRA Testbed -軟件分析與測試工具套件的C / C ++雇寇。
- Parasoft C / C ++test - C / C ++工具氢拥,它的靜態(tài)分析,單元測試锨侯,代碼審查嫩海,并且運行時錯誤檢測; 可用于插件的Visual Studio和Eclipse的基礎的集成開發(fā)環(huán)境。
- PC-Lint -軟件分析工具囚痴,用于C / C ++叁怪。
- Polyspace -使用抽象解釋檢測和證明不存在的運行時間錯誤,在死代碼的源代碼以及用于檢查所有MISRA(2004深滚,2012)奕谭,規(guī)則(指令,非指令)痴荐。
- PVS-Studio -軟件分析工具血柳,用于C,C ++生兆,C ++ 11难捌,C ++ / CX(組件擴展)。
- PRQA QA·C與QA·C ++ -的C / C ++質(zhì)量保證和方針/編碼標準執(zhí)法與MISRA支持深度靜態(tài)分析。
- SLAM project -一期工程微軟研究院檢查它使用的接口軟件滿足的關鍵行為屬性根吁。
- Sparse -一個開源工具昆汹,旨在發(fā)現(xiàn)故障的Linux內(nèi)核。
- Splint -一個開源的進化版皮棉婴栽,為C.
- ...
Java
- Checkstyle -除了一些靜態(tài)代碼分析满粗,它可以用來顯示侵犯一個配置編碼標準。
- FindBugs -一個開源的靜態(tài)分析字節(jié)碼的Java(基于雅加達 BCEL馬里蘭大學)愚争。
- IntelliJ IDEA -跨平臺的Java IDE映皆,具有自己的一套幾百代碼檢查可在即時在整個項目的編輯和批量分析分析代碼。
- JArchitect -簡化了分析和可視化代碼的依賴關系轰枝,通過定義設計規(guī)則捅彻,這樣做影響分析,并通過比較不同版本的代碼管理復雜的Java代碼庫鞍陨。
- Jtest -測試和靜態(tài)代碼分析產(chǎn)品通過Parasoft的步淹。
- LDRA Testbed -軟件分析與測試工具套件的Java。
- PMD -靜態(tài)規(guī)則集基于Java源代碼分析器诚撵,能夠識別潛在問題缭裆。
- SemmleCode -面向?qū)ο蟮拇a查詢靜態(tài)程序分析。
- Sonargraph(原SonarJ) -代碼為目的的架構(gòu)顯示器的一致性寿烟,也計算了廣泛的軟件度量澈驼。
- Soot -一個語言處理和優(yōu)化框架由中間語言的Java。
- Squale -管理軟件質(zhì)量的平臺(也可用于其他語言筛武,使用商業(yè)分析工具雖然)缝其。
- SonarQube -對代碼質(zhì)量的持續(xù)檢查的開源平臺。
- SourceQube -一個獨立于平臺的命令行靜態(tài)源代碼分析器用于Java徘六,C / C ++内边,RPG IV(AS / 400)和Python。
- ThreadSafe -一個靜態(tài)分析工具待锈,用于Java的重點是尋找并發(fā)錯誤漠其。
- ...
JavaScript
- Google's Closure Compiler -的JavaScript優(yōu)化器重寫代碼,以更快炉擅,更小辉懒,并檢查使用本地JavaScript功能阳惹。
- JSLint -的JavaScript 語法檢查和驗證谍失。
- JSHint - JSLint的的社區(qū)驅(qū)動的叉。
Objective-C, Objective-C++
Perl
- Perl::Critic -一個工具來幫助實施通用Perl的最佳實踐。大多數(shù)的最佳做法是基于達米安康威的Perl的最佳實踐的書抹竹。
- PerlTidy -程序作為一個語法檢查和測試儀/實施者在Perl的編碼實踐线罕。
- Padre- Perl的一個IDE,它也提供了靜態(tài)代碼分析檢查常見的初學者的錯誤窃判。
Python的[ 編輯]
Fortify:
ASPECT:
http://www.aspectsecurity.com/
OWASP:
http://www.owasp.org/index.php/Main_Page
securitycompass:
http://www.securitycompass.com/resources.shtml
參考資料:
- http://www.dwheeler.com/flawfinder/
- http://www.java2s.com/Product/Java/Byte-Source-Code/Source-Analysis-Diagram.htm
- http://www.softwarelist.cn/?fsid=53&cid=530&cpath=ABAN
- http://www.hacker.com.cn/article/view_14804.html
- http://www.cs.cmu.edu/~aldrich/courses/654/tools/
注:以上鏈接列舉了大量相關工具
原文鏈接:https://blog.csdn.net/dongwuming/article/details/49423909