靜態(tài)源代碼掃描是近年被人提及較多的軟件應(yīng)用安全解決方案之一。它是指在軟件工程中,程序員在寫好源代碼后,無需經(jīng)過編譯器編譯,而直接使用一些掃描工具對(duì)其進(jìn)行掃描,找出代碼當(dāng)中存在的一些安全漏洞的解決方案。
PMD
Pmd利用javacc和EBNF文法產(chǎn)生一個(gè)分析器,用來分析java源代碼(文本)。又在JavaCC的基礎(chǔ)上加入了語義的概念也就是JJTree,這樣就把java source轉(zhuǎn)換成了一個(gè)抽象語法樹(AST),AST是一個(gè)結(jié)構(gòu)化的對(duì)象層次結(jié)構(gòu)。我們可以用訪問者模式訪問這個(gè)結(jié)構(gòu)上的每個(gè)節(jié)點(diǎn)。從而找出哪個(gè)節(jié)點(diǎn)違反了哪些規(guī)則。Findbugs
CheckStyle