pylint+jenkins打造代码检查平台

首先说明一下代码检查的重要性,python是一门静态语言,有很多检查工具(pylint、flake8等)都可以很好的检查代码. 平时我们大多数都是以插件的形式集成到编辑器(如Sublime、Visual Studio Code等).

比如我们有如下代码:

# -*- encoding: utf-8 -*-
import datetime
def get_now():
date = datetime.datetime.now()
return date

随着不同的人改动,可能会变成这样:

# -*- encoding: utf-8 -*-
import datetime
from datetime import datetime
def get_now():
date = datetime.datetime.now()
return date

 

能看出有什么问题吗, 让我们使用pylint执行一下看看:

C: 11, 0: Trailing newlines (trailing-newlines)
C:  1, 0: Missing module docstring (missing-docstring)
C:  8, 0: Missing function docstring (missing-docstring)
E:  9,11: Class 'datetime' has no 'datetime' member (no-member)

显示错误:类datetime没有datetime属性,这是一个在实际代码发现的问题, 由于后来的人增加的from datetime import datetime覆盖了import datetime. 这些错误很隐蔽, 直接很难发现。

pylint代码检查

下面介绍一下pylint检查代码的两种方式:

命令行

❖手动安装检查需要的库

❖pylint + 模块名或包名进行检查

❖从控制台看检查结果

jenkins

jenkins插件Violations支持pylint、jslint等结果的显示。

❖创建jenkins job

❖配置job:

设置Subversion

设置Credentials(svn登陆账号密码)

❖编写构建脚本

❖设置Report Violations

❖设置一些邮件通知相关

❖构建,查看代码检查结果

由于我使用的代码仓库是svn,git的话也类似.

如果有很多项目需要进行代码检查, 就可以看到上面两种方式的局限性了:

❖新增一个项目进行检查步骤多,容易出错

❖没有一个直观的视图了解多个项目健康状况

基于上面种种不便, 为了将代码检查系统化, 下面检查基于jenkins+pylint的一个代码检查平台。

代码平台

首页

上图显示的是两个项目代码质量的情况, 以eyes为例说明:

❖告警数188: pylint告警有188个

❖文件数47: 有47个文件有告警

❖中间的乌云表示代码告警数大于设置的阀值, 说明当前项目处于不健康状态

详细

点击详细进入

这里可以看到具体项目代码质量的一个趋势图以及趋势差异表格. 点击代码趋势可以跳转到jenkins上展示的详细信息。

代码告警详细

在这里可以点开每一个文件,进行告警修复。

新增一个待检查的项目

我这里检查的代码分支是svn,所以只需要填写一个svn信息即可. 超过告警阀值的话会进行邮件通知。

总结

这个代码检查平台是将代码检查系统化, 让代码检查更简单. 主要用到的技术如下:

❖jenkins api 相关

❖CoPilot

❖django

❖django_q

Spread the word. Share this post!

Meet The Author

Leave Comment