SonarQube 扫描仪失败并出现“不在 git 工作树内”错误

Posted

技术标签:

【中文标题】SonarQube 扫描仪失败并出现“不在 git 工作树内”错误【英文标题】:SonarQube Scanner fails with “Not inside a git worktree” error 【发布时间】:2020-10-13 14:51:36 【问题描述】:

我正在使用 Travis CI 在 C# 项目上运行 SonarQube 扫描仪。我已经设法让扫描仪工作了一次,但它在下一次提交时没有明显原因就失败了(提交更新了README.md)。

我尝试清除构建缓存,但没有成功。我也读过其他编程语言(主要是 Java)的问题,但到目前为止还没有运气。

错误日志

具体错误是:

Not inside a Git work tree: /home/travis/build/presque-fini

完整的错误日志如下:

34.72s$ mono ./scanner/SonarScanner.MSBuild.exe end -d:sonar.login="tkoen"
SonarScanner for MSBuild 4.9
Using the .NET Framework version of the Scanner for MSBuild
Post-processing started.
WARNING: The following projects do not have a valid ProjectGuid and were not built using a valid solution (.sln) thus will be skipped from analysis...
/home/travis/build/presque-fini/nez/Nez.Portable/Nez.csproj
WARNING: File '/usr/lib/mono/xbuild/MonoGame/v3.0/Assemblies/DesktopGL/x86/SDL2.dll' is not located under the root directory '/home/travis/build/presque-fini' and will not be analyzed.
WARNING: File '/usr/lib/mono/xbuild/MonoGame/v3.0/Assemblies/DesktopGL/x64/SDL2.dll' is not located under the root directory '/home/travis/build/presque-fini' and will not be analyzed.
WARNING: File '/usr/lib/mono/xbuild/MonoGame/v3.0/Assemblies/DesktopGL/x86/soft_oal.dll' is not located under the root directory '/home/travis/build/presque-fini' and will not be analyzed.
WARNING: File '/usr/lib/mono/xbuild/MonoGame/v3.0/Assemblies/DesktopGL/x64/soft_oal.dll' is not located under the root directory '/home/travis/build/presque-fini' and will not be analyzed.
WARNING: File '/usr/lib/mono/xbuild/MonoGame/v3.0/Assemblies/DesktopGL/x86/libSDL2-2.0.so.0' is not located under the root directory '/home/travis/build/presque-fini' and will not be analyzed.
WARNING: File '/usr/lib/mono/xbuild/MonoGame/v3.0/Assemblies/DesktopGL/x64/libSDL2-2.0.so.0' is not located under the root directory '/home/travis/build/presque-fini' and will not be analyzed.
WARNING: File '/usr/lib/mono/xbuild/MonoGame/v3.0/Assemblies/DesktopGL/x86/libopenal.so.1' is not located under the root directory '/home/travis/build/presque-fini' and will not be analyzed.
WARNING: File '/usr/lib/mono/xbuild/MonoGame/v3.0/Assemblies/DesktopGL/x64/libopenal.so.1' is not located under the root directory '/home/travis/build/presque-fini' and will not be analyzed.
WARNING: File '/usr/lib/mono/xbuild/MonoGame/v3.0/Assemblies/DesktopGL/libSDL2-2.0.0.dylib' is not located under the root directory '/home/travis/build/presque-fini' and will not be analyzed.
WARNING: File '/usr/lib/mono/xbuild/MonoGame/v3.0/Assemblies/DesktopGL/libopenal.1.dylib' is not located under the root directory '/home/travis/build/presque-fini' and will not be analyzed.
WARNING: File '/usr/lib/mono/xbuild/MonoGame/v3.0/Assemblies/DesktopGL/MonoGame.Framework.dll.config' is not located under the root directory '/home/travis/build/presque-fini' and will not be analyzed.
The SONAR_SCANNER_HOME environment variable is not required and will be ignored.
Calling the SonarQube Scanner...
INFO: Scanner configuration file: /home/travis/build/presque-fini/presque-game/scanner/sonar-scanner-4.3.0.2102/conf/sonar-scanner.properties
INFO: Project root configuration file: /home/travis/build/presque-fini/presque-game/.sonarqube/out/sonar-project.properties
INFO: SonarScanner 4.3.0.2102
INFO: Java 11.0.2 Oracle Corporation (64-bit)
INFO: Linux 4.15.0-1028-gcp amd64
INFO: User cache: /home/travis/.sonar/cache
INFO: Scanner configuration file: /home/travis/build/presque-fini/presque-game/scanner/sonar-scanner-4.3.0.2102/conf/sonar-scanner.properties
INFO: Project root configuration file: /home/travis/build/presque-fini/presque-game/.sonarqube/out/sonar-project.properties
INFO: Analyzing on SonarCloud
INFO: Default locale: "en_US", source code encoding: "UTF-8" (analysis is platform dependent)
INFO: Load global settings
INFO: Load global settings (done) | time=706ms
INFO: Server id: 1BD809FA-AWHW8ct9-T_TB3XqouNu
INFO: User cache: /home/travis/.sonar/cache
INFO: Load/download plugins
INFO: Load plugins index
INFO: Load plugins index (done) | time=165ms
INFO: Load/download plugins (done) | time=22322ms
INFO: Loaded core extensions: developer-scanner
INFO: Process project properties
INFO: Execute project builders
INFO: Execute project builders (done) | time=49ms
INFO: Project key: presque-fini_presque-game
INFO: Base dir: /home/travis/build/presque-fini
INFO: Working dir: /home/travis/build/presque-fini/presque-game/.sonarqube/out/.sonar
INFO: Load project settings for component key: 'presque-fini_presque-game'
INFO: Load project settings for component key: 'presque-fini_presque-game' (done) | time=227ms
INFO: Found an active CI vendor: 'TravisCI'
INFO: Load project branches
INFO: Load project branches (done) | time=136ms
INFO: Check ALM binding of project 'presque-fini_presque-game'
INFO: Detected project binding: BOUND
INFO: Check ALM binding of project 'presque-fini_presque-game' (done) | time=122ms
INFO: Load project pull requests
INFO: Load project pull requests (done) | time=141ms
INFO: Load branch configuration
INFO: Load branch configuration (done) | time=4ms
INFO: Load quality profiles
INFO: Load quality profiles (done) | time=156ms
INFO: Load active rules
INFO: Load active rules (done) | time=3676ms
INFO: Organization key: presque-fini
INFO: Indexing files...
INFO: Project configuration:
INFO: ------------------------------------------------------------------------
INFO: EXECUTION FAILURE
INFO: ------------------------------------------------------------------------
INFO: Total time: 33.193s
INFO: Final Memory: 7M/27M
INFO: ------------------------------------------------------------------------
ERROR: Error during SonarScanner execution
ERROR: Not inside a Git work tree: /home/travis/build/presque-fini
ERROR: 
The SonarQube Scanner did not complete successfully
13:29:46.773  Post-processing failed. Exit code: 1
The command "mono ./scanner/SonarScanner.MSBuild.exe end -d:sonar.login="token"" exited with 1.

