标签: sonarqube-scan

如何正确配置属性"sonar.java.binaries"?

我们使用SonarQube 5.1.2使用Ant runner 2.2和Java pluging 3.12进行分析.我可以成功地分析我的项目.我只是不断收到此错误:

Java bytecode has not been made available to the analyzer. The org.sonar.java.bytecode.visitor.DependenciesVisitor@d678716, org.sonar.java.checks.unused.UnusedPrivateMethodCheck@58e28efd, CycleBetweenPackages rule are disabled.
Run Code Online (Sandbox Code Playgroud)

所以我需要配置我的sonar.java.binaries和sonar.java.test.binaries属性(遵循http://docs.sonarqube.org/display/PLUG/Java+Plugin+and+Bytecode).

我认为我做得正确:

<property name="project.dir" value="${basedir}/xalg.prj/h3_service_fo" />   
<property name="sonar.java.binaries" location="${project.build.dir}/classes/main" />
<property name="sonar.java.test.binaries" value="${project.build.dir}/classes/test" />
Run Code Online (Sandbox Code Playgroud)

哪个解析为以上属性的以下有效目录:

basedir=D\:\\appl\\BuildAgent\\work\\H3\\src.prj\\java.prj
project.dir=D\:\\appl\\BuildAgent\\work\\H3\\src.prj\\java.prj/xalg.prj/h3_service_fo
sonar.java.binaries=D\:\\appl\\BuildAgent\\work\\H3\\src.prj\\java.prj\\xalg.prj\\h3_service_fo\\build\\classes\\main
sonar.java.test.binaries=D\:\\appl\\BuildAgent\\work\\H3\\src.prj\\java.prj/xalg.prj/h3_service_fo/build/classes/test
Run Code Online (Sandbox Code Playgroud)

但我一直在:

Java bytecode has not been made available to the analyzer. The org.sonar.java.bytecode.visitor.DependenciesVisitor@d678716, org.sonar.java.checks.unused.UnusedPrivateMethodCheck@58e28efd, CycleBetweenPackages rule are disabled.
Run Code Online (Sandbox Code Playgroud)

而对于我的生活,我无法弄清楚我需要给sonar.java.binaries和sonar.java.test.binaries属性的值.我甚至尝试使用sonar.binaries,它给了我以下输出:

Binary dirs: xalg.prj/h3_service_fo/build/classes
Run Code Online (Sandbox Code Playgroud)

我没有使用sonar.java.binaries或sonar.java.test.binaries.我也得到了:

JavaClasspath initialization...
sonar.binaries and sonar.libraries are deprecated since version 2.5 of sonar-java-plugin, please …
Run Code Online (Sandbox Code Playgroud)

java sonar-runner sonarqube sonarqube5.1 sonarqube-scan

10
推荐指数
2
解决办法
4万
查看次数

在另一个之前运行一个插件

我想制作一个cppcheckSensor类中运行工具的插件.为了重用现有的和支持的插件,我想使用sonar-cxx插件来导入我的插件的结果.

如何在声纳扫描仪中订购插件?我想确保在声纳扫描程序调用cxx-plugin之前创建了cppcheck报告.

cppcheck sonarqube sonarqube-scan

10
推荐指数
0
解决办法
137
查看次数

SonarQube从6.4升级到6.5会破坏扫描仪

  1. 我在sonarQube6.4上并升级到6.5
  2. 声纳扫描仪是3.0.3
  3. 现在升级后,只要源路径中有java文件,扫描程序就会失败.如果我不扫描java文件一切正常.
  4. 但是,如果我回滚使用6.4版本,一切正常,那么有任何回归吗?当我使用-X命令运行scanner命令时,这是堆栈跟踪.因此,提供所有已编译分类的位置是6.5的授权,有没有办法忽略它.

04:56:21.218 DEBUG:Sensors:JavaSquidSensor - > SurefireSensor - > JaCoCoSensor - > SonarJavaXmlFileSensor - > Analyzer for"php.ini"files - > Zero Coverage Sensor - > CPD Block Indexer 04:56:21.218 INFO:Sensor JavaSquidSensor [java ] 04:56:21.558信息:已配置的Java源代码版本(sonar.java.source):无04:56:21.565 INFO:JavaClasspath初始化04:56:21.570信息:------------- -------------------------------------------------- --------- 04:56:21.571 INFO:EXECUTION FAILURE 04:56:21.571 INFO:------------------------- ----------------------------------------------- 04:56 :21.571 INFO:总时间:6.545s 04:56:21.707 INFO:最终记忆:51M/1083M 04:56:21.707 INFO:--------------------- -------------------------------------------------- - 04:56:21.707错误:SonarQube扫描程序执行期间出错org.sonar.squidbridge.api.AnalysisException:请使用org.sonar.java.JavaClasspath.init(JavaClasspath.)中的sonar.java.binaries属性提供项目的已编译类. java:59)at org.sonar.java.AbstractJavaClasspath.getElements(AbstractJavaClasspath.java:281)在org.sonar.java.SonarComponents.getJavaClasspath(SonarComponents.java:141)在org.sonar.java.JavaSquid.(JavaSquid.java:83)在org.sonar.plugins.java.JavaSquidSensor.execute(JavaSquidSensor.java:83)org.sonar.scanner.sensor.SensorWrapper.analyse(SensorWrapper.java:53)org.sonar.scanner.phases.SensorsExecutor.executeSensor( SensorsExecutor.java:88)位于org.sonar.scanner的org.sonar.scanner.phases.SensorsExecutor.execute(SensorsExecutor.java:82)org.sonar.scanner.phases.SensorsExecutor.execute(SensorsExecutor.java:68) .phases.AbstractPhaseExecutor.execute(AbstractPhaseExecutor.java:78)在org.sonar.scanner.scan.ModuleScanContainer.doAfterStart(ModuleScanContainer.java:179)在org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:144 )org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:129)org.sonar.scanner.scan.ProjectScanContainer.scan(Proj)ectScanContainer.java:261)在org.sonar.scanner.scan.ProjectScanContainer.scanRecursively(ProjectScanContainer.java:256)在org.sonar.scanner.scan.ProjectScanContainer.doAfterStart(ProjectScanContainer.java:245)在org.sonar.core .platform.ComponentContainer.startComponents(ComponentContainer.java:144)在org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:129)在org.sonar.scanner.task.ScanTask.execute(ScanTask.java:47 )在在org.sonar.core.platform.ComponentContainer org.sonar.scanner.task.TaskContainer.doAfterStart(TaskContainer.java:84)在org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:144).在org.sonarsource的org.sonar.batch.bootstrapper.Batch.executeTask(Batch.java:116)的org.sonar.scanner.bootstrap.GlobalContainer.executeTask(GlobalContainer.java:119)执行(ComponentContainer.java:129) sun.reflect.NativeMethodAccessorImpl.invok中的.scanner.api.internal.batch.BatchIsolatedLauncher.execute(BatchIsolatedLauncher.java:63)E0(本机方法)在sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)在java.lang.reflect.Method.invoke(Method.java: 498)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:233)位于org.sonarsource的org.sonarsource.scanner.api.EmbeddedScanner.runAnalysis(EmbeddedScanner.java:151)org.sonarsource.scanner.cli.Main.runAnalysis(Main.java:123). scan.cli.Main.execute(Main.java:77)at org.sonarsource.scanner.cli.Main.main(Main.java:61)04:56:21.710 DEBUG:Execution getVersion 04:56:21.711 DEBUG:Execution停

