Sonarqube&x201C;权限不足”;-怀疑编码问题

Sonarqube&x201C;权限不足”;-怀疑编码问题,sonarqube,sonarqube5.1,Sonarqube,Sonarqube5.1,Sonar从4.5版升级到5.1.1版后,现在很多工作都失败了。但一些项目得到了成功的分析 这些帖子的问题似乎是一样的& 但是这不是凭证错误,因为我的一些项目已成功分析 当问题发生时,我在Jenkins侧(Sonar runner日志)上有以下信息: [INFO] BUILD FAILURE [INFO] ------------------------------------------------------------------------ [INFO] Total time: 2:26

Sonar从4.5版升级到5.1.1版后,现在很多工作都失败了。但一些项目得到了成功的分析

这些帖子的问题似乎是一样的&

但是这不是凭证错误,因为我的一些项目已成功分析

当问题发生时,我在Jenkins侧(Sonar runner日志)上有以下信息:

[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 2:26.443s
[INFO] Finished at: Fri Aug 07 10:35:46 CEST 2015
[INFO] Final Memory: 54M/765M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.codehaus.mojo:sonar-maven-plugin:2.6:sonar (default-cli) on project XXXX: Fail to decorate 'org.sonar.api.resources.File@23e88d14[key=src/main/webapp/js/XXXXXXX/XXXXjs,path=src/main/webapp/js/XXXX/XXXX/XXXX.js,filename=XXXXX.js,language=JavaScript]': Insufficient privileges -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.codehaus.mojo:sonar-maven-plugin:2.6:sonar (default-cli) on project Opale: Fail to decorate 'org.sonar.api.resources.File@23e88d14[key=src/main/webapp/js/XXXX/XXXXX/XXXXX.js,path=src/main/webapp/js/XXXX/XXXX/XXXX.js,filename=XXXX.js,language=JavaScript]'
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:217)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:161)
    at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:320)
    at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156)
    at org.apache.maven.cli.MavenCli.execute(MavenCli.java:537)
    at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:196)
    at org.apache.maven.cli.MavenCli.main(MavenCli.java:141)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:601)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:290)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:230)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:409)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:352)
Caused by: org.apache.maven.plugin.MojoExecutionException: Fail to decorate 'org.sonar.api.resources.File@23e88d14[key=src/main/webapp/js/etiquetage/compositionTsf/DetailCompositionTsfController.js,path=src/main/webapp/js/etiquetage/compositionTsf/DetailCompositionTsfController.js,filename=DetailCompositionTsfController.js,language=JavaScript]'
    at org.codehaus.mojo.sonar.bootstrap.ExceptionHandling.handle(ExceptionHandling.java:41)
    at org.codehaus.mojo.sonar.bootstrap.RunnerBootstraper.execute(RunnerBootstraper.java:139)
    at org.codehaus.mojo.sonar.SonarMojo.execute(SonarMojo.java:132)
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:101)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209)
    ... 19 more