系统配置

CI:Travis(您可以在此处浏览完整版本:https://travis-ci.com/github/presque-fini/presque-game/builds/172666297) 操作系统:Ubuntu 16.04.6 LTS Git 2.21.0 使用的版本:sonar-scanner-msbuild-4.9.0.17385-net46 扫描仪命令:mono ./scanner/SonarScanner.MSBuild.exe end -d:sonar.login="token" 项目托管在 Github (https://github.com/presque-fini/presque-game)

【问题讨论】:

本期链接:***.com/questions/49257285/… 【参考方案1】:

有什么问题?

问题是由于 Travis 克隆您的项目时,它会将其克隆到以 repo 名称命名的子目录中(在您的情况下为presque-game)。这将为您提供以下结构:

organization-name/repo-name

当您启动分析时,默认情况下它会在 organization-name 文件夹中启动,而不是在 repo-name 子文件夹中启动。因为organization-name 不是git repo,所以Sonarcloud 失败了。

我该如何解决?

要解决这个问题,需要设置分析属性sonar.projectBaseDir

-d:sonar.projectBaseDir="repo-name/"

这会给你这个完整的命令(路径是绝对的,只是为了确定,但我猜相对路径也可以):

mono ./scanner/SonarScanner.MSBuild.exe begin -k:"presque-fini_presque-game" -o:"presque-fini" -d:sonar.login="token" -d:sonar.projectBaseDir="/home/travis/build/presque-fini/presque-game/"

参考资料:

SonarCloud docs, Alternate analysis section:

如果要分析的文件不在分析开始的目录中,请使用 sonar.projectBaseDir 属性将分析移动到不同的目录。

SonarQube 社区问题:SonarQube Scanner fails with “Not inside a git worktree” error

【讨论】:

以上是关于SonarQube 扫描仪失败并出现“不在 git 工作树内”错误的主要内容,如果未能解决你的问题,请参考以下文章

激活FXCop规则时,SonarQube扫描仪在内部部署TFS上失败

sonarqube scaner docker 扫描失败的原因及解决方案

.NET Core 3.1 项目的 SonarQube 分析失败

代理商背后的Jenkins SonarQube扫描仪

SonarQube 从 6.4 升级到 6.5 会破坏扫描仪

SonarQube MSBuild 集成失败: