pep8:Python代码风格检查工具
Python官网定义的代码风格 PEP 0008 – Style Guide for Python Code。
pep8是检测编码风格是否符合 PEP 0008 的工具。
安装pep8:
pip install pep8
升级pep8:
pip install --upgrade pep8
卸载pep8:
pip uninstall pep8
如果使用的是Ubuntu,还可以使用从apt仓库中安装:
$ sudo apt-get install pep8
使用示例
故意写几行不符合Python编码风格的代码(test.py):
import sys, os
from subprocess import Popen, PIPE
def long_function_name(
var_one, var_two, var_three,
var_four):
print(var_one)
检查是否符合编码规范:
$ pep8 --first test.py
test.py:1:11: E401 multiple imports on one line
test.py:4:1: E302 expected 2 blank lines, found 1
test.py:6:5: E125 continuation line with same indent as next logical line
1、4、6行代码不符合规范
你还可以输出不符合规范的代码和原因:
$ pep8 --show-source --show-pep8 test.py
更多选项,查看帮助信息:
$ pep8 -h
使用代码测试(CodeStyle.py):
import pep8
python_code_style_checker = pep8.Checker('test.py', show_source=True)
file_errors = python_code_style_checker.check_all()
print("Found %s errors (and warnings)" % file_errors)
参考:https://blog.csdn.net/lucyxu107/article/details/82626123
PyCharm 自动格式化 Python 代码
autopep8 是一个将 Python 代码自动排版为 PEP8 风格的工具,在 PyCharm 中直接格式化代码可以使用 autopep8。
一、autopep8 简介
使用 autopep8 前我们有必要先了解下 PEP 8 – Style Guide for Python Code
https://pypi.python.org/pypi/autopep8/
二、安装和使用 autopep8
autopep8 是一个开源的命令行工具,它能够将 Python 代码自动格式化为 PEP8 风格。autopep8 使用 pycodestyle 工具来决定代码中的哪部分需要被格式化,这能够修复大部分 pycodestyle 工具中报告的排版问题。autopep8 本身也是一个 Python 语言编写的工具,因此,我们可以直接使用 pip 进行安装:
pip install autopep8
我们来看一个完整的例子,本例中使用的代码如下:
import os, sys
def main():
print [item for item in os.listdir('.') if item.endswith('.py')];
print sys.version
if __name__ == '__main__':
main()
这段代码存在三个问题:
- 导入的时候,应该每一行只导入一个包;
- 包导入和函数定义之间应该空两行;
- Python 代码末尾不需要分号。
接下来,我们将使用 pycodestyple 检查这段代码,然后使用 autopep8 将代码格式化成符合 PEP 8 风格的代码。
使用 pycodestyle 检查代码可检测到代码中有三个地方不符合 PEP 8 规范,如下所示:
pycodestyle hello.py
hello.py:1:10: E401 multiple imports on one line
hello.py:3:1: E302 expected 2 blank lines, found 1
hello.py:4:69: E703 statement ends with a semicolon
使用 autopep8 格式能够转换 Python 代码。在这个例子中,autopep8 顺利地帮我们修复了所有问题,如下所示:
$ autopep8 hello.py
import os
import sys
def main():
print [item for item in os.listdir('.') if item.endswith('.py')]
print sys.version
if __name__ == '__main__':
main()
这个时候如果查看源文件的话,会发现还是和原来一样,并没有修正为符合 PEP 8 规范的代码。前面说过,不指定 –in-place 选项,只会将结果输出到命令行。如果我们使用 –in-place 选项,将不会有任何输出,autopep8 会直接修改源文件。
$ autopep8 --in-place hello.py
三、Pycharm 安装 autopep8
Pycharm 安装 autopep8
pip 安装 autopep8: pip install autopep8
PyCharm -> Preferences -> Tools -> Extends Tools -> 点击 + 加号
Name: autopep8
Tools settings:
Programs: autopep8
Parameters: --in-place --aggressive --aggressive $FilePath$
Working directory: $ProjectFileDir$
Advanced Options -> Output Filters: $FILE_PATH$\:$LINE$\:$COLUMN$\:.*
参考
参考:https://blog.csdn.net/simplehouse/article/details/90032248
sonarqube工具来测试代码风格
docker 安装sonarqube
docker run -e SONARQUBE_JDBC_USERNAME=root -e SONARQUBE_JDBC_PASSWORD=admin -e SONARQUBE_JDBC_URL='jdbc:mysql://192.168.11.127:30369/sonar?useUnicode=true&characterEncoding=utf8' -p 9000:9000 sonarqube:6.7.5
下载sonar-scanner 在项目文件夹下执行
sonar-scanner -Dsonar.projectKey=test -Dsonar.sources=. -Dsonar.host.url=http://127.0.0.1:9000 -Dsonar.login=6a14734cf871e3ed2d694bbb71dc8fd0b9193d8b
其中Dsonar.host.url为服务端地址,Dsonar.login为登录生成的token,这样就能在客户端检查代码,将结果发送到服务端了