Sonarqube:缺少以下文件的责任信息

2022-09-01 02:12:24

我在SonarQube的分析过程中收到了警告。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责备信息?


答案 1

原因是一个JGit错误。JGit 不支持 .gitattributes。我有身份在我的.普通的控制台检查了源代码,应用在宏上,但后来JGit忽略了这一点,并看到了一个没有提交的差异,实际上没有一个。.gitattributesgitident$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$

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

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

答案 2

我在Sonar升级后停止工作的构建中遇到了此问题。

对我来说,问题在于 Jenkins 作业配置为在从 git 拉取时执行浅层克隆。这并没有拉入足够的历史,因此Sonar 5.6.6无法进行分析,因为指责信息不包括在浅层副本中。我在运行Sonar时使用-X选项来查看它窒息的实际提交编号。

我是我的情况,我只是取消选中浅复制复选框和BAM,它再次工作(尽管速度更慢)!enter image description here


推荐