When attempting to run Findbugs on an Eclipse project I get the following exception. This happens on all projects I've tried, as well as when attempting to run on an individual file.
java.lang.IllegalArgumentException: Attempted to beginRule: P/Application, does not match outer scope rule: MutexSchedulingRule, resource: P/Application
at org.eclipse.core.runtime.Assert.isLegal(Assert.java:63)
at org.eclipse.core.internal.jobs.ThreadJob.illegalPush(ThreadJob.java:134)
at org.eclipse.core.internal.jobs.ThreadJob.push(ThreadJob.java:333)
at org.eclipse.core.internal.jobs.ImplicitJobs.begin(ImplicitJobs.java:85)
at org.eclipse.core.internal.jobs.JobManager.beginRule(JobManager.java:286)
at org.eclipse.core.internal.resources.WorkManager.checkIn(WorkManager.java:118)
at org.eclipse.core.internal.resources.Workspace.prepareOperation(Workspace.java:2285)
at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2342)
at de.tobject.findbugs.reporter.MarkerUtil.createMarkers(MarkerUtil.java:125)
at de.tobject.findbugs.builder.FindBugsWorker.updateBugCollection(FindBugsWorker.java:383)
at de.tobject.findbugs.builder.FindBugsWorker.work(FindBugsWorker.java:227)
at de.tobject.findbugs.actions.FindBugsAction$StartedFromViewJob.runWithProgress(FindBugsAction.java:265)
at de.tobject.findbugs.FindBugsJob.run(FindBugsJob.java:102)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53)
Eclipse details:
eclipse.buildId=I20120810-1300
java.version=1.7.0_03
java.vendor=Oracle Corporation
BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=en_US
Command-line arguments: -os win32 -ws win32 -arch x86_64 -data C:\workspace
Hi,
I'm sorry for not reacting on the bug for so long time.
I can't reproduce this issue. More strangely, I've seen it by myself once, and looking at the code/stack trace I can't really get any idea why 2!=2 is.
if (baseRule != null && rule != null && !baseRule.contains(rule))
illegalPush(rule, baseRule);
!baseRule.contains(rule)...
(MutexSchedulingRule on project A) ! contains project A
project A ! contains project A
path !isprefixof path
paths are equals here, but why we have false???
why...
Andrey
Hi,
I've tried to separate jobs - the error shouldn't happen anymore, but I could introduce new problems. Please check if the newest eclipse-daily build is OK for you.
I will be able tp test it in production env. by the end of this week.
See http://code.google.com/p/findbugs/source/detail?r=14435
Regards,
Andrey
I've tested it on the latest daily build (2.0.2.20120910) and had no problems so far (although I've not tested it extensively) - it looks fixed to me, thanks.
FYI the latest daily build (2.0.2.20120928) fixed the issue for Juno Service Release 1, Build id: 20120920-0800.
Thanks for testing, I've also had no issues so far with Eclipse 3.8.
Hi. this seems to be fixed, but I get something really similar:
An internal error occurred during: "Finding bugs in VavDataTest.java...".
Attempted to beginRule: MultiRule[P/ch.xxx.tests.roboelectric,P/.org.eclipse.jdt.core.external.folders], does not match outer scope rule: MutexSchedulingRule, resource: L/ch.xxx.tests.roboelectric/src/ch/xxx/model/impl/vav/VavDataTest.java
My setup:
- Findbugs 2.0.3
- Eclipse JDT 3.8.2 (bundled in Android Developer Tools 22.3.0)
- Eclipse Platform 4.2.1 (bundled in Android Developer Tools 22.3.0)
- Eclipse RCP 4.2.2 (bundled in Android Developer Tools 22.3.0)
The error occurs in a Testproject that has a dependency on another project + a dependency on an external JAR file, referenced through a build path variable.
Any suggestions or an explanation what the error message actually means would be appreciated.
Kaspar, please can you provide stack trace? Thanks,
Andrey
Hi Andrey
yes, sorry I forgot (just returned from Vacation):
java.lang.IllegalArgumentException: Attempted to beginRule: MultiRule[P/ch.xxx.tests.roboelectric,P/.org.eclipse.jdt.core.external.folders], does not match outer scope rule: MutexSchedulingRule, resource: L/ch.xxx.tests.roboelectric/src/ch/xxx/model/impl/vav/VavDataTest.java
at org.eclipse.core.runtime.Assert.isLegal(Assert.java:63)
at org.eclipse.core.internal.jobs.ThreadJob.illegalPush(ThreadJob.java:134)
at org.eclipse.core.internal.jobs.ThreadJob.push(ThreadJob.java:333)
at org.eclipse.core.internal.jobs.ImplicitJobs.begin(ImplicitJobs.java:85)
at org.eclipse.core.internal.jobs.JobManager.beginRule(JobManager.java:286)
at org.eclipse.core.internal.resources.WorkManager.checkIn(WorkManager.java:118)
at org.eclipse.core.internal.resources.Workspace.prepareOperation(Workspace.java:2282)
at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2339)
at org.eclipse.jdt.internal.core.JavaModelOperation.runOperation(JavaModelOperation.java:793)
at org.eclipse.jdt.internal.core.JavaProject.setRawClasspath(JavaProject.java:3095)
at org.eclipse.jdt.internal.core.JavaProject.setRawClasspath(JavaProject.java:3057)
at org.eclipse.jdt.internal.core.JavaProject.setRawClasspath(JavaProject.java:3110)
at com.android.ide.eclipse.adt.internal.project.LibraryClasspathContainerInitializer.allocateContainer(LibraryClasspathContainerInitializer.java:432)
at com.android.ide.eclipse.adt.internal.project.LibraryClasspathContainerInitializer.allocateLibraryContainer(LibraryClasspathContainerInitializer.java:197)
at com.android.ide.eclipse.adt.internal.project.LibraryClasspathContainerInitializer.initialize(LibraryClasspathContainerInitializer.java:128)
at org.eclipse.jdt.internal.core.JavaModelManager.initializeContainer(JavaModelManager.java:2843)
at org.eclipse.jdt.internal.core.JavaModelManager$11.run(JavaModelManager.java:2749)
at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2344)
at org.eclipse.jdt.internal.core.JavaModelManager.initializeAllContainers(JavaModelManager.java:2789)
at org.eclipse.jdt.internal.core.JavaModelManager.getClasspathContainer(JavaModelManager.java:1873)
at org.eclipse.jdt.core.JavaCore.getClasspathContainer(JavaCore.java:3128)
at org.eclipse.jdt.launching.JavaRuntime.computeDefaultContainerEntries(JavaRuntime.java:1153)
at org.eclipse.jdt.launching.JavaRuntime.resolveRuntimeClasspathEntry(JavaRuntime.java:1112)
at org.eclipse.jdt.internal.launching.DefaultEntryResolver.resolveRuntimeClasspathEntry(DefaultEntryResolver.java:53)
at org.eclipse.jdt.launching.JavaRuntime.resolveRuntimeClasspathEntry(JavaRuntime.java:1117)
at org.eclipse.jdt.launching.JavaRuntime.computeDefaultRuntimeClassPath(JavaRuntime.java:1416)
at de.tobject.findbugs.builder.PDEClassPathGenerator.createJavaClasspath(PDEClassPathGenerator.java:82)
at de.tobject.findbugs.builder.PDEClassPathGenerator.createPluginClassPath(PDEClassPathGenerator.java:122)
at de.tobject.findbugs.builder.PDEClassPathGenerator.computeClassPath(PDEClassPathGenerator.java:66)
at de.tobject.findbugs.builder.FindBugsWorker.createAuxClasspath(FindBugsWorker.java:509)
at de.tobject.findbugs.builder.FindBugsWorker.work(FindBugsWorker.java:183)
at de.tobject.findbugs.actions.FindBugsAction$StartedFromViewJob.runWithProgress(FindBugsAction.java:271)
at de.tobject.findbugs.FindBugsJob.run(FindBugsJob.java:135)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53)