为了规范代码,我们一般会集成静态代码检测工具,比如PMD、FindBugs、Checkstyle,那么Jenkins如何集成这些检查工具,并把检查结果放到构建邮件里呢?
今天做了调研和实现,过程如下
首先看,最终效果:
1.pom.xml
build。plugins 增加:
maven-assembly-plugin
package
single
${project.artifactId}-${project.version}
false
src/assembly/assembly-descriptor.xml
org.codehaus.mojo
findbugs-maven-plugin
3.0.5
High
Default
true
true
true
html
org.apache.maven.plugins
maven-pmd-plugin
3.8
reporting 增加:
org.apache.maven.plugins
maven-checkstyle-plugin
3.0.0
checkstyle
org.apache.maven.plugins
maven-pmd-plugin
true
utf-8
100
1.8
**/*Bean.java
**/generated/*.java
target/generated-sources/stubs
3.8
org.apache.maven.plugins
maven-jxr-plugin
2.5
org.apache.maven.plugins
maven-surefire-report-plugin
2.14.1
org.codehaus.mojo
cobertura-maven-plugin
2 jenkins设置
2.1 安装相关插件
直接搜索安装:
- Checkstyle Plug-in
- PMD Plug-in
- FindBugs Plug-in
- Static Analysis Collector Plug-in
邮件插件安装:
- Email Extension Plugin
- Email Extension Template Plugin
2.2 项目配置
maven构建Goals设置为:
pmd:pmd checkstyle:checkstyle findbugs:findbugs package -DskipTests
在构建设置里,勾上
- Publish Checkstyle analysis results
- Publish FindBugs analysis results
- Publish PMD analysis results
构建后操作,添加Publish combined static analysis results,默认设置即可。
2.3 邮件配置
首先在系统设置里,配置Extended E-mail Notification部分
设置:
- Default Subject : 自动构建通知:$PROJECT_NAME - Build # $BUILD_NUMBER - $BUILD_STATUS!
- Default Content: ${JELLY_SCRIPT, template="analysis.jelly"}
剩下的自己配置下SMTP和收件人。
这里邮件内容使用analysis.jelly,使用jelly script,系统没有这个模板,我们需要配置一下:
打开系统管理-Managed files,增加一个Extended Email Publisher Jelly Template
模板文件如下,该模板修改自官方的模板,做了一定的本地化和样式调整:
${project.name}
${project.name}构建成功 失败
基本信息
构建地址
${rooturl}${build.url}
项目:
${project.name}
构建时间:
${it.timestampString}
构建耗时:
${build.durationString}
构建原因:
${cause.shortDescription}
构建描述:
${build.description}
构建服务器:
${build.builtOnStr}
master
构建健康报告
W
Description
Score
${healthReport.description}
${healthReport.score}
代码变更记录
${cs.msgAnnotated}
by ${cs.author}
${spc}${p.editType.name}
${p.path}
无变更
构建产物
JUnit Tests
Package
Failed
Passed
Skipped
Total
${packageResult.getName()}
${packageResult.getFailCount()}
${packageResult.getPassCount()}
${packageResult.getSkipCount()}
${packageResult.getPassCount()+packageResult.getFailCount()+packageResult.getSkipCount()}
${failed_test.getFullName()}
代码静态检查结果
名称
检查结果
总数
High
Normal
Low
${action.displayName}
${action.result.numberOfAnnotations}
${action.result.getNumberOfAnnotations('HIGH')}
${action.result.getNumberOfAnnotations('NORMAL')}
${action.result.getNumberOfAnnotations('LOW')}
保存。
然后配置系统管理——Editable Email Notification Templates,增加一个默认模板,名称为默认,直接保存。
回到项目配置, 在构建环境里,
勾上Provide Configuration files
选择File为刚新增的jelly文件,target填写/var/jenkins_home/email-templates
Variable填写analysis.jelly
然后,在构建后操作里增加Editable Email Notification Templates,选择默认模板。
这样就完成了配置。
作者:Jadepeng
您的支持是对博主最大的鼓励,感谢您的认真阅读。
本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。