当我使用6.4运行相同时,它工作正常,我在控制台中看到的唯一警告是:

04:52:42.738警告:未提供依赖关系的字节码来分析源文件,最终可能会得到不太精确的结果.可以使用sonar.java.libraries属性提供字节码

sonarqube sonarqube-scan

10
推荐指数
2
解决办法
1万
查看次数

Sonarqube集成和startSonar.bat失败错误(0x2)

昨天,我在Visual Studio Team Service上启动了一个新的虚幻引擎项目,我决定自己学习视频游戏编程的技巧。无论如何,我想用于该项目的最好的方法是将SonarQube集成到Visual Studio中并从中获取报告(我已经在大学使用它,这对我真的很有用),但是我有一些奇怪的问题:

  1. 首先,我想在本地PC上运行analisys,问题是今天我跑了蝙蝠,却遇到了这个问题,我已经在某个地方检查了这个问题,但我相信这不是%JAVA_HOME%变量。

    Wrapper Started as Console
    Launching a JVM...
    Unable to execute Java command.  Impossibile trovare il file specificato. (0x2)
        "java" -Djava.awt.headless=true -Xms3m -Xmx3m -Djava.library.path="./lib" -classpath "../../lib/jsw/wrapper-3.2.3.jar;../../lib/sonar-application-6.1.jar"
    -Dwrapper.key="GMa9Ff98pvtqrHYZ" -Dwrapper.port=32000 -Dwrapper.jvm.port.min=31000 -Dwrapper.jvm.port.max=31999 -Dwrapper.pid=6352 -Dwrapper.version="3.2.3" -Dwrapper.native_library="wrapper" -Dwrapper.cpu.timeout="10" -Dwrapper.jvmid=1 org.tanukisoftware.wrapper.WrapperSimpleApp org.sonar.application.App
    Critical error: wait for JVM process failed
    
    Run Code Online (Sandbox Code Playgroud)
  2. 如果能够解决此问题,则有必要了解如何将代码分析本地集成到VSTS的Build定义中(它需要正确的Endpoint,并且我不知道如何设置它)。

  3. 最后但并非最不重要的一点是,如果我无法在本地运行此Build Definition,是否有任何在线免费服务器支持SonarQube来使用它,并最终从SonarQube获得报告?

