2012-06-01 66 views
3

我試圖寫一個程序來分析Java源代碼,例如,檢查所有調用者一定的方法。由於Eclipse IDE提供了這種功能,這是強大的,令人印象深刻,我想知道,如果他們提供一些API,所以我可以在我的程序中使用這些功能爲好。使用Eclipse核心/ JDT以編程方式分析Java源代碼

我在網上查了一些資料。但幾乎所有我能找到的文檔都與eclipse插件開發有關,這不是我想要的。我想在獨立程序中使用它們(也許作爲編譯鏈的一部分來進行自定義樣式檢查)。

這可能嗎?如果是這樣,任何鏈接作爲我開始研究的入口點將非常感激。如果沒有,我可以嘗試一下嗎? (我曾經考慮使用ANTLR,但它僅僅是一個解析器是相當幾步之遙從源代碼分析器)

+0

希望有用:[稀疏](https://sparse.wiki.kernel.org/index.php/Main_Page)(僅限C)[MELT](http://gcc-melt.org/)(插件GCC的寫作工具包)。 – sarnold

+0

@sarnold我忘了指定我對Java源代碼分析感興趣。我正在看GCC MELT來檢查它是否可以成爲我的選擇。非常感謝。 – qinsoon

回答

1

我不知道關於Eclipse本身,但這裏有一些選擇:

首先,比較輕便:

  • Findbugs。如果你是一位體面的Java程序員,可以相對直接地編寫自己的分析。
  • PMD。我自己並沒有使用它,但是看起來很簡單,可以編寫Java分析和額外的獎金 - 它們支持源代碼AST的XPath式查詢。

這些可能是矯枉過正,但重炮的Java分析是Soot from McGill U.WALA from IBM

+0

非常感謝。煤煙似乎在Java字節碼上運行,而不是在源代碼級別上,這可能不是我所期望的。我會研究其餘的。謝謝。 – qinsoon

+0

沒錯。 findbugs有同樣的問題。但PMD與WALA一樣有源支持。不過,對於WALA,我認爲他們的源代碼支持不如字節碼支持成熟。 –

1

如果您決定像JDT,那就不是(非常)困難的開發將只使用與JDT基本的Eclipse的東西和功能作爲標準的命令行應用程序Eclipse RCP應用程序。有關Eclipse RCP的許多教程和論文。

0

作爲alterantive到Eclipse/ANTLR,看到我們DMS Software Reengineering ToolkitJava Front End。 DMS提供了通用目的解析/樹建立/模式匹配/源重寫功能;前端定製DMS來了解語法細節,如語法,符號表和流分析(對於Java,目前僅限於方法)。

0

如果你想做「真正的」靜態分析,我建議去現有的框架之一,如SootChord。你需要的分析很可能已經在那裏實現了(儘管那些工具通常更喜歡字節碼)。另一方面,特別是在Eclipse中已經存在「查找所有調用者」 - 分析;你可以從CallHierarchyViewPart開始尋找。

相關問題