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

Ame*_*sse 20 java git maven jenkins sonarqube

Missing blame information for the following files在SonarQube的分析过程中收到了警告.

[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
Run Code Online (Sandbox Code Playgroud)

我正在使用SonarQube 5.5,分析由Maven在Jenkins工作中完成,在多模块Java项目上完成.安装了Git插件1.2.

在bash shell中,在任何有问题的文件上手动运行git blame,都会给出预期的输出.

我发现的相关问题都与SVN有关,我的问题在于Git.

我怎样才能获得关于Sonarqube的git blame信息?

Ame*_*sse 13

原因是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
Run Code Online (Sandbox Code Playgroud)

这个特殊的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
Run Code Online (Sandbox Code Playgroud)


neo*_*ibe 6

我在声纳升级后停止工作的构建遇到了这个问题。

我的问题是Jenkins 作业被配置为在从 git 拉取时执行浅克隆。这并没有引入足够的历史记录,因此 Sonar 5.6.6 无法进行分析,因为浅拷贝中未包含指责信息。我在运行 Sonar 时使用了-X选项来查看它阻塞的实际提交数。

我就是我的情况,我只是取消选中浅复制复选框和 BAM,它又工作了(虽然更慢)! 在此处输入图片说明

  • 如果它导致相同的警告,它如何无关? (7认同)

Joh*_*yer 5

我有一个类似的问题:我的项目中的一个文件是在构建过程中创建的,并且没有存储在源代码管理中。就我而言,它是api.json.

在 Team City 的 SonarQube runner 构建步骤中,我将此文件添加到附加参数中的排除项中

-Dsonar.exclusions=**/spec/api.json
Run Code Online (Sandbox Code Playgroud)

并且错误消失了。

  • 同样,我的 DevOps 构建过程会自动修改现有版本文件以添加特定于该构建的信息。然后,SonarQubeAnalyze 会警告丢失的责备信息,直到我按照您的建议将此文件添加到“sonar.exclusions”中。 (2认同)