Caused by: org.sonar.api.utils.SonarException: Fail to decorate 'org.sonar.api.resources.File@23e88d14[key=src/main/webapp/js/etiquetage/compositionTsf/DetailCompositionTsfController.js,path=src/main/webapp/js/etiquetage/compositionTsf/DetailCompositionTsfController.js,filename=DetailCompositionTsfController.js,language=JavaScript]'
    at org.sonar.batch.phases.DecoratorsExecutor.executeDecorator(DecoratorsExecutor.java:104)
    at org.sonar.batch.phases.DecoratorsExecutor.decorateResource(DecoratorsExecutor.java:87)
    at org.sonar.batch.phases.DecoratorsExecutor.decorateResource(DecoratorsExecutor.java:79)
    at org.sonar.batch.phases.DecoratorsExecutor.decorateResource(DecoratorsExecutor.java:79)
    at org.sonar.batch.phases.DecoratorsExecutor.execute(DecoratorsExecutor.java:71)
    at org.sonar.batch.phases.DatabaseModePhaseExecutor.execute(DatabaseModePhaseExecutor.java:127)
    at org.sonar.batch.scan.ModuleScanContainer.doAfterStart(ModuleScanContainer.java:264)
    at org.sonar.api.platform.ComponentContainer.startComponents(ComponentContainer.java:92)
    at org.sonar.api.platform.ComponentContainer.execute(ComponentContainer.java:77)
    at org.sonar.batch.scan.ProjectScanContainer.scan(ProjectScanContainer.java:235)
    at org.sonar.batch.scan.ProjectScanContainer.scanRecursively(ProjectScanContainer.java:230)
    at org.sonar.batch.scan.ProjectScanContainer.scanRecursively(ProjectScanContainer.java:228)
    at org.sonar.batch.scan.ProjectScanContainer.doAfterStart(ProjectScanContainer.java:220)
    at org.sonar.api.platform.ComponentContainer.startComponents(ComponentContainer.java:92)
    at org.sonar.api.platform.ComponentContainer.execute(ComponentContainer.java:77)
    at org.sonar.batch.scan.ScanTask.scan(ScanTask.java:57)
    at org.sonar.batch.scan.ScanTask.execute(ScanTask.java:45)
    at org.sonar.batch.bootstrap.TaskContainer.doAfterStart(TaskContainer.java:135)
    at org.sonar.api.platform.ComponentContainer.startComponents(ComponentContainer.java:92)
    at org.sonar.api.platform.ComponentContainer.execute(ComponentContainer.java:77)
    at org.sonar.batch.bootstrap.GlobalContainer.executeTask(GlobalContainer.java:158)
    at org.sonar.batch.bootstrapper.Batch.executeTask(Batch.java:95)
    at org.sonar.batch.bootstrapper.Batch.execute(Batch.java:67)
    at org.sonar.runner.batch.IsolatedLauncher.execute(IsolatedLauncher.java:48)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:601)
    at org.sonar.runner.impl.BatchLauncher$1.delegateExecution(BatchLauncher.java:87)
    at org.sonar.runner.impl.BatchLauncher$1.run(BatchLauncher.java:75)
    at java.security.AccessController.doPrivileged(Native Method)
    at org.sonar.runner.impl.BatchLauncher.doExecute(BatchLauncher.java:69)
    at org.sonar.runner.impl.BatchLauncher.execute(BatchLauncher.java:50)
    at org.sonar.runner.api.EmbeddedRunner.doExecute(EmbeddedRunner.java:102)
    at org.sonar.runner.api.Runner.execute(Runner.java:100)
    at org.codehaus.mojo.sonar.bootstrap.RunnerBootstraper.execute(RunnerBootstraper.java:135)
    ... 22 more
Caused by: java.lang.IllegalStateException: Insufficient privileges
    at org.sonar.batch.bootstrap.ServerClient.handleHttpException(ServerClient.java:137)
    at org.sonar.batch.bootstrap.ServerClient.request(ServerClient.java:107)
    at org.sonar.batch.bootstrap.ServerClient.request(ServerClient.java:99)
    at org.sonar.batch.bootstrap.ServerClient.request(ServerClient.java:87)
    at org.sonar.batch.issue.tracking.DefaultServerLineHashesLoader.loadHashesFromWs(DefaultServerLineHashesLoader.java:47)
    at org.sonar.batch.issue.tracking.DefaultServerLineHashesLoader.getLineHashes(DefaultServerLineHashesLoader.java:38)
    at org.sonar.batch.issue.tracking.SourceHashHolder.initHashes(SourceHashHolder.java:52)
    at org.sonar.batch.issue.tracking.SourceHashHolder.getHashedSource(SourceHashHolder.java:65)
    at org.sonar.batch.issue.tracking.IssueTracking.setChecksumOnNewIssues(IssueTracking.java:66)
    at org.sonar.batch.issue.tracking.IssueTracking.track(IssueTracking.java:51)
    at org.sonar.batch.issue.tracking.IssueTrackingDecorator.doDecorate(IssueTrackingDecorator.java:139)
    at org.sonar.batch.issue.tracking.IssueTrackingDecorator.decorate(IssueTrackingDecorator.java:113)
    at org.sonar.batch.phases.DecoratorsExecutor.executeDecorator(DecoratorsExecutor.java:96)
    ... 57 more
[ERROR] 
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException
Sonar analysis completed: FAILURE
Build step 'Sonar' changed build result to FAILURE
Build step 'Sonar' marked build as failure
当我检查SonarQube的访问日志时,我发现:

127.0.0.1 - - [07/Aug/2015:03:38:14 +0200] "GET /sonar/api/sources/hash?key=XXX.YYY%3AZZZZZ%3Asrc%2Fmain%2Fwebapp%2Fjs%2FXXXX%2FXXXX%2FXXXXXX.js HTTP/1.0" 403 46 "-" "SonarQube Maven/3.0.5"
我们看到服务器返回403错误。然后,sonarrunner在其日志中打印身份验证问题是正常的

