2013-08-19 43 views
3

我不確定這是否是正確的地方要問,任何幫助將不勝感激。我想爲Java構建一個靜態污點分析工具。我的理解是,該工具將從主入口點開始掃描所有的java文件。對於每一行源代碼,它都會解碼並執行所需的操作。Java程序的靜態污點分析

例如,

1- Boolean x=false; 
2- String s = x.toString(); 

線路1宣稱一個布爾變量和線路2將其轉換成字符串。第一行將會注意到布爾變量'x'已被聲明,並且它被轉換成第二行的字符串。而且,如果我對toString()函數進行檢查並執行所需的操作,我的工具只會理解它。

我的問題是,我是否需要編寫檢查Java中爲布爾類型定義的所有函數?其他數據類型和其他庫函數如何?

例如,可用於布爾類型的其他一些函數是;

toString(boolean value) 
compareTo(Boolean that) 
etc. 
+0

如果我使用StringUtils的或番石榴字符串什麼?還是小數格式化程序?你有大量的軌道來覆蓋和加載更多的時間花在這個話題上。沒有提及類型到對象的轉換和轉換....也許最好是分析字節碼,或做動態分析? – fatfredyy

+0

同意。這就是爲什麼我想知道其他靜態污點分析工具如何做到這一點?並且所有其他工具只能在字節碼級別上工作嗎? – Junaid

回答

3

爲什麼要重新發明輪子?你看過findbugs嗎? 如果你知道一些錯誤模式,然後用findbugs寫你自己的錯誤檢測器,你就完成了。 Herehereherehere是一些出發點...