Sonarscanner 命令突然失败
Sonarscanner command is failing abruptly
我们正在使用 gitlab 管道,其中 Sonarscanner 用于扫描代码。代码库是 .NET,所有单元测试用例连同代码库构建和执行都很好。
最近在集成 sonarqube 后,它突然失败并出现以下错误。
命令是:
- dotnet sonarscanner end -d:sonar.login="$SONAR_TOKEN"
ERROR: Error during SonarScanner execution
java.nio.file.InvalidPathException: Malformed input or input contains
unmappable characters: c???out at
java.base/sun.nio.fs.UnixPath.encode(UnixPath.java:145) at
java.base/sun.nio.fs.UnixPath.(UnixPath.java:69) at
java.base/sun.nio.fs.UnixFileSystem.getPath(UnixFileSystem.java:279)
at java.base/java.nio.file.Path.resolve(Path.java:515) at
org.sonar.scm.git.IncludedFilesRepository.indexFiles(IncludedFilesRepository.java:65)
at
org.sonar.scm.git.IncludedFilesRepository.(IncludedFilesRepository.java:40)
at org.sonar.scm.git.GitIgnoreCommand.init(GitIgnoreCommand.java:37)
at
org.sonar.scanner.scan.filesystem.ProjectFileIndexer.index(ProjectFileIndexer.java:104)
at
org.sonar.scanner.scan.ProjectScanContainer.doAfterStart(ProjectScanContainer.java:352)
at
org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:137)
at
org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:123)
at
org.sonar.scanner.bootstrap.GlobalContainer.doAfterStart(GlobalContainer.java:149)
at
org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:137)
at
org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:123)
at org.sonar.batch.bootstrapper.Batch.doExecute(Batch.java:72) at
org.sonar.batch.bootstrapper.Batch.execute(Batch.java:66) at
org.sonarsource.scanner.api.internal.batch.BatchIsolatedLauncher.execute(BatchIsolatedLauncher.java:46)
at
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native
Method) at
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at
java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566) at
org.sonarsource.scanner.api.internal.IsolatedLauncherProxy.invoke(IsolatedLauncherProxy.java:60)
at com.sun.proxy.$Proxy0.execute(Unknown Source) at
org.sonarsource.scanner.api.EmbeddedScanner.doExecute(EmbeddedScanner.java:189)
at
org.sonarsource.scanner.api.EmbeddedScanner.execute(EmbeddedScanner.java:138)
at org.sonarsource.scanner.cli.Main.execute(Main.java:112) at
org.sonarsource.scanner.cli.Main.execute(Main.java:75) at
org.sonarsource.scanner.cli.Main.main(Main.java:61)
错误:
SonarQube Scanner did not complete successfully
实际上,直到几天前,一切都运行良好。 SonarQube 也没有改变任何东西。
无法理解问题出在哪里。
没有sonarqube,一切正常。
有人可以建议吗?
您是否向代码库添加了文件名或内容中包含特殊字符的文件?
也可能是编码问题。确保启动 sonarscanner 的编码也与文件的编码相同。
不幸的是,我不知道如何在 dotnet 中定义它。在 Java/Maven 中,您可以在 pom.xml
中使用以下 属性 进行设置
<properties>
<sonar.sourceEncoding>Cp1252</sonar.sourceEncoding>
</properties>
编码可能以某种方式改变了。因此,您可以在构建解决方案时添加 d:sonar.sourceEncoding=UTF-8
进行编码。完整命令为:
- dotnet sonarscanner end -d:sonar.login="$SONAR_TOKEN" -d:sonar.sourceEncoding=UTF-8
此外,Git还有一个设置编码的选项:
env:
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
SONAR_HOST_URL: ${{ secrets.SONAR_HOST_URL }}
LANG: en_US.UTF-8 # solution for unmappable characters in file path
LC_ALL: en_US.UTF-8
我们正在使用 gitlab 管道,其中 Sonarscanner 用于扫描代码。代码库是 .NET,所有单元测试用例连同代码库构建和执行都很好。
最近在集成 sonarqube 后,它突然失败并出现以下错误。 命令是:
- dotnet sonarscanner end -d:sonar.login="$SONAR_TOKEN"
ERROR: Error during SonarScanner execution java.nio.file.InvalidPathException: Malformed input or input contains unmappable characters: c???out at
java.base/sun.nio.fs.UnixPath.encode(UnixPath.java:145) at java.base/sun.nio.fs.UnixPath.(UnixPath.java:69) at java.base/sun.nio.fs.UnixFileSystem.getPath(UnixFileSystem.java:279) at java.base/java.nio.file.Path.resolve(Path.java:515) at org.sonar.scm.git.IncludedFilesRepository.indexFiles(IncludedFilesRepository.java:65) at org.sonar.scm.git.IncludedFilesRepository.(IncludedFilesRepository.java:40) at org.sonar.scm.git.GitIgnoreCommand.init(GitIgnoreCommand.java:37) at org.sonar.scanner.scan.filesystem.ProjectFileIndexer.index(ProjectFileIndexer.java:104) at org.sonar.scanner.scan.ProjectScanContainer.doAfterStart(ProjectScanContainer.java:352) at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:137) at org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:123) at org.sonar.scanner.bootstrap.GlobalContainer.doAfterStart(GlobalContainer.java:149) at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:137) at org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:123) at org.sonar.batch.bootstrapper.Batch.doExecute(Batch.java:72) at org.sonar.batch.bootstrapper.Batch.execute(Batch.java:66) at org.sonarsource.scanner.api.internal.batch.BatchIsolatedLauncher.execute(BatchIsolatedLauncher.java:46) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:566) at org.sonarsource.scanner.api.internal.IsolatedLauncherProxy.invoke(IsolatedLauncherProxy.java:60) at com.sun.proxy.$Proxy0.execute(Unknown Source) at org.sonarsource.scanner.api.EmbeddedScanner.doExecute(EmbeddedScanner.java:189) at org.sonarsource.scanner.api.EmbeddedScanner.execute(EmbeddedScanner.java:138) at org.sonarsource.scanner.cli.Main.execute(Main.java:112) at org.sonarsource.scanner.cli.Main.execute(Main.java:75) at org.sonarsource.scanner.cli.Main.main(Main.java:61)
错误:
SonarQube Scanner did not complete successfully
实际上,直到几天前,一切都运行良好。 SonarQube 也没有改变任何东西。 无法理解问题出在哪里。
没有sonarqube,一切正常。 有人可以建议吗?
您是否向代码库添加了文件名或内容中包含特殊字符的文件?
也可能是编码问题。确保启动 sonarscanner 的编码也与文件的编码相同。
不幸的是,我不知道如何在 dotnet 中定义它。在 Java/Maven 中,您可以在 pom.xml
中使用以下 属性 进行设置<properties>
<sonar.sourceEncoding>Cp1252</sonar.sourceEncoding>
</properties>
编码可能以某种方式改变了。因此,您可以在构建解决方案时添加 d:sonar.sourceEncoding=UTF-8
进行编码。完整命令为:
- dotnet sonarscanner end -d:sonar.login="$SONAR_TOKEN" -d:sonar.sourceEncoding=UTF-8
此外,Git还有一个设置编码的选项:
env:
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
SONAR_HOST_URL: ${{ secrets.SONAR_HOST_URL }}
LANG: en_US.UTF-8 # solution for unmappable characters in file path
LC_ALL: en_US.UTF-8