编辑:

包装器配置

# Path to JVM executable. By default it must be available in PATH.
# Can be an absolute path, for example:
set Mypath=C:/Program Files
wrapper.java.command=%Mypath%\Java\jdk1.8.0_77\bin\java
wrapper.java.command=java …
Run Code Online (Sandbox Code Playgroud)

java visual-studio sonarqube sonarqube-scan

9
推荐指数
2
解决办法
1万
查看次数

执行文件责备时出现SonarQube错误

我最近从SonarQube 5.1.2升级到SonarQube 5.6.现在我收到IllegalStateException"执行文件责备时出错".这种情况在Eclipse和Jenkins中使用我的ant脚本构建.在Jenkins中,错误更加完整,表明SVNAuthenticationException E170001:协商身份验证失败:'没有提供有效凭据'.

SonarQube管理 - >常规设置 - > SCM - > SVN中存在有效凭据.它们与我在5.1.2中使用的凭据相同,并且责备功能无错误地工作,并为各种开发人员分配了问题.此外,我的构建脚本使用相同的凭据填充sonar.svn.username和sonar.svn.password.secured.

在5.1.2中我使用了sonar-issue-assign-plugin.我看到现在已经弃用了,实际上如果该插件存在,SonarQube 5.6将无法成功启动.不幸的是,取而代之的是不适合我.

我在这里这里看到了同样错误的问题答案.

编辑:我仍然坚持这一个.我在SonarQube管理>生成设置> SCM> SVN中重新输入凭据,然后重新启动服务器.结果相同.这是异常堆栈跟踪的最后一部分:

