我们使用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) 我想制作一个cppcheck在Sensor类中运行工具的插件.为了重用现有的和支持的插件,我想使用sonar-cxx插件来导入我的插件的结果.
如何在声纳扫描仪中订购插件?我想确保在声纳扫描程序调用cxx-plugin之前创建了cppcheck报告.
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属性提供字节码
昨天,我在Visual Studio Team Service上启动了一个新的虚幻引擎项目,我决定自己学习视频游戏编程的技巧。无论如何,我想用于该项目的最好的方法是将SonarQube集成到Visual Studio中并从中获取报告(我已经在大学使用它,这对我真的很有用),但是我有一些奇怪的问题:
首先,我想在本地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)如果能够解决此问题,则有必要了解如何将代码分析本地集成到VSTS的Build定义中(它需要正确的Endpoint,并且我不知道如何设置它)。
最后但并非最不重要的一点是,如果我无法在本地运行此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) 我最近从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凭证.
我正在尝试使用我们的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) 我们目前正在使用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)
sonar.exclusions="$(Build.SourcesDirectory)\Source\ProjectA\Scripts\**\*.js"类似于覆盖范围)**/ProjectsA/Scripts/**/*.js**/ProjectA/Scripts/**/*.js**/ProjectB/Views/**/*.cssonar-project.properties files are not understood by the SonarScanner for MSBuildSonarQube Web界面中的扫描程序上下文的日志是:
Settings for module: Solution:Solution:6FA7B5C2-667D-4387-98B9-445617F2AC0B
- …Run Code Online (Sandbox Code Playgroud) 我环顾了类似的问题和回复,但没有找到我的解决方案.
我使用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) 尝试为 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) 我试图通过将以下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 ×10
sonarqube-scan ×10
java ×3
.net ×1
angular ×1
ant ×1
cppcheck ×1
jenkins ×1
maven ×1
msbuild ×1
sonar-runner ×1
sonarqube5.1 ×1
svn ×1
tfs ×1