Missing blame information for the following filesSonarQube在分析过程中收到警告。
Missing blame information for the following files
[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信息?
原因是JGit错误。JGit不支持.gitattributes。我有ident我的.gitattributes。平原控制台git签出的来源,适用ident于$Id$宏,但随后JGit忽略了,看到没被提交的,那里居然没有一个差异。
.gitattributes
ident
git
$Id$
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