zoukankan      html  css  js  c++  java
  • 代码review:python代码review工具pylint安装使用

     

    1. 安装pylint

    使用pip install pylint安装。
    
    注意:安装完成之后确认pylint.exe在python安装目录下的Scripts目录下。
    
    如果没有,将pylint.exe所在的文件目录添加到path下即可使用pylint命令。

    2. 常用的命令行参数:

    --generate-rcfile :

    可以使用 pylint --generate-rcfile 来生成一个配置文件示例。可以使用重定向把这个配置文件保存下来用做以后使用。也可以在前面加上其它选项,使这些选项的值被包含在这个产生的配置文件里。如:pylint -- persistent=n --generate-rcfile > pylint.conf, 查看 pylint.conf,可以看到 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  > pylint.conf

    pylint --persistent=n --generate-rcfile > pylint.conf

    使用 Pylint 对一个模块 module.py 进行代码检查:

    1. 进入这个模块所在的文件夹,运行

    pylint [options] module.py

    (e.g. pylint --rcfile=pylint.conf 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. 代码自定义执行扫描

    # 定义要review的项目,或者需要review的模块
    review_projects = [r'D: est1', 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:...pylint_scan.txt', 'a', encoding='utf-8') as fp: fp.write(f'{project_name} : {score} ') #结果记录在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) and f1.endswith(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')
  • 相关阅读:
    【Python基础】04_Python中的if判断语句
    【Python基础】03_Python中的命名和关键字
    【Python基础】02_Python中变量的输入输出
    【Python基础】01_Python中的变量
    三、gridView增删改查
    二、MVC3+EF单表增删改查
    一、简单gridview列表展示
    oracle账户密码过期,修改为无限制
    提取年
    如何找到记录的子记录
  • 原文地址:https://www.cnblogs.com/bright-carol/p/13262066.html
Copyright © 2011-2022 走看看