我在"程序"文件夹中有大量单独的,不相关的Java程序,我真的希望能够为每个程序自动计算技术债务分数.我知道SonarQube可以让你用Sonar-Runner做这个(有点) ,但是我真的想要一种动态的方法,所以我可以让脚本分析并编写所有程序中的技术债务分数.程序"文件夹到csv.
如果它可以为我做这件事,我非常愿意并且乐于尝试任何其他类型的技术债务软件(或质量).我真的很感激任何输入,或者想一想这是否可能?
我需要使用Sonar服务器分析shell脚本.
我拥有的文件是扩展名sh,需要进行分析.但我没有看到任何来自Sonar插件的插件.
我一直在努力解决这个问题.我已经能够HTML在帮助下生成报告DotCover.此外,我已经在Sonar Portal中给出了报告的路径,Project Settings--> C# --> CodeCoverage --> DotCoverReportPath也在Sonar.Properties特定解决方案的文件中(Mine是一个DotNet应用程序).
当我运行时,Sonar-Runner它似乎解析HTML文件并且还说执行成功,但是我的仪表板上Sonar System显示"无数据"的覆盖范围.
如果你们中的任何人遇到类似问题并且能够找出错误,请帮助我.
经过无休止的谷歌搜索和阅读大量的文件,我完全被finihed.
我想将已创建的单元测试报告(如.xml和.exec文件(JUnit和Jacoco))导入SonarQube.问题是
Sensor JaCoCoOverallSensor...
15:54:48 15:54:48.909 INFO - No JaCoCo analysis of project coverage can be done since there is no class files.
15:54:48 15:54:48.909 INFO - Sensor JaCoCoOverallSensor done: 374 ms
15:54:48 15:54:48.909 INFO - Sensor JaCoCoSensor...
15:54:48 15:54:48.910 INFO - No JaCoCo analysis of project coverage can be done since there is no class files.
15:54:48 15:54:48.910 INFO - Sensor JaCoCoSensor done: 1 ms
Run Code Online (Sandbox Code Playgroud)
由于我们有一个相当大的代码,我们没有src的所有二进制文件.因此,问题是:"如何在没有二进制文件的情况下仅将完成的报告导入SonarQube?"
SonarRunner Properties
sonar.dynamicAnalysis=reuseReports
sonar.core.coveragePlugin=Jacoco
sonar.junit.reportsPath=[...]/workspace/junit/xml-results
sonar.jacoco.reportPath=[...]/workspace/junit/junit-test.exec
Run Code Online (Sandbox Code Playgroud)
任何帮助都非常感谢!提前致谢!
我使用Jacoco eclipse插件来测量单元测试覆盖率,并且我能够使用它导出报告.我想将该报告与声纳集成,因此我在项目属性文件中给出了它的路径.我的属性文件看起来像这样
# Required metadata
sonar.projectKey=key
sonar.projectName=name
sonar.projectVersion=1.0
sonar.jacoco.reportPath=jacoco.exec
sonar.tests=junit
sonar.dynamicAnalysis=reuseReports
sonar.java.coveragePlugin=jacoco
sonar.jacoco.reportMissing.force.zero=true
# Comma-separated paths to directories with sources (required)
sonar.sources=src
# Comma-separated paths to directories with tests (optional)
sonar.tests=test
# Encoding of the source files
sonar.sourceEncoding=UTF-8
# Language
sonar.language=java
Run Code Online (Sandbox Code Playgroud)
当我执行声纳运行器时,控制台输出中有以下行
16:23:13.219 INFO - Sensor JaCoCoItSensor...
16:23:13.219 INFO - No JaCoCo analysis of project coverage can be done since there is no class files.
16:23:13.219 INFO - Sensor JaCoCoItSensor done: 0 ms
16:23:13.219 INFO - Sensor JaCoCoOverallSensor...
16:23:13.219 INFO …Run Code Online (Sandbox Code Playgroud) 我们最近将SonarQube服务器升级到最新版本(5.3)以及升级所有插件.服务器仅监视由Visual Studio Team Services(Visual Studio Online)构建的C#项目的单个构建.
起初,一切都运作良好(除了我将在另一个问题中描述的长期问题).但过了一段时间,我们在尝试将数据推送到SQ时开始出现类似下面的错误:
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: Can't create measure for line 47 for file '[PATH]/[FILENAME].cs' with 45 lines
at org.sonar.batch.sensor.coverage.CoverageExclusions.validateMaxLine(CoverageExclusions.java:158)
at org.sonar.batch.sensor.coverage.CoverageExclusions.validate(CoverageExclusions.java:129)
at org.sonar.batch.deprecated.DeprecatedSensorContext.saveMeasure(DeprecatedSensorContext.java:204)
at org.sonar.plugins.dotnet.tests.CoverageReportImportSensor.analyze(CoverageReportImportSensor.java:78)
at org.sonar.plugins.dotnet.tests.CoverageReportImportSensor.analyse(CoverageReportImportSensor.java:59)
at org.sonar.batch.phases.SensorsExecutor.executeSensor(SensorsExecutor.java:58)
at org.sonar.batch.phases.SensorsExecutor.execute(SensorsExecutor.java:50)
at org.sonar.batch.phases.PhaseExecutor.execute(PhaseExecutor.java:98)
at org.sonar.batch.scan.ModuleScanContainer.doAfterStart(ModuleScanContainer.java:185)
at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:132)
at org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:117)
at org.sonar.batch.scan.ProjectScanContainer.scan(ProjectScanContainer.java:243)
at org.sonar.batch.scan.ProjectScanContainer.scanRecursively(ProjectScanContainer.java:238) …Run Code Online (Sandbox Code Playgroud) c# sonar-runner sonarqube sonarqube-msbuild-runner azure-devops
我正在尝试使用SonarQube分析我的源代码.我试图用sonar-scanner我的工具从命令行运行分析.我遵循了本文档文章中提供的指南:http://docs.sonarqube.org/display/SCAN/Analyzing+with+SonarQube+Scanner
当我尝试通过运行测试安装时,sonar-scanner -h我收到以下错误:
? ~ sonar-scanner -h
Exception in thread "main" java.lang.UnsupportedClassVersionError: org/sonarsource/scanner/cli/Main : Unsupported major.minor version 52.0
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:482)
Run Code Online (Sandbox Code Playgroud)
从错误看,它没有为JAVA/JRE找到正确的版本来运行cli工具.我的理解是该工具应该适用于任何Java 1.7+版本.我在用Oracle JDK 1.7.0_55.我也试过使用,OpenJDK 1.8但我仍然得到同样的错误.我还检查了我的JAVA_HOME变量是否设置为正确的JDK目录.
任何正确方向的帮助表示赞赏.
我刚开始运行SonarQube扫描,我在Jenkins的日志中收到此错误消息:
16:17:39 16:17:36.926错误 - 准确分析C/C++/Objective-C项目的唯一方法是使用SonarSource构建包装器.如果出于任何原因,在项目中无法使用构建包装器,则可以借助"sonar.cfamily.build-wrapper-output.bypass = true"属性绕过它.通过使用该属性,您将切换到"最佳"模式,可能导致误报和假阴性.
有人可以建议我在哪里找到并运行这个SonarSource构建包装器吗?
非常感谢你的帮助!
我正在尝试使用sonar.testExecutionReportPaths. 我正在使用文档中提供的 xml 文件格式。我在路径属性中使用文件的完整路径。并且文件存在。
我不明白为什么我的文件被忽略。任何的想法 ?
sonar.testExecutionReportPaths = "C:\Program Files (x86)\Jenkins\workspace\CI\Sonarqube.xml"
sonar.test.inclusions = "**\*Test*.cs"
Run Code Online (Sandbox Code Playgroud)
这是来自 Sonar Runner 的日志:
INFO: Sensor Generic Test Executions Report
INFO: Parsing C:\Program Files (x86)\Jenkins\workspace\CI\Sonarqube.xml
WARNING: WARN: Property 'sonar.genericcoverage.unitTestReportPaths' is deprecated. Please use 'sonar.testExecutionReportPaths' instead.
INFO: Imported test execution data for 0 files
INFO: Test execution data ignored for 5 unknown files, including:
C:\Program Files (x86)\Jenkins\workspace\CI\Tests\A-Test.cs
C:\Program Files (x86)\Jenkins\workspace\CI\Tests\B-Tests.cs
C:\Program Files (x86)\Jenkins\workspace\CI\Tests\C-Tests.cs
C:\Program Files (x86)\Jenkins\workspace\CI\Tests\D-Test.cs
C:\Program Files (x86)\Jenkins\workspace\CI\Tests\E-Test.cs
INFO: Sensor Generic Test Executions Report …Run Code Online (Sandbox Code Playgroud) 我使用 jest-sonar-reporter 进行覆盖,如下所示:
包.json
{
"name": "app",
"version": "1.0.0",
"description": "The task runner packages for Gulp",
"main": "gulpfile.js",
"scripts": {
...
"test": "jest --coverage",
...
},
"devDependencies": {
...
"jest": "26.0.1",
"jest-sonar-reporter": "2.0.0",
...
},
"jest": {
...
"collectCoverage": true,
"testResultsProcessor": "jest-sonar-reporter"
},
"jest-junit": {
"suiteName": "jest tests",
...
}
}
Run Code Online (Sandbox Code Playgroud)
我在npm run test后生成了 test-report.xml 文件,如下所示:
测试报告.xml
<?xml version="1.0" encoding="UTF-8"?>
<testExecutions version="1">
<file path="<path to>\AreaList.test.jsx">
<testCase name="Description 1 " duration="6"/>
</file>
<file path="<path to>\selectors.search.test.js">
<testCase name="Description 2 " duration="2"/> …Run Code Online (Sandbox Code Playgroud) sonar-runner ×10
sonarqube ×10
c# ×2
jacoco ×2
unit-testing ×2
azure-devops ×1
c++ ×1
design-debt ×1
dotcover ×1
eclipse ×1
java ×1
javascript ×1
jenkins ×1
jestjs ×1
shell ×1