Python代码检测(可配合Sonar使用)

检测python

首先安装搭建python的开发环境,方法见相应文档

python的单元测试

nose

  • nose 是python自带框架unttest的扩展,使测试更简单高效;
  • 安装方式也是pip install python-nose python3-nose python-nose2 python3-nose2
  • 同上coverage,安装后无法验证。

检测python测试的覆盖率

coverage

  • coverage是一个python覆盖率插件

  • 安装方式

sudo pip install coverage      #安装coverage,注意一定记得加sudo,网上大多教程没有加sudo深受其害(不加sudo安装会提示coverage无此命令)。安装方式根据你使用的pip或pip3
coverage --version             #验证安装
coverage run xx/xx_test.py             #运行指定文件
coverage xml xx/xx.py                  #生成xml报告,生成前必须先运行coverage run才行
  • 使用说明
run      – 运行Python程序并收集执行数据。
report   – 报告覆盖率结果。
html     – 生成带注释的HTML清单和覆盖率结果。
xml      – 生成包含覆盖率结果的XML报告。
annotate – 用覆盖率结果注释源文件。
erase    – 删除以前收集的覆盖率数据。
combine  – 将一些数据文件组合在一起。
debug    – 获取诊断信息。
  • 分析python web项目的代码覆盖率
参考https://segmentfault.com/a/1190000003805741
coverage检测pythonWeb项目
  • pythonWeb正常启停命令
sudo python xxx/main.py --port=8888 --logging=none > /dev/null 2>&1 &
ps auxf|grep xxx/main.py |grep -v grep |awk '{print $2}'|sort -r| sudo xargs kill
Ctrl+c    #效果等同于上一条kill命令
  • coverage启停命令
sudo coverage run --parallel-mode --branch --include="yyy/*" xxx/main.py --port=8888 --logging=none > /dev/null 2>&1 &
ps auxf|grep xxx/main |grep -v grep |awk '{print $2}'|sort -r|sudo xargs kill -2
Ctrl+c    #效果等同于上一条kill -2命令

coverage启动命令参数

--parallel-mode:使Coverage监测被测代码子进程的覆盖率,如果被测代码是多进程的,必须使用此参数;
--branch:统计分支代码覆盖率,加上这个参数可使统计更精确,具体区别参见文档:http://coverage.readthedocs.org/en/latest/branch.html;
--include: 限定要统计代码的路径,如果不限定,Coverage会把请求涉及到的所有代码,包括系统库和Tornado框架的代码都分析一遍,会大大拉低代码覆盖率;
  • coverage结果收集
pythonWeb服务停止后,会生成.coverage.xxx的文件,每个.coverage.xxx文件代表一个子进程的覆盖率,文件名格式为.coverage.<机器名>.<进程号>.<随机数>。
coverage combine    #合并结果,执行后所有的.coverage.xxx会合并为一个.coverage文件(即正常执行时产生的文件)
coverage report     #生成report
coverage html       #生成html报告
coverage xml        #生成xml报告
coverage erase      #删除.coverage文件,保证不会影响下次统计

检测python语言源码中静态错误

Pylint

  • Pylint是一个python代码分析工具,它分析python代码中的错误,查找不符合代码风格标准和潜在问题的代码。

  • 安装使用


sudo pip3 install pylint   #pyhon3安装
sudo pip install pylint    #python2安装
pylint --version      #验证安装

pylint --persistent=n --generate-rcfile > pylint.conf   #创建默认配置文件

pylint --rcfile=pylint.conf xx/xxx.py         #根据配置文件执行分析(所有配置均写在配置文件中,也可以在执行时写相应配置[具体见pylint --help],执行时写入的配置会覆盖配置文件中的配置)
  • 配置文件中简单修改(可根据个人需要自由配置)
persistent=yes
reports=yes
  • 将配置文件pylint.conf改名为".pylintrc",再执行分析时就不再需要指定配置文件了
pylint xx/xxx.py #即可完成分析
  • 生成报告文件(python2与python3不同)
files-output=yes  # python2:配置文件中加入该配置即可
pylint xx/xxx.py > xxxx.txt #python3安装的pylint中不再支持files-output配置,所以只能在运行命令时指定
  • 检测分析
(C)惯例。违反了编码风格标准
(R)重构。写的非常糟糕的代码
(W)警告。某些python特定的问题
(E)错误。很可能是代码中的错误
(F)致命错误。阻止pylint近一步运行的错误
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值