我正在尝试为每个模块及其子模块查找所有缺少的导入语句和错误.
是否有专门的工具来处理我正在尝试做的事情?
我写的代码,但看起来真的很糟糕,也许这样的东西已经存在了?:
导入操作系统def find_missing_imports(步行):对于步行项目:d = 项目[0]f_list = 项目[1]对于 f_list 中的 f:模块 = f[:-3]#posix_pathmodule_path = d.lstrip('.').replace('/','.').lstrip('.')尝试:__import__(module_path, fromlist=[module])除了 IndentationError,e:#打印(f,e)经过除了 NameError,e:打印(d,f,e)经过除了例外,e:打印(f,e)经过walk = [[root,files] for root,dirs,files in os.walk('.') for fn in files if fn.endswith('.py')]find_missing_imports(步行)
输出:
.[snip]('./Sky_Group_Inventory_Scanner-wxpython/display_image/Dialogs', 'ImageSelectionFrame.py', NameError("name 'wx' is not defined",))('./Sky_Group_Inventory_Scanner-wxpython/display_image/Dialogs', 'ItemSpecificsDialog.py', NameError("name 'wx' is not defined",))('./Sky_Group_Inventory_Scanner-wxpython/display_image/Dialogs', 'ReturnCorrectWatchTitle.py', NameError("name 'wx' is not defined",)).[剪辑]
我在重构之前的项目是一团糟但有点用处,现在它在重构之后就坏了.
根据我在 codereview 上的最初帖子中的建议阅读实用程序员"后:
任何关于填写缺失术语的帮助,或者关于我什至要求的任何帮助都会很棒.
pylint -E/path/to/module
pip install pylint
将 pylint 指向有问题的文件夹/模块:
pylint/path/to/module >pylint_output
/path/to/module
是您有兴趣查看的 python 模块的位置.
例如:
我的项目|____ 模块A|____ __init__.py|____ A.py|____ 模块B|____ __init__.py|____ B.py
./my_project/moduleA
./my_project/moduleB
这将创建一个包含全局评估的文件:
有趣且对我的问题的直接回答是,在 pylint 结果中会有具有这种布局的行:
************** 模块 module_name.sub_module.class_name.method_nameR:line_no,列:问题描述some_name"(问题类型)C:line_no,column:问题描述'some_name'(问题类型)W:line_no,列:问题描述some_name"(问题类型)E: line_no, column: 问题描述'some_name'(问题类型)F:line_no,column:问题描述'some_name'(问题类型)************* 模块 module_name.sub_module.class_name.method_nameR:line_no,列:问题描述some_name"(问题类型)C:line_no,column:问题描述'some_name'(问题类型)W:line_no,列:问题描述some_name"(问题类型)E: line_no, column: 问题描述'some_name'(问题类型)F:line_no,column:问题描述'some_name'(问题类型)
因此,在我的大多数情况下,问题类型(未定义变量)表示尚未导入的模块.pylint -E/path/to/module
将只返回未定义变量的错误.
I am trying to find all missing import statements and errors for each module and its sub modules.
Is there a dedicated tool for what I am trying to do?
The code that I wrote, but seems really terrible and maybe something like this exists already?:
import os
def find_missing_imports(walk):
for items in walk:
d = items[0]
f_list = items[1]
for f in f_list:
module = f[:-3]
# posix_path
module_path = d.lstrip('.').replace('/','.').lstrip('.')
try:
__import__(module_path, fromlist=[module])
except IndentationError, e:
#print(f,e)
pass
except NameError, e:
print(d,f,e)
pass
except Exception, e:
print(f,e)
pass
walk = [[root,files] for root,dirs,files in os.walk('.') for fn in files if fn.endswith('.py')]
find_missing_imports(walk)
Outputs:
.[snip]
('./Sky_Group_Inventory_Scanner-wxpython/display_image/Dialogs', 'ImageSelectionFrame.py', NameError("name 'wx' is not defined",))
('./Sky_Group_Inventory_Scanner-wxpython/display_image/Dialogs', 'ItemSpecificsDialog.py', NameError("name 'wx' is not defined",))
('./Sky_Group_Inventory_Scanner-wxpython/display_image/Dialogs', 'ReturnCorrectWatchTitle.py', NameError("name 'wx' is not defined",))
.[snip]
My project before refactoring was a mess but sort of useful, now its broken after refactoring.
After reading 'The Pragmatic Programmer' based on suggestions from my initial post on codereview:
I have been digging around in the source code of:
/usr/local/lib/python2.7/dist-packages/rope
Documentation for ROPE seems a little sparse. I have also been using Ninja-IDE, but haven't been able to find a solution for the problem that I am facing.
Overall I think I missed the boat on what refactoring is all about.
The current parent directory layout can be seen here.
In comparison to what it was before.
Any help, on filling in missing terminology, or on what I am even asking would be great.
pylint -E /path/to/module
pip install pylint
Point pylint to the folder/module in question:
pylint /path/to/module > pylint_output
Where /path/to/module
is the location of the python module you're interested in looking at.
For example:
my_project
|____ moduleA
|____ __init__.py
|____ A.py
|____ moduleB
|____ __init__.py
|____ B.py
./my_project/moduleA
./my_project/moduleB
This will create a file with Global Evaluations on:
Of interest and the direct answer to my question is that within the pylint results there will be lines that have this sort of layout:
************* Module module_name.sub_module.class_name.method_name
R: line_no, column: Issue description 'some_name' (issue-type)
C: line_no, column: Issue description 'some_name' (issue-type)
W: line_no, column: Issue description 'some_name' (issue-type)
E: line_no, column: Issue description 'some_name' (issue-type)
F: line_no, column: Issue description 'some_name' (issue-type)
************* Module module_name.sub_module.class_name.method_name
R: line_no, column: Issue description 'some_name' (issue-type)
C: line_no, column: Issue description 'some_name' (issue-type)
W: line_no, column: Issue description 'some_name' (issue-type)
E: line_no, column: Issue description 'some_name' (issue-type)
F: line_no, column: Issue description 'some_name' (issue-type)
So an issue-type of (undefined-variable) in most of my cases indicate modules that have not been imported. pylint -E /path/to/module
will return only the undefined-variable errors.
这篇关于Python Rope:如何在所有子模块重构中查找所有缺失的导入和错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!