加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

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

发布时间:2020-12-15 00:49:40 所属栏目:Java 来源:网络整理
导读:我们使用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@d678
我们使用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.

所以我需要配置我的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" />

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

basedir=D:applBuildAgentworkH3src.prjjava.prj
project.dir=D:applBuildAgentworkH3src.prjjava.prj/xalg.prj/h3_service_fo
sonar.java.binaries=D:applBuildAgentworkH3src.prjjava.prjxalg.prjh3_service_fobuildclassesmain
sonar.java.test.binaries=D:applBuildAgentworkH3src.prjjava.prj/xalg.prj/h3_service_fo/build/classes/test

但我一直在:

Java bytecode has not been made available to the analyzer. The org.sonar.java.bytecode.visitor.DependenciesVisitor@d678716,CycleBetweenPackages rule are disabled.

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

Binary dirs: xalg.prj/h3_service_fo/build/classes

我没有使用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 use sonar.java.binaries and sonar.java.libraries instead

对于已弃用的财产,这是预期的.但是使用sonar.java.binaries属性我没有在我的日志中获得“Binary dirs”行.

使用sonar.java.binaries:

Language is forced to java
Load rules
Load rules (done) | time=761ms
Code colorizer,supported languages: cs,plsql
Initializers : 
Base dir: D:applBuildAgentworkH3src.prjjava.prj
Working dir: D:applBuildAgentworkH3src.prjjava.prj.sonar
Source paths: xalg.prj/h3_service_fo/src/main/java
Test paths: xalg.prj/h3_service_fo/src/test/java
Source encoding: windows-1252,default locale: en_US
Index files

使用sonar.binaries:

Language is forced to java
Load rules
Load rules (done) | time=736ms
Code colorizer,plsql
Initializers : 
Base dir: D:applBuildAgentworkH3src.prjjava.prj
Working dir: D:applBuildAgentworkH3src.prjjava.prj.sonar
Source paths: xalg.prj/h3_service_fo/src/main/java
Test paths: xalg.prj/h3_service_fo/src/test/java
Binary dirs: xalg.prj/h3_service_fo/build/classes
Source encoding: windows-1252,default locale: en_US
Index files

我还查看了SonarQube,SonarQube Java插件和SonarQube扫描仪的源代码,以查找“Java字节码尚未提供给分析器”的实例.或者sonar.java.binaries.我在sonar.java.binaries上发现了很多内容,但“Java字节码尚未提供给分析器”.所以我不知道究竟是什么条件会引发错误.

我还在sonar.java.binaries上尝试了以下排列:

<property name="sonar.java.binaries" location="${project.build.dir}/classes" />
<property name="sonar.java.binaries" location="${project.build.dir}/classes/main/nl" />

但这也没有做任何事情.

有点奇怪的是,Squid似乎很好地解决了类路径问题:

----- Classpath analyzed by Squid:
D:applBuildAgentworkH3src.prjjava.prjxalg.prjh3_service_fobuildclassesmain

那么,我错过了什么?我究竟做错了什么?提前致谢.

更新2016-09-08:
删除整个日志,帖子变得很长.

(我认为)相关路径的子集:

project.build.dir=D:applBuildAgentworkH3src.prjjava.prj/xalg.prj/h3_service_fo/build
project.dir=D:applBuildAgentworkH3src.prjjava.prj/xalg.prj/h3_service_fo
project.src.dir=D:applBuildAgentworkH3src.prjjava.prj/xalg.prj/h3_service_fo/src

sonar.dir=D:/appl/sonarqube-5.1.2
sonar.working.directory=D:applBuildAgentworkH3src.prjjava.prj.sonar
sonar.projectBaseDir=D:applBuildAgentworkH3src.prjjava.prj

sonar.jacoco.reportPath=D:applBuildAgentworkH3src.prjjava.prj/xalg.prj/h3_service_fo/build/jacoco/test.exec
sonar.junit.reportsPath=D:applBuildAgentworkH3src.prjjava.prj/xalg.prj/h3_service_fo/build/test-results

sonar.sources=D:applBuildAgentworkH3src.prjjava.prj/xalg.prj/h3_service_fo/src/main/java
sonar.java.binaries=D:applBuildAgentworkH3src.prjjava.prjxalg.prjh3_service_fobuildclassesmain

