使用Jenkins构建步骤Invoke Standalone Sonar Analysis(可通过Sonar插件获得),您可以在作业概述中获得SonarQube仪表板的这个很好的链接:
.
由于存在问题,我没有使用此构建步骤,而是使用调用的构建步骤gradle sonarRunner:

这是我build.gradle配置声纳的一部分:
sonarRunner {
sonarProperties {
property "sonar.projectKey", projectId
property "sonar.projectName", projectName
// Address of SonarQube server
property "sonar.host.url", "http://localhost:9000"
// Database config
property "sonar.jdbc.url", "jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true"
property "sonar.jdbc.driverClassName", "com.mysql.jdbc.Driver"
property "sonar.jdbc.username", "root"
property "sonar.jdbc.password", "superSecret"
}
}
Run Code Online (Sandbox Code Playgroud)
这很有效:就像Invoke Standalone Sonar Analysis构建步骤一样,我可以浏览SonarQube的结果http://localhost:9000/dashboard/index/jutilsId.
不幸的是,通过这种方式,SonarsQube仪表板的链接已经从Jenkins的工作概述中消失了.
这篇博客文章描述了如何实现我想要的但似乎已经过时,因为我在SonarQube的配置中找不到任何选项Check if this project is NOT built with maven 2.
有什么方法可以使用此链接并使用gradle sonarRunner吗?
我的系统: …
我有一个sonar-project.properties文件,它指定了sonar-runner如何检查文件夹结构,要检查的文件,要忽略的文件等.
我无法成功确定如何成功排除多个路径.
这是sonar-project.properties文件:
sonar.projectKey=C3S-web
sonar.projectName=C3S-sonar-web
sonar.projectVersion=0.0.1
sonar.sources=.
sonar.tests=test
sonar.language=js
sonar.profile=Sonar way
sonar.exclusions=test/*, node_modules/*
sonar.dynamicAnalysis=reuseReports
sonar.javascript.jstest.reportsPath=coverage
sonar.javascript.lcov.reportPath=coverage/lcov-report
Run Code Online (Sandbox Code Playgroud)
我遇到麻烦的是:
sonar.exclusions
Run Code Online (Sandbox Code Playgroud)
列出多个路径不起作用,有或没有逗号,或者在引号中.
我已经阅读了关于 stackoverflow 的几篇文章,其中说声纳作为预提交分析工具的使用效率低下,因为它必须运行整个项目的编译,运行其分析等。
但是,sonarqube 的手册声明有一个sonar.inclusions属性用于设置要运行分析的文件列表。因此,我正在考虑对已更改/修改的文件作为预提交挂钩进行分析,并在添加太多问题时提交失败。
据我了解,可以通过svnlook获取修改和添加文件的列表;还可以将声纳分析器指向具体的.properties文件(例如,该文件指向仅具有编码规则和圈复杂度以及 LCOM4 指标的配置)。
但是,我无法理解如何在预提交钩子脚本中获取声纳分析的结果,并提供分析结果的链接。有可能吗?是否有任何真实世界的或至少与此类实践相关的示例?
提前致谢。
我正在尝试使用现有的gradle项目设置Sonar-Runner.我使用的是Sonar-Runner 2.4 Gradle 2.2.1,我们的Sonar服务器是4.3.1.当我运行gradle sonarRunner时,我收到以下错误:
无法解析配置':sonarRunner'的所有依赖项.无法解析外部依赖关系org.codehaus.sonar.runner:sonar-runner-dist:2.4因为没有定义存储库.
我在我的build.gradle文件中设置的nexus服务器中有工件"org.codehaus.sonar.runner:sonar-runner-dist:2.4".有没有人对这个错误有任何直觉?我已经广泛搜索了它,现在已经坚持了几个小时.
我的声纳跑步者的build.gradle非常简单:
apply plugin: 'sonar-runner"
sonarRunner{
toolVersion = '2.4'
sonarProperties{
property "sonar.host.url", "$sonarHost"
}
}
Run Code Online (Sandbox Code Playgroud) 我使用SonarQube 5.3版,我正试图用Jenkins进行设置.我使用了本教程:使用SonarQube Scanner for Jenkins进行分析.
但这些是我得到的错误消息:
ERROR: Error during Sonar runner execution
org.sonar.runner.impl.RunnerException: Unable to execute Sonar
at org.sonar.runner.impl.BatchLauncher$1.delegateExecution(BatchLauncher.java:91)
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.sonar.runner.Main.executeTask(Main.java:70)
at org.sonar.runner.Main.execute(Main.java:59)
at org.sonar.runner.Main.main(Main.java:53)
Caused by: java.lang.IllegalStateException: Unable to load component class org.sonar.batch.bootstrap.BatchPluginInstaller
at org.sonar.core.platform.ComponentContainer$ExtendedDefaultPicoContainer.getComponent(ComponentContainer.java:62)
at org.picocontainer.DefaultPicoContainer.getComponent(DefaultPicoContainer.java:632)
at org.picocontainer.parameters.BasicComponentParameter$1.resolveInstance(BasicComponentParameter.java:118)
at org.picocontainer.parameters.ComponentParameter$1.resolveInstance(ComponentParameter.java:136)
at org.picocontainer.injectors.SingleMemberInjector.getParameter(SingleMemberInjector.java:78)
at org.picocontainer.injectors.ConstructorInjector$CtorAndAdapters.getParameterArguments(ConstructorInjector.java:309)
at org.picocontainer.injectors.ConstructorInjector$1.run(ConstructorInjector.java:335)
at org.picocontainer.injectors.AbstractInjector$ThreadLocalCyclicDependencyGuard.observe(AbstractInjector.java:270)
at org.picocontainer.injectors.ConstructorInjector.getComponentInstance(ConstructorInjector.java:364)
at org.picocontainer.injectors.AbstractInjectionFactory$LifecycleAdapter.getComponentInstance(AbstractInjectionFactory.java:56)
at org.picocontainer.behaviors.AbstractBehavior.getComponentInstance(AbstractBehavior.java:64)
at org.picocontainer.behaviors.Stored.getComponentInstance(Stored.java:91)
at org.picocontainer.DefaultPicoContainer.instantiateComponentAsIsStartable(DefaultPicoContainer.java:1034)
at org.picocontainer.DefaultPicoContainer.addAdapterIfStartable(DefaultPicoContainer.java:1026)
at org.picocontainer.DefaultPicoContainer.startAdapters(DefaultPicoContainer.java:1003)
at …Run Code Online (Sandbox Code Playgroud) 是否有业力记者可用于生成results.xml与声纳Generic Test Coverage插件兼容的文件?或者替换为junit文件的解析器karma-junit-reporter,它将由通用插件输出并使用?
我正在使用SonarQube 5.3和Karma/Jasmine
我想将来自业力的junit报告导入SonarQube,但无法轻易找到方法.类似于https://www.npmjs.com/package/mocha-sonar-generic-test-coverage for karma
仅供我参考
karma-junit-sonarqube-reporter(https://www.npmjs.com/package/karma-junit-sonarqube-reporter),但似乎期望测试的名称与文件的路径相匹配,这对我来说过于严格.
karma-sonarqube-unit-reporter似乎未完成
grunt-karma-sonar似乎依赖于jstestdriver哪个被弃用
我正在尝试在项目上运行SonarQube 4.5.4.找到每个文件夹的文件和指标,除了隐藏的文件夹(如.m2,.something).可悲的是,那些文件夹是我更感兴趣的文件夹.
是否有其他人遇到同样的问题?这些文件夹是否被某些默认属性过滤掉了?
看来添加sonar.scm.disabled=true到conf中是不行的。声纳扫描仪将报告以下错误:
错误:SonarQube 扫描仪执行期间出错 java.lang.IllegalStateException:在 org.sonar.plugins.scm.svn.SvnBlameCommand.blame(SvnBlameCommand.java:86) 上执行文件 betamao/betamao/admin.py 时出错。 sonar.plugins.scm.svn.SvnBlameCommand.blame(SvnBlameCommand.java:59) 在 org.sonar.batch.scm.ScmSensor.execute(ScmSensor.java:86) 在 org.sonar.batch.sensor.SensorWrapper.analysis( SensorWrapper.java:57) 在 org.sonar.batch.phases.SensorsExecutor.executeSensor(SensorsExecutor.java:58) ...
我仍然需要在“常规设置 > SCM”管理页面中禁用 SCM 才能使其正常工作。
这是一个错误吗?
我的环境是:
声纳扫描仪 3.0.3.778 与 openjdk8-u131
sonarqube-5.6.6lts 与 openjdk8-u131
我有默认配置的sonarqube 6.5.当sonar.forceAuthentication标志设置为false时,我可以通过下面给出的命令创建和分析项目.
mvn sonar:sonar -Dsonar.host.url=https://mySonarHost/sonar -Dsonar.login=mySonarUserKey
当我启用sonar.forceAuthentication参数(sonar.forceAuthentication = true)时,我无法分析项目.我总是得到maven错误:
[ERROR] Failed to execute goal org.sonarsource.scanner.maven:sonar-maven-plugin:3.3.0.603:sonar (default-cli) on project storm: Not authorized. Please check the properties sonar.login and sonar.password. -> [Help 1]
它不适用于默认管理员帐户,也不适用于创建的用户帐户(具有分析项目的权限).我也试过不使用用户密钥,但用户的登录名和密码(-Dsonar.login以及-Dsonar.passwordmaven配置),但它也不起作用.我试过使用不同的声纳版本(从4.5.7到5.6.6到最新的6.5,但我总是得到相同的结果).
在连接期间,我在access.log中收到了这样的消息:
IP_ADDRESS - - [08/Sep/2017:12:03:33 +0200] "GET /sonar/batch/index HTTP/1.1" 200 - "-" "ScannerMaven/3.3.0.603/3.5.0" "SOME_KEY"
IP_ADDRESS - - [08/Sep/2017:12:03:33 +0200] "GET /sonar/api/settings/values.protobuf HTTP/1.1" 401 - "-" "ScannerMaven/3.3.0.603/3.5.0" "SOME_KEY"
Run Code Online (Sandbox Code Playgroud)
我需要将sonar.forceAuthentication参数设置为true(只有受信任的用户才能访问它).
知道如何配置和访问带有凭证参数的maven的sonarqube吗?
我有一个项目,仅当执行任务sonarqube后满足条件时才应运行特定的 Gradle 任务(任务)。build此任务可能会失败,因为它与有时不可用的远程服务器进行通信。如果服务器不可用,我想默默地处理错误并向控制台打印一些消息,而不是使整个构建失败。
目前我可以通过以下配置来做到这一点:
build.doLast {
if ('desired.value' == System.properties['some.prop']) {
try {
tasks.sonarqube.execute()
} catch(e) {
...
}
}
}
Run Code Online (Sandbox Code Playgroud)
但是使用这种方法我会收到弃用消息。读了一点之后,我应该不应该使用execute,所以我想出了这个:
if ('desired.value' == System.properties['some.property']) {
build.finalizedBy sonarqube
}
Run Code Online (Sandbox Code Playgroud)
但是在这种情况下,如果sonarqube任务失败,我的整个构建也会失败。在这种情况下我该如何处理sonarqube任务失败?
我正在使用 Gradle 4.5.1。
编辑
使用以下命令运行构建:
./gradlew build
Run Code Online (Sandbox Code Playgroud)
像下面这样修改它会导致 Gradle 不仅忽略sonarqube失败,而且build忽略我不想要的失败:
./gradlew build --continue
Run Code Online (Sandbox Code Playgroud) sonar-runner ×10
sonarqube ×9
gradle ×3
jenkins ×2
build.gradle ×1
java ×1
junit ×1
karma-runner ×1
node.js ×1
properties ×1
runner ×1
sonarqube5.3 ×1
sonarqube5.6 ×1
svn ×1