maven findbugs扫描并仅保留高优先级扫描结果
maven findbugs扫描并仅保留高优先级扫描结果。
我们希望将findbugs 扫描的结果联合到一个扫描结果文件,并过滤掉我们不想关注的问题类型, 并发送邮件报告给相应的人员。
- 1.第一步拉取代码
- 2.获取到最后一提交人的邮箱地址
- 3.编译代码和findbugs扫描(指定过滤器)
- 4.得到结果并合并
- 5.转换输出报告的格式未html
执行的linux shell主脚本如下, 代码经过了删减,如要使用请修改下。
projects='你工程目录'
git='定义git的命令'
mvn='定义mvn的命令'
cd ${WORKDIR}/${projects}
${git} add -A
$git reset --hard
$git fetch
$git pull
$git checkout $branch
$git pull
#获取到最后一次提交人的邮箱地址
lastCommitor=$git log --shortstat -n 1 | sed -n 's/.*<\(.*\)>/\1/p'
#export [email protected]
ls
if [ -e pom.xml ]
then
#maven build
#删除之前的findbugs报告
rm -f ${WORKDIR}/findBugs*.html
$mvn clean install
#指定了includefilterfile, 这里定义了仅扫描的内容。
$mvn findbugs:findbugs -Dfindbugs.includeFilterFile=${WORKDIR}/../shells/includeFilter.xml
echo "$mvn findbugs:findbugs -Dfindbugs.includeFilterFile=${WORKDIR}/../shells/includeFilter.xml"
#这里需要union findbugs的结果,是因为一个工程下面有多个子工程,每个子工程都会扫描出一个findbugs 扫描结果,这样我们把结果集合到一起。
find ${WORKDIR}/$projects/ -iname "findbugsXml.xml" | xargs unionBugs -output ${WORKDIR}/ibg_$project/unionBugs.xml
#修改报告中的一些内容。(比如添加一些分支名称等)
sed -i "s/projectName=\".*\"/projectName=\"$project branch:${branch}\"/" ${WORKDIR}/ibg_$project/unionBugs.xml
#转换报告的格式
convertXmlToText -longBugCodes -applySuppression -html:plain.xsl ${WORKDIR}/$project/unionBugs.xml ${WORKDIR}/findBugs.html
fi
下面我们看一下 includeFilter.xml 是如何定义的。
我们讲仅匹配我们的过滤器的扫描结果输出, 例如如下仅需要优先级为 1 的 (高优先级 high priority的) 和 bug类型是style 和 bad_practice 的类型的问题输出到我们的扫描结果。
此篇文章已被阅读1562 次