sonar.java.libraries=D:applBuildAgentworkH3src.prjjava.prj/_deploy/*.jar,D:applBuildAgentworkH3src.prjjava.prj/_repos/lib/*.jar,D:applBuildAgentworkH3src.prjjava.prj/_repos/provided/*.jar

sonar.tests=D:applBuildAgentworkH3src.prjjava.prj/xalg.prj/h3_service_fo/src/test/java
sonar.java.test.binaries=D:applBuildAgentworkH3src.prjjava.prj/xalg.prj/h3_service_fo/build/classes/test
sonar.java.test.libraries=D:applBuildAgentworkH3src.prjjava.prj/_deploy/*.jar,D:applBuildAgentworkH3src.prjjava.prj/_repos/provided/*.jar

路径的格式与我的帖子格式完全相同.可能是Sonar Ant跑步者无法找出带有反斜杠和斜杠的路径吗?

2016-09-16更新:
删除整个日志,帖子变得很长.

(我认为)相关路径的子集:

project.build.dir=xalg.prj\h3_service_fo\build
project.dir=xalg.prj\h3_service_fo
project.src.dir=xalg.prj\h3_service_fo\src

sonar.dir=D:\appl\sonarqube-5.1.2
sonar.working.directory=D:applBuildAgentworkH3src.prjjava.prj.sonar
sonar.projectBaseDir=D:applBuildAgentworkH3src.prjjava.prj

sonar.jacoco.reportPath=xalg.prj\h3_service_fo\build\jacoco/test.exec
sonar.junit.reportsPath=xalg.prj\h3_service_fo\build\test-results

sonar.sources=xalg.prj\h3_service_fo\src\main\java
sonar.java.binaries=D:applBuildAgentworkH3src.prjjava.prjxalg.prjh3_service_fobuildclassesmain
sonar.java.libraries=D:applBuildAgentworkH3src.prjjava.prj\_deploy\*.jar,D:applBuildAgentworkH3src.prjjava.prj\_repos\lib\*.jar,D:applBuildAgentworkH3src.prjjava.prj\_repos\provided\*.jar

sonar.tests=xalg.prj\h3_service_fo\src\test\java
sonar.java.test.binaries=xalg.prj\h3_service_fo\build\classes\test
sonar.java.test.libraries=D:applBuildAgentworkH3src.prjjava.prj\_deploy\*.jar,D:applBuildAgentworkH3src.prjjava.prj\_repos\provided\*.jar

一些路径变得相对,但我认为这是因为TeamCity将Ant文件更改为SVN中的文件.
sonar.java.binaries是绝对的,它肯定指向正确的目录.

但我仍然得到这个错误:

09:17:52.299 INFO  - Java Main Files AST scan done: 1579 ms
09:17:52.301 INFO  - 2/2 source files have been analyzed
09:17:52.305 WARN  - Java bytecode has not been made available to the analyzer. The org.sonar.java.bytecode.visitor.DependenciesVisitor@757a48f9,org.sonar.java.checks.unused.UnusedPrivateMethodCheck@1adf492b,CycleBetweenPackages rule are disabled.

类路径仍然被解释得很好:

[sonar:sonar] 09:17:51.971 DEBUG - ----- Classpath analyzed by Squid:
[sonar:sonar] 09:17:51.972 DEBUG - D:applBuildAgentworkH3src.prjjava.prjxalg.prjh3_service_fobuildclassesmain
[sonar:sonar] 09:17:51.973 DEBUG - D:applBuildAgentworkH3src.prjjava.prj_deploybatch.daemon.jar
[sonar:sonar] 09:17:51.974 DEBUG - D:applBuildAgentworkH3src.prjjava.prj_deploybuildinfo.jar
[sonar:sonar] 09:17:51.975 DEBUG - D:applBuildAgentworkH3src.prjjava.prj_deployh2_shared.jar
[sonar:sonar] 09:17:51.975 DEBUG - D:applBuildAgentworkH3src.prjjava.prj_deployh3_generator.jar
[sonar:sonar] 09:17:51.976 DEBUG - D:applBuildAgentworkH3src.prjjava.prj_deployh3_loadtest.jar
[sonar:sonar] 09:17:51.977 DEBUG - D:applBuildAgentworkH3src.prjjava.prj_deployh3_model_common.jar
[sonar:sonar] 09:17:51.977 DEBUG - D:applBuildAgentworkH3src.prjjava.prj_deployh3_model_xalg.jar
[sonar:sonar] 09:17:51.978 DEBUG - D:applBuildAgentworkH3src.prjjava.prj_deployh3_model_xalg_dao.jar
[sonar:sonar] 09:17:51.979 DEBUG - D:applBuildAgentworkH3src.prjjava.prj_deployh3_model_xalg_mappers.jar
[sonar:sonar] 09:17:51.979 DEBUG - D:applBuildAgentworkH3src.prjjava.prj_deployh3_model_xalg_procedures.jar
[sonar:sonar] 09:17:51.980 DEBUG - D:applBuildAgentworkH3src.prjjava.prj_deployh3_model_xcare.jar
[sonar:sonar] 09:17:51.981 DEBUG - D:applBuildAgentworkH3src.prjjava.prj_deployh3_model_xcare_dao.jar
[sonar:sonar] 09:17:51.982 DEBUG - D:applBuildAgentworkH3src.prjjava.prj_deployh3_model_xcare_mappers.jar
[sonar:sonar] 09:17:51.982 DEBUG - D:applBuildAgentworkH3src.prjjava.prj_deployh3_model_xcare_procedures.jar

Sonar Ant跑步者是否有逃脱反斜杠的问题?

解决方法

这是我使用的,它的工作原理.
sonar-scanner -Dsonar.projectKey=projectName -Dsonar.gitlab.commit_sha=$CI_BUILD_REF -Dsonar.gitlab.ref_name=$CI_BUILD_REF_NAME -Dsonar.sources=directorysrc -Dsonar.java.binaries=.buildlibs

您需要将sonar.java.binaries指向包含jar的目录.我不会尝试使用通配符和文件扩展名,这不是一回事.您需要一个目录作为参数,而不是文件的正则表达式.

我不知道声纳扫描仪的一切,但我的配置工作.

将我的示例带入上下文,我在gitlab运行管道中使用它.您的双反斜杠应该没问题,但您始终可以在配置文件中替换它们作为前向斜杠.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读