代码review:python代码review⼯具pylint安装使⽤
1. 安装pylint
使⽤pip install pylint安装。
注意:安装完成之后确认在python安装⽬录下的\Scripts⽬录下。
如果没有,将所在的⽂件⽬录添加到path下即可使⽤pylint命令。
2. 常⽤的命令⾏参数:
--generate-rcfile :
可以使⽤ pylint --generate-rcfile 来⽣成⼀个配置⽂件⽰例。可以使⽤重定向把这个配置⽂件保存下来⽤做以后使⽤。也可以在前⾯加上其它选项,使这些选项的值被包含在这个产⽣的配置⽂件⾥。如:pylint -- persistent=n --generate-rcfile > f,查看 f,可以看到 persistent=no,⽽不再是其默认值 yes。
--rcfile=<file> :
指定⼀个配置⽂件。把使⽤的配置放在配置⽂件中,这样不仅规范了⾃⼰代码,也可以⽅便地和别⼈共享这些规范。
-i <y_or_n>, --include-ids=<y_or_n> :
在输出中包含 message 的 id, 然后通过 pylint --help-msg=<msg-id>来查看这个错误的详细信息,这样可以具体地定位错误。
-r <y_or_n>, --reports=<y_or_n> :
默认是 y, 表⽰ Pylint 的输出中除了包含源代码分析部分,也包含报告部分。
--files-output=<y_or_n> :
将每个 module /package 的 message 输出到⼀个以 pylint_module/package. [txt|html] 命名的⽂件中,如果有 report 的话,输出到名为 pylint_global.[txt|html] 的⽂件中。默认是输出到屏幕上不输出到⽂件⾥。
-f <format>, --output-format=<format> :
设置输出格式。可以选择的格式有 text, parseable, colorized, msvs (visual studio) 和 html, 默认的输出格式是 text。
--disable-msg= <msg ids> :
禁⽌指定 id 的 message. ⽐如说输出中包含了 W0402 这个 warning 的 message, 如果不希望它在输出中出现,可以使⽤ --disable-msg= W0402
3. 命令⾏使⽤pylint
⽣成配置⽂件:
pylint --generate-rcfile > f
pylint --persistent=n --generate-rcfile > f
使⽤ Pylint 对⼀个模块 module.py 进⾏代码检查:
1. 进⼊这个模块所在的⽂件夹,运⾏
pylint [options] module.py
(e.g. pylint --f module.py)
这种调⽤⽅式是⼀直可以⼯作的,因为当前的⼯作⽬录会被⾃动加⼊ Python 的路径中。
2. 不进⼊模块所在的⽂件夹,运⾏
pylint [options] directory/module.py
这种调⽤⽅式当如下条件满⾜的时候是可以⼯作的:directory 是个 Python 包 ( ⽐如包含⼀个 __init__.py ⽂件 ),或者 directory 被加⼊了 Python 的搜索路径中。
使⽤ Pylint 对⼀个包 pakage 进⾏代码检查:
1. 进⼊这个包所在⽂件夹,运⾏
pylint [options] pakage
这种调⽤⽅式是⼀直可以⼯作的,因为当前的⼯作⽬录会被⾃动加⼊ Python 的路径中。
2. 不进⼊包所在的⽂件夹,运⾏
pylint [options] directory/ pakage
这种情况下当如下条件满⾜的时候是可以⼯作的:directory 被加⼊了 Python 的路径中。⽐如在 Linux 上,export
PYTHONPATH=$PYTHONPATH: directory。
此外,对于安装了 tkinter 包的机器,可以使⽤命令 pylint-gui打开⼀个简单的 GUI 界⾯,在这⾥输⼊模块或者包的名字 ( 规则同命令⾏ ),点击 Run,Pylint 的输出会在 GUI 中显⽰。
4. 在pycharm⾥配置pylint
安装后在pycharm⾥配置:File - Settings - External Tools 点击+号增加名为pylint的⼯具
配置信息如下:
--output-format=parseable
--disable=R
-rn
--msg-template="{abspath}:{line}: [{msg_id}({symbol}), {obj}] {msg}"
$DirPath$
$DirPath$ --要review的代码所在⽬录,⽬录中必须包含__init__.py⽂件5. 代码⾃定义执⾏扫描
python默认安装路径# 定义要review的项⽬,或者需要review的模块
review_projects = [r'D:\test1', r'test2']
# 遍历执⾏review扫描,并将结果记录在制定的⽂件⾥
for project in review_projects:
results = Run(['--output-format=parseable',
'-rn',
'--disable=C0103,C0301,C0330,C0326,C0304,C0412,C0411,W0703',
'--msg-template="{abspath}:{line}: [{msg_id}({symbol}), {obj}] {msg}"',
project], exit=False,)
project_name = project.split("\\")[-1] # 获取执⾏扫描的模块或包名
score = round(results.linter.stats["global_note"],2) # 获取扫描结果分数并保留2位⼩数
with open(r'D:\...\', 'a', encoding='utf-8') as fp:
fp.write(f'{project_name} : {score}\n') #结果记录在txt⽂本中
# print(i.split('\\')[-1], ' ', results.linter.stats['global_note'])
为了扫描的准确性,将所有含有py⽂件的⽬录下批量添加了__init__.py """
此处是为了将所有py⽂件所在⽬录增加__init__.py
已存在的不⽤添加。并将添加的位置打印出来。
"""
import os
global a
def search_file(path, text):
"""
遍历执⾏每个⽂件查是否存在py⽂件,并将没有__init__.py的⽂件夹下增加此⽂件。 :param path: 查的根⽬录
:param text: 以text结尾的⽂件
:return:
"""
try:
files = os.listdir(path)
for f in files:
f1 = os.path.join(path, f)
if os.path.isdir(f1):
# print(f1)
search_file(f1, text)
elif os.path.isfile(f1) dswith(text):
# os.path.splitext(f1)[1] == text and
# 到py⽂件
parent_dir = f1.split(os.path.basename(f1))[0]
f2 = os.listdir(parent_dir)
if '__init__.py' in f2:
print("No need to add for file: " + f1)
continue
else:
with open(os.path.join(parent_dir, '__init__.py'), 'w', encoding='utf-8') as init_f: init_f.write("")
print("add file" + str(os.path.join(parent_dir, '__init__.py')))
except Exception as ex:
print(u'⽂件查询失败' + str(ex))
search_file('.', '.py')
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论