引起:org.tmatesoft.svn.core.SVNAuthenticationException:svn:E170001:协商身份验证失败:org.tmatesoft.svn.core.internal.wc.SVNErrorManager.error(SVNErrorManager.java:62)中没有提供"有效凭据" at org.tmatesoft.svn.core.internal.wc.SVNErrorManager.error(SVNErrorManager.java:51)at org.tmatesoft.svn.core.internal.io.dav.http.DefaultHTTPNegotiateAuthentication $ 1.run(DefaultHTTPNegotiateAuthentication.java:175 )org.tmatesoft.svn.core.internal.io.dav.http.DefaultHTTPNegotiateAuthentication $ 1.run(DefaultHTTPNegotiateAuthentication.java:166)at org.tmatesoft.svn.core.internal.io.dav.http.DefaultHTTPNegotiateAuthentication.authenticate( DefaultHTTPNegotiateAuthentication.java:221)org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:477)org.tmatesoft.svn.core.internal.io.dav.http.位于org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request的HTTPConnection.request(HTTPConnection.java:398)(HTTPConnection.java:386 )org.tmatesoft.svn.core.internal.io.dav.DAVConnection.performHttpRequest(DAVConnection.java:863)at org.tmatesoft.svn.core.internal.io.dav.DAVConnection.exchangeCapabilities(DAVConnection.java:699) )org.tmatesoft.svn.core.internal.io.dav.DAVConnection.open(DAVConnection.java:118)org.tmatesoft.svn.core.internal.io.dav.DAVRepository.openConnection(DAVRepository.java:1049) )org.tmatesoft.svn.core.internal.io.dav.DAVRepository.hasCapability(DAVRepository.java:877)at org.tmatesoft.svn.core.io.SVNRepository.assertServerIsMergeInfoCapable(SVNRepository.java:787)at org. tmatesoft.svn.core.io.SVNRepository.getFileRevisions(SVNRepository.java:756)位于org.tmatesoft.svn的org.tmatesoft.svn.core.internal.wc2.remote.SvnRemoteAnnotate.run(SvnRemoteAnnotate.java:111). core.internal.wc2.remote.SvnRemoteAnnotate.run(SvnRemoteAnnotate.java:35)org.tmatesoft.svn.core.internal.wc2.SvnOperationRunner.run(SvnOperationRunner.java:21)at org.tmatesoft.svn.core. wc2.SvnOperationFactory.run(SvnOpe rationFactory.java:1235)org.tmatesoft.svn.core.wc2.SvnOperation.run(SvnOperation.java:294)org.tmatesoft.svn.core.wc.SVNLogClient.doAnnotate(SVNLogClient.java:295)at org .sonar.plugins.scm.svn.SvnBlameCommand.blame(SvnBlameCommand.java:100)... 64更多

编辑2:我使用sonarqube-ant-task-2.5.jar将其作为Ant任务运行,我使用SonarQube插件(版本2.4.4)在Jenkins中将其作为单独的构建步骤运行,结果相同.我仍然不知道为什么在尝试分配责任时它没有找到我的SVN凭证.

svn ant sonarqube sonarqube-scan

9
推荐指数
1
解决办法
9205
查看次数

未知的舞台部分"withSonarQubeEnv"

我正在尝试使用我们的Jenkins服务器上启用Blue Ocean beta插件的Pipeline作业.

我们在我们的一个自由式作业中配置了一个sonarqube扫描器构建步骤,我现在想在我的Jenkins文件中添加一个阶段.

我从声纳文档中看到,有一种方法可以实现这一点

我们正在使用Jenkins 2.32.3并安装了SonarQube扫描仪2.8.

我尝试了建议的舞台配置块,我们的扫描仪名为'SonarQube Scanner'

stage('SonarQube analysis') {
    // requires SonarQube Scanner 2.8+
    def scannerHome = tool 'SonarQube Scanner 2.8';
    withSonarQubeEnv('SonarQube Scanner') {
      sh "${scannerHome}/bin/sonar-scanner"
    }
  }
Run Code Online (Sandbox Code Playgroud)

但是我从Jenkins那里得到了一个错误:

WorkflowScript: 29: Not a valid stage section definition: "def scannerHome = tool 'SonarQube Scanner 2.8'". Some extra configuration is required. @ line 29, column 5.
Run Code Online (Sandbox Code Playgroud)

我错过了什么?

谢谢

PS - 我肯定安装了声纳扫描仪:

在此输入图像描述

更新

我在控制台日志中得到以下输出:

