一尘不染

Sonarqube:以下文件缺少归咎信息

jenkins

Missing blame information for the following filesSonarQube在分析过程中收到警告。

[INFO] [22:19:57.714] Sensor SCM Sensor
[INFO] [22:19:57.715] SCM provider for this project is: git
[INFO] [22:19:57.715] 48 files to be analyzed
[INFO] [22:19:58.448] 0/48 files analyzed
[WARN] [22:19:58.448] Missing blame information for the following files:
(snip 48 lines)
[WARN] [22:19:58.449] This may lead to missing/broken features in SonarQube
[INFO] [22:19:58.449] Sensor SCM Sensor (done) | time=735ms

我正在使用SonarQube 5.5,分析是由Maven在Jenkins作业中的一个多模块Java项目上完成的。安装了Git插件1.2。

在任何有问题的文件上的bash shell中手动运行git blame,都可以得到预期的输出。

我发现的所有相关问题都与SVN有关,而我的问题与Git有关。

我如何在Sonarqube上获得git blame信息?


阅读 2161

收藏
2020-07-25

共1个答案

一尘不染

原因是JGit错误。JGit不支持.gitattributes。我有ident我的.gitattributes。平原控制台git签出的来源,适用ident$Id$宏,但随后JGit忽略了,看到没被提交的,那里居然没有一个差异。

SonarQube邮件列表上的友好人员帮助了我,并建议使用独立的JGit命令行分发进行调试:

chmod +x /where/is/org.eclipse.jgit.pgm-<version>-r.sh
/where/is/org.eclipse.jgit.pgm-<version>-r.sh blame -w /path/to/offending/file

这个特定的JGit错误5年没有解决,我也不希望很快解决,因此我$Id$从所有来源中删除了这些宏。

这是我用来删除所有$Id$宏的(Bash)代码:

find */src -name "*.java" | xargs -n 1 sed -i '/$Id.*$/d'
find */src -name "*.java" | xargs git add
git commit -m "Remove $Id$ macros"
git push
2020-07-25