参考: GitHub - om-prakash-sharma/sonar-scan-incremental-analysis: scripts to automatically run sonar scanner for last committed files.
1.sonarqube 增量扫描
原理解析:
- 首先通过git 找到本次提交新增的文件
- 使用 sonar.exclusions / sonar.coverage.exclusions 将所有文件排除
- 通过sonar.inclusions参数 将新增文件传递给 sonarqube
- 即可实现sonarqube的增量扫描了
#!/bin/bash
CHANGED_FILES=""
for FILE_NAME in `git diff --name-only HEAD HEAD~1`;
do
CHANGED_FILES+="${FILE_NAME},"
done
if [ $CHANGED_FILES ];
then
sonar-scanner \
-Dsonar.projectKey=front_scan \
-Dsonar.host.url=http://xxxx:9000 \
-Dsonar.login=xxxx \
-Dsonar.projectVersion=3.0 \
-Dsonar.source=. \
-Dsonar.exclusions=.vscode/** \
-Dsonar.coverage.exclusions=**/*.* \
-Dsonar.inclusions=${CHANGED_FILES}
else
echo "No need to run sonar scanner."
fi
2.eslint 增量扫描
原理解析:
- 首先通过find将所有文件追加到 .eslintignore 中
- 然后通过git将本次提交的新文件从 .eslintignore 中删除
- 即可实现eslint的增量扫描了
#!/bin/bash
find . -type f | cut -c3-1000000000 > .eslintignore
for FILE_NAME in `git diff --name-only HEAD HEAD~1`;do
cat .eslintignore > .eslintignore.tmp
grep -v $FILE_NAME .eslintignore.tmp > .eslintignore
rm -f .eslintignore.tmp
done
eslint .
3.checkstyle 增量扫描
checkstyle 做增量扫描原理则更加简单
- 只需要将更新的文件检出
- 然后将所有文件并到一行, 以空格分隔开即可
java -jar checkstyle-9.3-all.jar -c checkstyle.xml a.java b.java -f xml -o report.xml
版权声明:本文为weixin_42236449原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。