然而,当我将源代码与成功构建的项目进行比较时,我发现它们包含UTF-8源代码,没有重音字符

然后我在源文件中添加了一个重音字符,分析失败了


我怀疑包含重音符号的源文件的哈希方法有问题。

403错误是授权错误

此WS返回所请求文件行的哈希值,您需要对该文件拥有源代码权限才能获得响应(即对该文件所属项目的源代码权限)。文件内容与授权无关

如果您获得403,则表示您对该文件所属的项目没有正确的权限。检查您的配置

在这种情况下,我能想象的唯一可能涉及编码的场景是:

  • 密钥中有重音字符(因此,在模块密钥或文件路径和文件名中)
  • 如果编码或解码不正确,则此密钥与另一个文件和项目的密钥相匹配,而不是您期望的密钥,并且您对其没有正确的权限
  • 这意味着您拥有名称几乎相同的模块
  • 我一开始几乎看不出你怎么会陷入这样的境地

    • 403错误是授权错误

      此WS返回所请求文件行的哈希值,您需要对该文件拥有源代码权限才能获得响应(即对该文件所属项目的源代码权限)。文件内容与授权无关

      如果您获得403,则表示您对该文件所属的项目没有正确的权限。检查您的配置

      在这种情况下,我能想象的唯一可能涉及编码的场景是:

      • 密钥中有重音字符(因此,在模块密钥或文件路径和文件名中)
      • 如果编码或解码不正确,则此密钥与另一个文件和项目的密钥相匹配,而不是您期望的密钥,并且您对其没有正确的权限
      • 这意味着您拥有名称几乎相同的模块
      • 我一开始几乎看不出你怎么会陷入这样的境地

      您没有包括sonar.log中的任何日志(服务器端的日志)。你没有在那里找到相关的东西吗?你可以增加日志级别并将其添加到你的帖子中。我怀疑源文件内容的编码在这里是否重要。但是,文件名(显示在URL中)可能是。你看到一个模式了吗?“你没有从sonar.log(服务器端的日志)中包含任何日志。你没有发现任何相关的日志吗?你可以提高日志级别并将其添加到你的帖子中。”-->没有,此日志文件中没有任何内容。“我怀疑源文件内容的编码在这里是否重要。但是,文件名(显示在URL中)可能是。您是否看到其中的模式?”-->警告:我的所有项目的编码都是相同的:UTF-8。当源文件中至少有一个重音符号必须修饰时,我怀疑哈希方法会失败。您没有包括sonar.log中的任何日志(服务器端的日志)。你没有在那里找到相关的东西吗?你可以增加日志级别并将其添加到你的帖子中。我怀疑源文件内容的编码在这里是否重要。但是,文件名(显示在URL中)可能是。你看到一个模式了吗?“你没有从sonar.log(服务器端的日志)中包含任何日志。你没有发现任何相关的日志吗?你可以提高日志级别并将其添加到你的帖子中。”-->没有,此日志文件中没有任何内容。“我怀疑源文件内容的编码在这里是否重要。但是,文件名(显示在URL中)可能是。您是否看到其中的模式?”-->警告:我的所有项目的编码都是相同的:UTF-8。当源文件中至少有一个重音符号必须修饰时,我怀疑哈希方法会失败。密钥中没有重音符号。我检查了权限,声纳用户有权:相同的结果。我重试了这个测试:我接受了一个已经成功分析的项目,我更改了一个源文件以添加一个“é”字符,现在分析失败了(同样的错误)。我已经更改了源文件以删除“é”字符,现在分析正常。可能是sonarrunner的问题?因为在成功分析项目的“/sonar/api/sources/hash?key=“endpoint”上没有登录访问权限。服务器端问题确实很不常见。为了获得sonnar runner方面问题的帮助,我建议您编辑您的问题,并提供sonar runner的版本、示例复制源文件、SQ实例上安装的插件列表和版本,以及sonar runner在成功和失败案例中的日志。不是我的专业领域,其他人可能会帮助你。这把钥匙上没有重音符号。我检查了权限,声纳用户有权:相同的结果。我重试了这个测试:我接受了一个已经成功分析的项目,我更改了一个源文件以添加一个“é”字符,现在分析失败了(同样的错误)。我已经更改了源文件以删除“é”字符,现在分析正常。可能是sonarrunner的问题