我们使用 Sonar 进行代码分析,我相信它又使用 findbugs 进行字节码扫描。 Sonar 执行是在 ANT 构建系统中构建的,并在 RHEL 构建主机上运行。
突然间,代码覆盖率分析开始失败,发现 Noclasses 分析异常,当二进制文件目录中编译了 7951 个类时,这令人费解。
以下是收集指标所遵循的步骤 *) 先编译代码 *) Sonar 目标依赖于单元测试并触发单元测试 *) 然后在调用目标时执行 Sonar 部分
<target name="sonar" depends="run-testng-unittest-coverage">
<path id="sonar.classpath">
<fileset dir="${env.projecthome}/.m2/repository/" includes="**/*.jar"/>
<fileset dir="${env.3rdpartyhome}/" includes="**/*.jar"/>
</path>
<property name="sonar.projectKey" value="project-short-name"/>
<property name="sonar.projectVersion" value="1.0.0-SNAPSHOT"/>
<property name="sonar.projectName" value="PROJECT SHORT DESC"/>
<property name="sonar.language" value="java" />
<property name="sonar.branch" value="main"/>
<property name="sonar.host.url" value="http://sonar.instance:9000"/>
<property name="sonar.jdbc.url" value="jdbc:mysql://sonar.instance:3306/sonar?useUnicode=true&characterEncoding=utf8"/>
<property name="sonar.jdbc.driverClassName" value="com.mysql.jdbc.Driver"/>
<property name="sonar.jdbc.username" value="sonar"/>
<property name="sonar.jdbc.password" value="sonar"/>
<property name="sonar.findbugs.timeout" value="3600000"/>
<property name="sonar.dynamicAnalysis" value="true"/>
<property name="sonar.java.coveragePlugin" value="cobertura"/>
<property name="sonar.core.codeCoveragePlugin" value="cobertura" />
<property name="sonar.sources" value="src"/>
<property name="sonar.tests" value="test/unit"/>
<property name="sonar.binaries" value="build/test/unit/classes,App/classes"/>
<pathconvert property="sonar.libraries" pathsep="," refid="sonar.classpath"/>
<property name="sonar.exclusions" value="orm/**/*,selenium/**/*,sql/**/*,test/**/*,xml/**/*,xsl/**/*"/>
<property name="sonar.sourceEncoding" value="ISO-8859-1"/>
<property name="sonar.skipPackageDesign" value="true"/>
<property name="sonar.surefire.reportsPath" value="${full.path.reports.testng}/unittest/junitreports"/>
<property name="sonar.cobertura.reportPath" value="${full.path.reports.testng}/unittest/cobertura/coverage.xml"/>
<taskdef uri="antlib:org.sonar.ant" resource="org/sonar/ant/antlib.xml" classpathref="sonar.classpath" />
<sonar:sonar key="${sonar.projectKey}" version="${sonar.projectVersion}" xmlns:sonar="antlib:org.sonar.ant"/>
</target>
错误堆栈跟踪:
Caused by: java.util.concurrent.ExecutionException: edu.umd.cs.findbugs.NoClassesFoundToAnalyzeException: No classes found to analyze in /opt/project/build/test/unit/classes /opt/project/App/classes
at edu.umd.cs.findbugs.FindBugs2.execute(FindBugs2.java:274)
at org.sonar.plugins.findbugs.FindbugsExecutor$FindbugsTask.call(FindbugsExecutor.java:179)
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:724)
总时长:6分25秒
sonar 二进制文件目录中的类总数
find /opt/project/build/test/unit/classes /opt/project/App/classes -name "*.class" |wc -l
7951
以下是Sonar下载的插件版本
Sonar version: 3.5.1
09:29:21.845 INFO .s.b.b.BatchSettings - Load batch settings
09:29:21.987 INFO o.s.h.c.FileCache - User cache: /opt/home/user/.sonar/cache
09:29:21.994 INFO atchPluginRepository - Install plugins
09:29:22.002 INFO b.b.PluginDownloader - Download sonar-findbugs-plugin-1.2.jar
09:29:22.262 INFO b.b.PluginDownloader - Download sonar-issues-report-plugin-1.0.jar
09:29:29.820 INFO b.b.PluginDownloader - Download sonar-timeline-plugin-1.3.jar
09:29:29.878 INFO b.b.PluginDownloader - Download sonar-clirr-plugin-1.1.jar
09:29:29.884 INFO b.b.PluginDownloader - Download sonar-l10n-en-plugin-3.5.1.jar
09:29:29.890 INFO b.b.PluginDownloader - Download sonar-scm-activity-plugin-1.5.jar
09:29:29.964 INFO b.b.PluginDownloader - Download sonar-sonargraph-plugin-3.0.5.jar
09:29:30.006 INFO b.b.PluginDownloader - Download sonar-pdfreport-plugin-1.3.jar
09:29:30.012 INFO b.b.PluginDownloader - Download sonar-cpd-plugin-3.5.1.jar
09:29:30.018 INFO b.b.PluginDownloader - Download sonar-fb-contrib-plugin-1.1.jar
09:29:30.040 INFO b.b.PluginDownloader - Download sonar-pmd-plugin-1.2.jar
09:29:30.107 INFO b.b.PluginDownloader - Download sonar-squid-java-plugin-1.2.jar
09:29:30.144 INFO b.b.PluginDownloader - Download sonar-technicaldebt-plugin-1.2.1.jar
09:29:30.150 INFO b.b.PluginDownloader - Download sonar-email-notifications-plugin-3.5.1.jar
09:29:30.179 INFO b.b.PluginDownloader - Download sonar-useless-code-tracker-plugin-0.5.jar
09:29:30.330 INFO b.b.PluginDownloader - Download sonar-motion-chart-plugin-1.4.jar
09:29:30.441 INFO b.b.PluginDownloader - Download sonar-quality-index-plugin-1.1.3.jar
09:29:30.447 INFO b.b.PluginDownloader - Download sonar-jacoco-plugin-1.2.jar
09:29:30.472 INFO b.b.PluginDownloader - Download sonar-jira-plugin-1.0.jar
09:29:30.547 INFO b.b.PluginDownloader - Download sonar-surefire-plugin-1.2.jar
09:29:30.554 INFO b.b.PluginDownloader - Download sonar-ldap-plugin-1.2.1.jar
09:29:30.565 INFO b.b.PluginDownloader - Download sonar-checkstyle-plugin-1.2.jar
09:29:39.093 INFO b.b.PluginDownloader - Download sonar-java-plugin-1.2.jar
09:29:39.100 INFO b.b.PluginDownloader - Download sonar-core-plugin-3.5.1.jar
09:29:39.113 INFO b.b.PluginDownloader - Download sonar-dbcleaner-plugin-3.5.1.jar
09:29:39.118 INFO b.b.PluginDownloader - Download sonar-cobertura-plugin-1.2.jar
09:29:39.123 INFO b.b.PluginDownloader - Download sonar-design-plugin-3.5.1.jar
09:29:39.989 INFO .s.b.b.TaskContainer - ------------- Executing Project Scan
09:29:40.635 INFO b.b.JdbcDriverHolder - Install JDBC driver
09:29:40.638 INFO b.b.JdbcDriverHolder - Download mysql-connector-java-5.1.18.jar
09:29:40.663 INFO .b.ProjectExclusions - Apply project exclusions
请问有人能解释一下吗..
最佳答案
以防像我这样的人在 Java 9+ 时代以“NoClassesFoundToAnalyze Exception”结束这个问题:
不再支持 Firebugs,因此它不适用于 Java 9+ - use Spotbugs instead .
关于java - Findbugs NoClassesFoundToAnalyze 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22028918/