git - Sonar 5.0 SCM 插件无法归咎于 git 子模块中的源导致分析失败

标签 git version-control sonarqube

我的 C++ 项目在子模块中包含源代码库,并且正在使用 Sonar 商业 C++ 插件。我想分析所有的来源。

父项目需要访问子模块中的一些头文件(和编译的库),因此通过使用子模块,我可以很容易地固定(并因此编译)正确的库版本。

例如 ./main.c 包含#include sub/someinclude.h

其中 sub 是包含 git 子模块的目录

在启用 SCM 的情况下使用 Sonar 进行分析时,我得到:

INFO: -----------------------------------------------------------------------
INFO: EXECUTION FAILURE
INFO: -----------------------------------------------------------------------
Total time: 2:17.478s
Final Memory: 27M/617M
INFO: -----------------------------------------------------------------------
ERROR: Error during Sonar runner execution
ERROR: Unable to execute Sonar
ERROR: Caused by: Unable to blame file sub/someinclude.h. No blame info at line 1. Is file commited?

Sonar 似乎未能执行 git blame ,可能是因为它试图引用 projectBaseDir 而不是当前文件目录,并且 someinclude.h 不在父 git 存储库中。

我已经尝试了几个放置在父模块和子模块甚至外部的多项目 Sonar 属性文件配置,但找不到一个有效的。

这看起来像是一个正常的用例,所以任何人都可以提出解决方案或者这是一个需要修复的错误/限制吗?

最佳答案

我刚刚遇到了同样的问题;没有任何 blame 信息,因为文件可能未被跟踪。

如果您运行“git status”,sub/someinclude.h 是否未提交?要么提交它,要么尝试将它添加到 .gitignore。就我而言,我只是提交了文件,Sonarqube 就开始工作了。

关于git - Sonar 5.0 SCM 插件无法归咎于 git 子模块中的源导致分析失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28388784/

相关文章:

git - 暂存除一个文件夹以外的所有文件夹

git - 如何在不妨碍我的团队的情况下重命名根项目文件夹?

iphone - 在为 iPhone 开发时,我应该使用 Git 还是 Subversion?

sonarqube - 如何配置SonarQube让我们提高覆盖率?

java - Sonarqube 的 UndocumentedApi 变得毫无用处?

java - 如何解决 Sonar 问题 "Remove this call to "等待“或将其移至 "while"循环”?

GitLab CI 构建失败,无法识别 git

git - 关于多个发布行和 git-flow 的建议,适用于 git 非专家

c# - TFS 2010 : Check out file on open

version-control - 如何获取在 CVS 存储库中创建的标签列表?