/python-code-check

实现一个基于jenkins + pylint的代码检查工具.

Primary LanguageHTMLMIT LicenseMIT

python-code-check

实现一个基于jenkins + Pylint的代码检查工具. 主要有如下特点:

  • jenkins代码检查上包装了一层, 简化了一些繁琐操作(创建credentials、配置job),使的接入代码检查很简单.
  • 存储jenkins每一次代码检查结果,可以更好地分析代码质量,推动代码改进.
  • 代码告警通知, 及时发现代码问题. ​

总之,一切是为了改进代码质量.

使用简介

首页

会显示当前最新的检查结果. 中间的天气图标表示这代码的健康程度,是根据设置的告警阀值来显示的.点击详细: 点击代码趋势这一块会跳转到jenkins对每个文件检查的详细信息: 然后就可以根据pylint的检查结果进行代码改进.

创建一个待检查的任务

创建一个待检查的任务特别简单, 点击新建按钮. 说一下各个字段含义:

字段名 含义
svn jenkins上任务源码管理里配置的代码分支
username svn账号
password svn密码
任务名 jenkins job名称
通知 接受代码告警的人列表
告警阀值 当代码告警数超过阀值就会邮件告警

创建好后,也可以点击任务名进行编辑.

Jenkins设置

使用docker方式启动一个jenkins, 或者手动下载.

镜像构建

  • cd jenkins&&docker build -t jenkins:pylint .
  • docker run -d --name myjenkins -p 8080:8080 -p 50000:50000 -v /var/jenkins_home:/var/jenkins_home jenkins:pylint

插件

国内网络慢,可以手动安装将各个插件拷贝到/var/jenkins_home/plugins,然后再界面上安装.

  • Credentials Plugin
  • Violations plugin
  • Subversion Plug-in

其他设置:

  • Configure Global Security-->CSRF Protection取消打钩
  • Configure Global Security--> 访问控制-->授权策略-->登录用户可以做任何事--> Allow anonymouse read access

**注意: 如果安装的一些pip包依赖于操作系统,可以现在jenkins上安装. **

接入检查项目设置

检查时需要有代码引用包的环境,所以需要在项目根目录(界面上svn填写地址对应的目录)增加一个requirements.txtpylint.cfg文件.

其中pylint.cfg里需要修改一下init-hook=这句为:

init-hook= 'import sys; sys.path.append("/var/lib/jenkins/workspace/job_name")'

pylint.cfg使用pylint --generate-rcfile > pylint.cfg生成

代码部署

修改docker-compose.ymlenvironment:

  • DB_HOST=10.5.2.5

  • DB_PORT=33066

  • DB_NAME=pylinter

  • DB_USER=root

  • DB_PASSWORD=!@#$ESZAQ

  • DEFAULT_FROM_EMAIL = '528194763@qq.com'

  • EMAIL_HOST = 'smtp.qq.com'

  • EMAIL_PORT = 587

  • EMAIL_HOST_USER = '528194763'

  • EMAIL_HOST_PASSWORD = 'vfyaasivgfjgbigc'

  • JENKINS_URL=http://10.5.2.5:8080

  • JENKINS_USER=admin

  • JENKINS_TOKEN=b81bba48120b4441d8af54b485f690b9

修改front\src\components\views\Dashboard.vuefront\src\components\views\job.vue 里url指向服务器地址

根据实际去修改对应的变量.

执行命令

docker-compose build && docker-compose up 

创建定时任务

docker exec -it pythoncodecheck_web_1 python manage.py init_data

说明

web界面现在未提供删除功能,可以创建一个django管理员账号,登陆到admin页面就行删除操作.