【问题标题】:Sonarscanner command is failing abruptlySonarscanner 命令突然失败
【发布时间】:2021-11-27 15:43:35
【问题描述】:

我们正在使用 gitlab 管道,Sonarscanner 用于扫描代码。代码库是 .NET,所有单元测试用例以及代码库都可以正常构建和执行。

最近在集成 sonarqube 后,它突然失败并出现以下错误。 命令是:

 - dotnet sonarscanner end -d:sonar.login="$SONAR_TOKEN"

错误:SonarScanner 执行期间出错 java.nio.file.InvalidPathException:格式错误的输入或输入包含 不可映射的字符:c???out at

java.base/sun.nio.fs.UnixPath.encode(UnixPath.java:145) 在 java.base/sun.nio.fs.UnixPath.(UnixPath.java:69) 在 java.base/sun.nio.fs.UnixFileSystem.getPath(UnixFileSystem.java:279) 在 java.base/java.nio.file.Path.resolve(Path.java:515) 在 org.sonar.scm.git.IncludedFilesRepository.indexFiles(IncludedFilesRepository.java:65) 在 org.sonar.scm.git.IncludedFilesRepository.(IncludedFilesRepository.java:40) 在 org.sonar.scm.git.GitIgnoreCommand.init(GitIgnoreCommand.java:37) 在 org.sonar.scanner.scan.filesystem.ProjectFileIndexer.index(ProjectFileIndexer.java:104) 在 org.sonar.scanner.scan.ProjectScanContainer.doAfterStart(ProjectScanContainer.java:352) 在 org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:137) 在 org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:123) 在 org.sonar.scanner.bootstrap.GlobalContainer.doAfterStart(GlobalContainer.java:149) 在 org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:137) 在 org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:123) 在 org.sonar.batch.bootstrapper.Batch.doExecute(Batch.java:72) 在 org.sonar.batch.bootstrapper.Batch.execute(Batch.java:66) 在 org.sonarsource.scanner.api.internal.batch.BatchIsolatedLauncher.execute(BatchIsolatedLauncher.java:46) 在 java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native 方法)在 java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 在 java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.base/java.lang.reflect.Method.invoke(Method.java:566) 在 org.sonarsource.scanner.api.internal.IsolatedLauncherProxy.invoke(IsolatedLauncherProxy.java:60) 在 com.sun.proxy.$Proxy0.execute(未知来源) org.sonarsource.scanner.api.EmbeddedScanner.doExecute(EmbeddedScanner.java:189) 在 org.sonarsource.scanner.api.EmbeddedScanner.execute(EmbeddedScanner.java:138) 在 org.sonarsource.scanner.cli.Main.execute(Main.java:112) 在 org.sonarsource.scanner.cli.Main.execute(Main.java:75) 在 org.sonarsource.scanner.cli.Main.main(Main.java:61)

错误:

SonarQube 扫描仪未成功完成

实际上,直到几天,一切正常。 SonarQube 也没有改变任何东西。 无法理解问题出在哪里。

没有 sonarqube,一切正常。 有人可以建议吗?

【问题讨论】:

    标签: .net msbuild sonarqube sonarscanner


    【解决方案1】:

    您是否在代码库中添加了文件名或内容中有特殊字符的文件?

    也可能是编码问题。确保启动 sonarscanner 时使用的编码也与文件的编码相同。

    不幸的是,我不知道如何在 dotnet 中定义它。在 Java/Maven 中,您可以在 pom.xml 中使用以下属性进行设置

    <properties>
        <sonar.sourceEncoding>Cp1252</sonar.sourceEncoding>
    </properties>
    

    【讨论】:

    • 是的,这是正确的。错误地,我添加了几个具有特殊字符的文件
    【解决方案2】:

    编码可能会以某种方式更改。因此,您可以在构建解决方案时添加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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-17
      • 1970-01-01
      • 1970-01-01
      • 2020-12-23
      • 2020-06-25
      • 2011-09-19
      • 1970-01-01
      相关资源
      最近更新 更多