2012-06-10 21 views
1

我正試圖在一個不是由我寫的大型java代碼庫中查找執行流程。我已經搜索了可能的工具(JSonde,JTrace,Java Call Tracert,JavacallTracer),但問題是它們都應該用於單個java/jar/class文件。 我試圖理解的代碼是用Ant構建的,並有數百個罐子。所以,它使用shell腳本運行。我不知道如何在這些代碼中使用這些工具。在一個巨大的java代碼庫中查找執行流程

我真的很感謝你的幫助。

+4

一個龐大的代碼庫可以有數十億不同的路徑。你希望從這樣的工具中學到什麼?理解代碼沒有魔法。您必須閱讀它,並在必要時使用Eclipse等IDE調試器進行跟蹤。 –

+0

找到「執行流程」幾乎是不可能的。你試圖完成的實際任務是什麼? Eclipse內置了大多數您需要的工具。您是否需要圖形表示?如果是的話,應該看到什麼? – Christian

+0

你說(回答馬克奧康納),「我想要做的是在代碼中做一些改變」。在什麼條件下?你想如何改變[每個人都想改變代碼,爲什麼你的需要特別]?手動?自動?你想從「控制流量」中得到什麼具體的結果? (你建議序列圖,這是你真正想要的嗎?這是你唯一想要的嗎?) –

回答

-1

我認爲你應該考慮的是一個代碼覆蓋工具。這將報告你的代碼的哪些部分被執行,哪些不是。有幾種這樣的工具需要考慮。 Jacoco是一個新興的最愛,並與Emma Eclipse插件相關聯。

有關代碼覆蓋率的事情要記住的是它需要由某種東西驅動。通常這是通過運行代碼的測試(單元或集成)來完成的。

最後,一旦您對如何啓用代碼覆蓋範圍感到滿意,您還可以考慮將其上傳並歸檔爲Sonar中的結果。

+0

-1這不會產生控制流信息。 –

+0

我想要做的是在代碼中進行一些更改。我已經多次閱讀代碼,但這還不夠。代碼可以導入到Eclipse中,但不能在Eclipse中執行(它最初是通過命令行構建的)。我從代碼中生成了UML類圖。不過,序列圖對於理解流程會更有用。 – user1052958

+0

我不認爲有可能做你想做的事。即使你有一個啓用你的代碼跟蹤的工具(例如通過啓用Java的工具API),你仍然需要一些東西來驅動你的代碼。最明顯的機制是自動化測試套件。正如吉姆·加里森指出的那樣,通過你的代碼有很多可能的執行路徑。 (遵循哪一個取決於程序的執行方式)。最後在實踐中代碼覆蓋率報告是一種更標準的執行分析形式 –