2009-12-30 80 views
9

我們有一個較老的C++工具,可以自動生成一些python代碼。我試圖通過C++源代碼工具來打分,今天我非常想拍攝自己的作品。事情就是我想要做的,就是清理工具創建的源代碼,並通過添加sphinx標籤將這些類鏈接到我們的內部文檔系統。從Python內部解析Python代碼?

現在我想知道是否有某種奇妙的工具來解析Python代碼中的Python代碼?

有東西很多是這樣的:

foo._methods_.append() 

Snip 500 lines 

foo._methods_.append() 

有什麼建議?

基本上我有一個功能,但瘋狂凌亂的代碼結構,我基本上想要提取某些塊,將它們移動到他們自己的文件。並清理所有創建的錯誤事物。

我在解析器和AST上看起來很快,但是我找不到它正在使用的任何實例。

回答

3

根據您的需求,您可能還需要檢查出的2to3庫。它的編寫是爲了自動地促進Python 2.x應用程序到Python 3.0的轉換,因此它的主要用例是獲取一個Python源文件,對其執行一些轉換,然後將結果源文件分發出去。

lib2to3對ast模塊的一個好處是ast不會保留空格和註釋,而lib2to3卻可以。如果你已經在處理自動生成的代碼,這對你來說可能不是問題。

1

嘗試使用Python文檔生成工具之一來查看這是否可以幫助您解決整體問題。我用epydoc取得了巨大的成功。

或者,如果您可以讓您的老闆參與200美元,請購買SparxSystems的Enterprise Architect副本。它將對您的Python代碼進行反向工程,生成一個類圖,並允許您單擊類圖並查看底層代碼。適用於除Python以外的許多語言,以及出色的設計和文檔實用程序。 (有一個99美元的版本,但這不包括代碼導入功能。)