一般來說,我想了解我的項目中的代碼究竟是從大框架實際使用的代碼。分析python項目導入
首先我想知道什麼是所有的進口(可能與靜態分析),然後如果可能的話,實際使用這些進口中的哪一個。
對於第一個問題,我可以使用正則表達式當然,但我想找到一個更清潔的方式。 但我不知道如何與ast/inspect/parser。
關於第二個問題,我應該能夠自動找出如果一些進口實際上未使用,但我該怎麼做?
關於第二個問題編輯: 也許最好的方法是一個簡單的導入鉤子,它只記錄它被導入的所有東西,然後調用默認的導入機制。
所以,我想是這樣的:
class MyLoader(object):
"""
Loader object
"""
def __init__(self):
self.loaded = set()
def find_module(self, module_name, package=None):
print("requesting %s" % module_name)
self.loaded.add(module_name)
return self
def load_module(self, fullname):
fp, pathname, stuff = imp.find_module(fullname)
imp.load_module(fullname, fp, pathname, stuff)
但是,試圖導入「隨機」我得到 從未來進口部 導入錯誤:沒有模塊名爲未來
我想這手段我錯過了一些東西.. 我還沒有找到任何使用imp來做一些導入反思的簡單例子,任何提示?
是肯定的,有中到底發生了什麼靜態分析不能很好地工作一個明確的說法。然而,Pylint的確做得相當不錯,但我認爲它的代碼非常繁重。 有關我使用導入器協議的嘗試,請參閱上面的內容。 –