Findbugs with Gradle plugin not working in Java 9

I am transferring my project (several projects in Gradle ) from Java 8 to Java 9 (without using modules until now). I am using the Gradle 4.3 plugin and Findbugs Gradle - I have apply plugin: 'findbugs' in my gradle.build file. I'm addicted

 compile group: 'com.google.code.findbugs', name: 'jsr305', version: '3.0.2' compile group: 'com.google.code.findbugs', name: 'annotations', version: '3.0.1' 

Previously, with java 8 ( open-jdk ) everything worked fine, but when I used java 9 ( oracle - build 9.0.1+11 ), I got the following exception after doing gradle check ( com.example.custom.MyClass is a class from my code): The following errors occurred during the analysis:

 Error scanning com/example/custom/MyClass for referenced classes java.lang.IllegalArgumentException At org.objectweb.asm.ClassReader.<init>(ClassReader.java:170) At org.objectweb.asm.ClassReader.<init>(ClassReader.java:153) At edu.umd.cs.findbugs.asm.FBClassReader.<init>(FBClassReader.java:35) At edu.umd.cs.findbugs.classfile.engine.asm.ClassReaderAnalysisEngine.analyze(ClassReaderAnalysisEngine.java:48) At edu.umd.cs.findbugs.classfile.engine.asm.ClassReaderAnalysisEngine.analyze(ClassReaderAnalysisEngine.java:34) At edu.umd.cs.findbugs.classfile.impl.AnalysisCache.getClassAnalysis(AnalysisCache.java:262) At edu.umd.cs.findbugs.classfile.engine.ClassInfoAnalysisEngine.analyze(ClassInfoAnalysisEngine.java:75) At edu.umd.cs.findbugs.classfile.engine.ClassInfoAnalysisEngine.analyze(ClassInfoAnalysisEngine.java:38) At edu.umd.cs.findbugs.classfile.impl.AnalysisCache.getClassAnalysis(AnalysisCache.java:262) At edu.umd.cs.findbugs.FindBugs2.buildReferencedClassSet(FindBugs2.java:774) At edu.umd.cs.findbugs.FindBugs2.execute(FindBugs2.java:222) At org.gradle.api.plugins.quality.internal.findbugs.FindBugsExecuter.runFindbugs(FindBugsExecuter.java:39) At java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) At java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) At java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) At java.base/java.lang.reflect.Method.invoke(Method.java:564) At org.gradle.process.internal.worker.request.WorkerAction.run(WorkerAction.java:100) At org.gradle.process.internal.worker.request.WorkerAction.runThenStop(WorkerAction.java:83) At java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) At java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) At java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) At java.base/java.lang.reflect.Method.invoke(Method.java:564) At org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35) At org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24) At org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:146) At org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:128) At org.gradle.internal.remote.internal.hub.MessageHub$Handler.run(MessageHub.java:404) At org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63) At org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46) At java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167) At java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641) At org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55) At java.base/java.lang.Thread.run(Thread.java:844) 

This is displayed for every class from my Gradle project (as well as for every class generated by the Hibernate JPA 2 metadata generator). I guess this will be related to puzzle models. However, I do not declare a single module-info.java , so I assume that an automatic module is created for the entire code base and everything is accessible from anywhere.

+5
source share
1 answer

Although findbugs support for Java9 doesn't seem to be progressing even gradually. And there are more posts about this that eventually suggest the use of spotbugs .

 compile 'com.github.spotbugs:spotbugs:3.1.0' 

You will find this migration guide useful for him.


Perhaps you can just try to override ASM 6.0 in your project build using:

 compile 'org.ow2.asm:asm:6.0' 

Strike>

+5
source

Source: https://habr.com/ru/post/1273113/


All Articles