hudson.remoting.ProxyException: java.lang.IllegalArgumentException: Failed to prepare withSonarQubeEnv step
    at org.jenkinsci.plugins.workflow.cps.DSL.invokeDescribable(DSL.java:315)
    at org.jenkinsci.plugins.workflow.cps.DSL.invokeMethod(DSL.java:129)
    at org.jenkinsci.plugins.workflow.cps.CpsScript.invokeMethod(CpsScript.java:108)
    at groovy.lang.GroovyObject$invokeMethod.call(Unknown …
Run Code Online (Sandbox Code Playgroud)

jenkins sonarqube jenkins-pipeline sonarqube-scan

9
推荐指数
1
解决办法
1万
查看次数

SonarQube MSBuild扫描仪不会从分析中排除文件

我们目前正在使用SonarQube Scanner for VSTS/TFS 4.1.1(使用SonarQube Scanner 4.1.1).

我们想做什么:

对于我们解决方案中的某些项目(模块),我们希望从分析和代码覆盖率统计信息中排除文件.这应该通过使用文件模式而不是修改TFS构建任务以可维护的方式完成.

项目结构:

    |- Source
      |- ProjectA
        |- Scripts (should be excluded)
        |- OwnCode
      |- ProjectB
        |- Views (only code coverage should be excluded)
        |- Presenters
        |- ...
      |- ProjectC
        |- Scripts (should be scanned)
        |- ...
      |- ...
      |- Solution.sln
Run Code Online (Sandbox Code Playgroud)

我们尝试了什么:

  1. 排除在TFS构建任务中
    • 绝对路径(带反斜杠或斜杠):( sonar.exclusions="$(Build.SourcesDirectory)\Source\ProjectA\Scripts\**\*.js"类似于覆盖范围)
    • 相对路径: **/ProjectsA/Scripts/**/*.js
  2. 不包括在SonarQube前端
    • 分析排除: **/ProjectA/Scripts/**/*.js
    • 覆盖范围排除: **/ProjectB/Views/**/*.cs
  3. 不包括sonar-project.properties:
    • 不受支持并导致以下错误: sonar-project.properties files are not understood by the SonarScanner for MSBuild

我们看到了什么:

SonarQube Web界面中的扫描程序上下文的日志是:

  Settings for module: Solution:Solution:6FA7B5C2-667D-4387-98B9-445617F2AC0B
  - …
Run Code Online (Sandbox Code Playgroud)

.net msbuild tfs sonarqube sonarqube-scan

9
推荐指数
1
解决办法
3319
查看次数

在openjdk11下执行sonar-maven-plugin时,不支持的类文件主要版本55

我环顾了类似的问题和回复,但没有找到我的解决方案.

我使用openjdk11和apache-maven-3.5.4进行项目编译和打包,一切正常,应用程序正常运行.

但是在我执行基于通过maven命令连接到sonarcube服务器的声纳分析时,它失败了并且发生了一些问题.当我使用jdk6和maven 3.2.1时,此命令有效.

使用的maven命令:mvn sonar:sonar -Dsonar.host.url = {mysonarcube.server} -Dsonar.login = {mysonartoken}

关键的pom.xml与声纳相关:

<plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.7.0</version>
            <configuration>
                <release>11</release>
            </configuration>
            <dependencies>
                <dependency>
                    <groupId>org.ow2.asm</groupId>
                    <artifactId>asm</artifactId>
                    <version>7.0-beta</version>
                </dependency>
            </dependencies>
        </plugin>
        <plugin>
            <groupId>org.sonarsource.scanner.maven</groupId>
            <artifactId>sonar-maven-plugin</artifactId>
            <version>3.5.0.1254</version>
        </plugin>
        <plugin>
            <groupId>org.jacoco</groupId>
            <artifactId>jacoco-maven-plugin</artifactId>
            <version>0.7.9</version>
            <configuration>
                <destFile>${sonar.jacoco.reportPath}</destFile>
                <append>true</append>
            </configuration>
        </plugin>
Run Code Online (Sandbox Code Playgroud)

错误消息如下:

java.lang.IllegalArgumentException: Unsupported class file major version 55
    at org.objectweb.asm.ClassReader.<init>(ClassReader.java:166)
    at org.objectweb.asm.ClassReader.<init>(ClassReader.java:148)
    at org.objectweb.asm.ClassReader.<init>(ClassReader.java:136)
    at org.sonar.java.resolve.BytecodeCompleter.loadClass(BytecodeCompleter.java:242)
    at org.sonar.java.resolve.Symbols.<init>(Symbols.java:176)
    at org.sonar.java.resolve.SemanticModel.createFor(SemanticModel.java:60)
    at org.sonar.java.model.VisitorsBridge.visitFile(VisitorsBridge.java:109)
    at org.sonar.java.ast.JavaAstScanner.simpleScan(JavaAstScanner.java:96)
    at org.sonar.java.ast.JavaAstScanner.scan(JavaAstScanner.java:68)
    at org.sonar.java.JavaSquid.scanSources(JavaSquid.java:116)
    at org.sonar.java.JavaSquid.scan(JavaSquid.java:110)
    at org.sonar.plugins.java.JavaSquidSensor.execute(JavaSquidSensor.java:93)
    at org.sonar.scanner.sensor.SensorWrapper.analyse(SensorWrapper.java:53)
    at org.sonar.scanner.phases.SensorsExecutor.executeSensor(SensorsExecutor.java:88)
    at org.sonar.scanner.phases.SensorsExecutor.execute(SensorsExecutor.java:82) …
Run Code Online (Sandbox Code Playgroud)

java maven sonarqube sonarqube-scan

9
推荐指数
2
解决办法
7280
查看次数

如何为 Angular 7 项目设置声纳

尝试为 Angular 7 代码库设置 Sonarqube 以进行代码覆盖率分析。我已经安装了 Sonarqube 并在获得授权 cmd 后在 Admin 中创建了一个项目

"sonar-scanner.bat -D"sonar.projectKey=TestApp" -D"sonar.sources=." -D"sonar.host.url= http://127.0.0.1:9000 " -D"sonar.login= 5089f6d1cc070b3c9e96273405a7e354721030c7""

试图在 Angular 项目中运行...它开始扫描项目,但失败了,我是否配置了其他任何其他项目来运行扫描

“以下是扫描仪控制台中显示的消息”

INFO: 1024/1024 source files have been analyzed
INFO: Sensor TypeScript analysis [javascript] (done) | time=200377ms
INFO: Sensor JavaXmlSensor [java]
INFO: Sensor JavaXmlSensor [java] (done) | time=256ms
INFO: Sensor HTML [web]
INFO: Sensor HTML [web] (done) | time=2605ms
INFO: Sensor SonarTS [typescript]
INFO: Since SonarTS v2.0, TypeScript analysis is performed by SonarJS analyzer v6.0 or later. No …
Run Code Online (Sandbox Code Playgroud)

sonarqube sonarqube-scan angular

9
推荐指数
1
解决办法
2万
查看次数

使用SonarQube Scanner for MSBuild控制模块名称

我试图通过将以下xml片段添加到我的csproj文件来更改C#项目的模块名称:

<ItemGroup> 
    <SonarQubeSetting Include="sonar.projectName">
        <Value>Core.XY</Value>
    </SonarQubeSetting>
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)

这按照我的预期方式工作(相应地设置SonarQube中的模块名称).

问题:这是支持还是只是意外工作?如果我不得不担心它会随着下一次升级而改变,我真的不想使用这种行为.

生成的sonar-project.properties文件包含以下条目:

B6CCB06F-640A-428E-8A4E-4BBBAD881400.sonar.projectName=XY
...
B6CCB06F-640A-428E-8A4E-4BBBAD881400.sonar.projectName=Core.XY
Run Code Online (Sandbox Code Playgroud)

这可能意味着我的配置或多或少地偶然起作用.


更新: 以下解释了为什么我要更改某些项目的模块名称:我有几个项目的解决方案,例如

Core.sln
- Lib.csproj
- Tools.csproj
Service.sln
- Lib.csproj
- ...
Run Code Online (Sandbox Code Playgroud)

在这种情况下,我最终在SonarQube中有两个"Lib"模块,除非我有一种覆盖模块名称的方法.我当然可以重命名项目,但我宁愿能够简单地告诉SonarQube使用哪个模块名称.

如果Sonar Scanner使用程序集名称而不是项目名称,我也会非常高兴.

sonarqube sonarqube-msbuild-runner sonarqube-scan

8
推荐指数
1
解决办法
410
查看次数