Reputation: 1
I added spotbugs as dependency in my pom.xml.
<dependency>
<groupId>com.github.spotbugs</groupId>
<artifactId>spotbugs</artifactId>
<version>4.5.3</version>
</dependency>
And I used spotbugs's API to scan a specific Java class file. After running the code I got these Exceptions: Unable to get XClass for java/lang/Object, Unable to get XClass for java/util/concurrent/FutureTask, Unable to get XClass for java/lang/String etc... Looks like I didnt include the JDK path correctly. Here is my code:
public class SpotBugsTest {
public static void main(String[] args) {
scanFiles();
}
private static void scanFiles() {
DetectorFactoryCollection detectorFactoryCollection = DetectorFactoryCollection.instance();
ExecutorService service = Executors.newCachedThreadPool();
try (FindBugs2 findBugs = new FindBugs2(service)) {
findBugs.setDetectorFactoryCollection(detectorFactoryCollection);
TextUICommandLine commandLine = new TextUICommandLine();
commandLine.getProject().addFile("D:\\MY_DATA\\codes\\open\\target\\classes\\com\\open\\util\\ThreadPoolUtil.class");
commandLine.getProject().setProjectName("TestProject");
commandLine.getProject().addAuxClasspathEntry("D:\\Dev\\testlibs\\app\\open\\bin\\lib");
commandLine.getProject().addAuxClasspathEntry("D:\\Dev\\Java\\jdk1.8.0_311\\lib");
commandLine.getProject().addAuxClasspathEntry("D:\\Dev\\Java\\jdk1.8.0_311\\jre\\lib");
FindBugs.processCommandLine(commandLine, new String[]{}, findBugs);
boolean justPrintConfiguration = commandLine.justPrintConfiguration();
if (justPrintConfiguration || commandLine.justPrintVersion()) {
Version.printVersion(justPrintConfiguration);
return;
}
// Away we go!
FindBugs.runMain(findBugs, commandLine);
} catch (IOException e) {
throw new RuntimeException(e);
} finally {
service.shutdown();
}
}
}
And here are the Exceptions:
The following errors occurred during analysis:
Error scanning com/open/util/ThreadPoolUtil for referenced classes
java.lang.IllegalArgumentException
At org.objectweb.asm.ClassVisitor.<init>(Unknown Source)
At org.objectweb.asm.ClassVisitor.<init>(Unknown Source)
At edu.umd.cs.findbugs.classfile.engine.ClassParserUsingASM$1.<init>(ClassParserUsingASM.java:552)
At edu.umd.cs.findbugs.classfile.engine.ClassParserUsingASM.parse(ClassParserUsingASM.java:552)
At edu.umd.cs.findbugs.classfile.engine.ClassParserUsingASM.parse(ClassParserUsingASM.java:736)
At edu.umd.cs.findbugs.classfile.engine.ClassInfoAnalysisEngine.analyze(ClassInfoAnalysisEngine.java:79)
At edu.umd.cs.findbugs.classfile.engine.ClassInfoAnalysisEngine.analyze(ClassInfoAnalysisEngine.java:38)
At edu.umd.cs.findbugs.classfile.impl.AnalysisCache.getClassAnalysis(AnalysisCache.java:261)
At edu.umd.cs.findbugs.FindBugs2.buildReferencedClassSet(FindBugs2.java:806)
At edu.umd.cs.findbugs.FindBugs2.execute(FindBugs2.java:249)
At edu.umd.cs.findbugs.FindBugs.runMain(FindBugs.java:395)
At com.open.gateway.util.SpotBugsTest.scanFiles(SpotBugsTest.java:51)
At com.open.gateway.util.SpotBugsTest.main(SpotBugsTest.java:12)
Unable to get XClass for java/util/concurrent/LinkedBlockingQueue
java.lang.IllegalArgumentException
At org.objectweb.asm.ClassVisitor.<init>(Unknown Source)
At org.objectweb.asm.ClassVisitor.<init>(Unknown Source)
At edu.umd.cs.findbugs.classfile.engine.ClassParserUsingASM$1.<init>(ClassParserUsingASM.java:552)
At edu.umd.cs.findbugs.classfile.engine.ClassParserUsingASM.parse(ClassParserUsingASM.java:552)
At edu.umd.cs.findbugs.classfile.engine.ClassParserUsingASM.parse(ClassParserUsingASM.java:736)
At edu.umd.cs.findbugs.classfile.engine.ClassInfoAnalysisEngine.analyze(ClassInfoAnalysisEngine.java:79)
At edu.umd.cs.findbugs.classfile.engine.ClassInfoAnalysisEngine.analyze(ClassInfoAnalysisEngine.java:38)
At edu.umd.cs.findbugs.classfile.impl.AnalysisCache.getClassAnalysis(AnalysisCache.java:261)
At edu.umd.cs.findbugs.ba.XFactory.getXClass(XFactory.java:693)
At edu.umd.cs.findbugs.ba.AnalysisContext.setAppClassList(AnalysisContext.java:975)
At edu.umd.cs.findbugs.FindBugs2.setAppClassList(FindBugs2.java:909)
At edu.umd.cs.findbugs.FindBugs2.execute(FindBugs2.java:252)
At edu.umd.cs.findbugs.FindBugs.runMain(FindBugs.java:395)
At com.open.gateway.util.SpotBugsTest.scanFiles(SpotBugsTest.java:51)
At com.open.gateway.util.SpotBugsTest.main(SpotBugsTest.java:12)
Unable to get XClass for java/lang/Integer
java.lang.IllegalArgumentException
At org.objectweb.asm.ClassVisitor.<init>(Unknown Source)
At org.objectweb.asm.ClassVisitor.<init>(Unknown Source)
At edu.umd.cs.findbugs.classfile.engine.ClassParserUsingASM$1.<init>(ClassParserUsingASM.java:552)
At edu.umd.cs.findbugs.classfile.engine.ClassParserUsingASM.parse(ClassParserUsingASM.java:552)
At edu.umd.cs.findbugs.classfile.engine.ClassParserUsingASM.parse(ClassParserUsingASM.java:736)
At edu.umd.cs.findbugs.classfile.engine.ClassInfoAnalysisEngine.analyze(ClassInfoAnalysisEngine.java:79)
At edu.umd.cs.findbugs.classfile.engine.ClassInfoAnalysisEngine.analyze(ClassInfoAnalysisEngine.java:38)
At edu.umd.cs.findbugs.classfile.impl.AnalysisCache.getClassAnalysis(AnalysisCache.java:261)
At edu.umd.cs.findbugs.ba.XFactory.getXClass(XFactory.java:693)
At edu.umd.cs.findbugs.ba.AnalysisContext.setAppClassList(AnalysisContext.java:975)
At edu.umd.cs.findbugs.FindBugs2.setAppClassList(FindBugs2.java:909)
At edu.umd.cs.findbugs.FindBugs2.execute(FindBugs2.java:252)
At edu.umd.cs.findbugs.FindBugs.runMain(FindBugs.java:395)
At com.open.gateway.util.SpotBugsTest.scanFiles(SpotBugsTest.java:51)
At com.open.gateway.util.SpotBugsTest.main(SpotBugsTest.java:12)
Unable to get XClass for java/lang/Exception
java.lang.IllegalArgumentException
At org.objectweb.asm.ClassVisitor.<init>(Unknown Source)
At org.objectweb.asm.ClassVisitor.<init>(Unknown Source)
At edu.umd.cs.findbugs.classfile.engine.ClassParserUsingASM$1.<init>(ClassParserUsingASM.java:552)
At edu.umd.cs.findbugs.classfile.engine.ClassParserUsingASM.parse(ClassParserUsingASM.java:552)
At edu.umd.cs.findbugs.classfile.engine.ClassParserUsingASM.parse(ClassParserUsingASM.java:736)
At edu.umd.cs.findbugs.classfile.engine.ClassInfoAnalysisEngine.analyze(ClassInfoAnalysisEngine.java:79)
At edu.umd.cs.findbugs.classfile.engine.ClassInfoAnalysisEngine.analyze(ClassInfoAnalysisEngine.java:38)
At edu.umd.cs.findbugs.classfile.impl.AnalysisCache.getClassAnalysis(AnalysisCache.java:261)
At edu.umd.cs.findbugs.ba.XFactory.getXClass(XFactory.java:693)
At edu.umd.cs.findbugs.ba.AnalysisContext.setAppClassList(AnalysisContext.java:975)
At edu.umd.cs.findbugs.FindBugs2.setAppClassList(FindBugs2.java:909)
At edu.umd.cs.findbugs.FindBugs2.execute(FindBugs2.java:252)
At edu.umd.cs.findbugs.FindBugs.runMain(FindBugs.java:395)
At com.open.gateway.util.SpotBugsTest.scanFiles(SpotBugsTest.java:51)
At com.open.gateway.util.SpotBugsTest.main(SpotBugsTest.java:12)
Unable to get XClass for java/util/concurrent/ExecutorService
java.lang.IllegalArgumentException
At org.objectweb.asm.ClassVisitor.<init>(Unknown Source)
At org.objectweb.asm.ClassVisitor.<init>(Unknown Source)
At edu.umd.cs.findbugs.classfile.engine.ClassParserUsingASM$1.<init>(ClassParserUsingASM.java:552)
At edu.umd.cs.findbugs.classfile.engine.ClassParserUsingASM.parse(ClassParserUsingASM.java:552)
At edu.umd.cs.findbugs.classfile.engine.ClassParserUsingASM.parse(ClassParserUsingASM.java:736)
At edu.umd.cs.findbugs.classfile.engine.ClassInfoAnalysisEngine.analyze(ClassInfoAnalysisEngine.java:79)
At edu.umd.cs.findbugs.classfile.engine.ClassInfoAnalysisEngine.analyze(ClassInfoAnalysisEngine.java:38)
At edu.umd.cs.findbugs.classfile.impl.AnalysisCache.getClassAnalysis(AnalysisCache.java:261)
At edu.umd.cs.findbugs.ba.XFactory.getXClass(XFactory.java:693)
At edu.umd.cs.findbugs.ba.AnalysisContext.setAppClassList(AnalysisContext.java:975)
At edu.umd.cs.findbugs.FindBugs2.setAppClassList(FindBugs2.java:909)
At edu.umd.cs.findbugs.FindBugs2.execute(FindBugs2.java:252)
At edu.umd.cs.findbugs.FindBugs.runMain(FindBugs.java:395)
At com.open.gateway.util.SpotBugsTest.scanFiles(SpotBugsTest.java:51)
At com.open.gateway.util.SpotBugsTest.main(SpotBugsTest.java:12)
Unable to get XClass for java/lang/Runtime
java.lang.IllegalArgumentException
At org.objectweb.asm.ClassVisitor.<init>(Unknown Source)
At org.objectweb.asm.ClassVisitor.<init>(Unknown Source)
At edu.umd.cs.findbugs.classfile.engine.ClassParserUsingASM$1.<init>(ClassParserUsingASM.java:552)
At edu.umd.cs.findbugs.classfile.engine.ClassParserUsingASM.parse(ClassParserUsingASM.java:552)
At edu.umd.cs.findbugs.classfile.engine.ClassParserUsingASM.parse(ClassParserUsingASM.java:736)
At edu.umd.cs.findbugs.classfile.engine.ClassInfoAnalysisEngine.analyze(ClassInfoAnalysisEngine.java:79)
At edu.umd.cs.findbugs.classfile.engine.ClassInfoAnalysisEngine.analyze(ClassInfoAnalysisEngine.java:38)
At edu.umd.cs.findbugs.classfile.impl.AnalysisCache.getClassAnalysis(AnalysisCache.java:261)
At edu.umd.cs.findbugs.ba.XFactory.getXClass(XFactory.java:693)
At edu.umd.cs.findbugs.ba.AnalysisContext.setAppClassList(AnalysisContext.java:975)
At edu.umd.cs.findbugs.FindBugs2.setAppClassList(FindBugs2.java:909)
At edu.umd.cs.findbugs.FindBugs2.execute(FindBugs2.java:252)
At edu.umd.cs.findbugs.FindBugs.runMain(FindBugs.java:395)
At com.open.gateway.util.SpotBugsTest.scanFiles(SpotBugsTest.java:51)
At com.open.gateway.util.SpotBugsTest.main(SpotBugsTest.java:12)
Unable to get XClass for java/util/concurrent/TimeUnit
java.lang.IllegalArgumentException
At org.objectweb.asm.ClassVisitor.<init>(Unknown Source)
At org.objectweb.asm.ClassVisitor.<init>(Unknown Source)
At edu.umd.cs.findbugs.classfile.engine.ClassParserUsingASM$1.<init>(ClassParserUsingASM.java:552)
At edu.umd.cs.findbugs.classfile.engine.ClassParserUsingASM.parse(ClassParserUsingASM.java:552)
At edu.umd.cs.findbugs.classfile.engine.ClassParserUsingASM.parse(ClassParserUsingASM.java:736)
At edu.umd.cs.findbugs.classfile.engine.ClassInfoAnalysisEngine.analyze(ClassInfoAnalysisEngine.java:79)
At edu.umd.cs.findbugs.classfile.engine.ClassInfoAnalysisEngine.analyze(ClassInfoAnalysisEngine.java:38)
At edu.umd.cs.findbugs.classfile.impl.AnalysisCache.getClassAnalysis(AnalysisCache.java:261)
At edu.umd.cs.findbugs.ba.XFactory.getXClass(XFactory.java:693)
At edu.umd.cs.findbugs.ba.AnalysisContext.setAppClassList(AnalysisContext.java:975)
At edu.umd.cs.findbugs.FindBugs2.setAppClassList(FindBugs2.java:909)
At edu.umd.cs.findbugs.FindBugs2.execute(FindBugs2.java:252)
At edu.umd.cs.findbugs.FindBugs.runMain(FindBugs.java:395)
At com.open.gateway.util.SpotBugsTest.scanFiles(SpotBugsTest.java:51)
At com.open.gateway.util.SpotBugsTest.main(SpotBugsTest.java:12)
Unable to get XClass for java/lang/IllegalArgumentException
java.lang.IllegalArgumentException
At org.objectweb.asm.ClassVisitor.<init>(Unknown Source)
At org.objectweb.asm.ClassVisitor.<init>(Unknown Source)
At edu.umd.cs.findbugs.classfile.engine.ClassParserUsingASM$1.<init>(ClassParserUsingASM.java:552)
At edu.umd.cs.findbugs.classfile.engine.ClassParserUsingASM.parse(ClassParserUsingASM.java:552)
At edu.umd.cs.findbugs.classfile.engine.ClassParserUsingASM.parse(ClassParserUsingASM.java:736)
At edu.umd.cs.findbugs.classfile.engine.ClassInfoAnalysisEngine.analyze(ClassInfoAnalysisEngine.java:79)
At edu.umd.cs.findbugs.classfile.engine.ClassInfoAnalysisEngine.analyze(ClassInfoAnalysisEngine.java:38)
At edu.umd.cs.findbugs.classfile.impl.AnalysisCache.getClassAnalysis(AnalysisCache.java:261)
At edu.umd.cs.findbugs.ba.XFactory.getXClass(XFactory.java:693)
At edu.umd.cs.findbugs.ba.AnalysisContext.setAppClassList(AnalysisContext.java:975)
At edu.umd.cs.findbugs.FindBugs2.setAppClassList(FindBugs2.java:909)
At edu.umd.cs.findbugs.FindBugs2.execute(FindBugs2.java:252)
At edu.umd.cs.findbugs.FindBugs.runMain(FindBugs.java:395)
At com.open.gateway.util.SpotBugsTest.scanFiles(SpotBugsTest.java:51)
At com.open.gateway.util.SpotBugsTest.main(SpotBugsTest.java:12)
Unable to get XClass for java/util/concurrent/Future
And more exceptios like those
What can i do to fix those exceptions and use findbugs's API to scan some specific Java class files or jars and make an static code analysis ?
Upvotes: 0
Views: 432