Bug 571672: Add spotbugs support to projects

Change-Id: I92b851ed1df3ad7d71a851e81b995076b104947a
diff --git a/plugins/org.eclipse.ease.modules.charting/.project b/plugins/org.eclipse.ease.modules.charting/.project
index 4b1aef5..3134ccb 100644
--- a/plugins/org.eclipse.ease.modules.charting/.project
+++ b/plugins/org.eclipse.ease.modules.charting/.project
@@ -25,10 +25,16 @@
 			<arguments>

 			</arguments>

 		</buildCommand>

+		<buildCommand>

+			<name>edu.umd.cs.findbugs.plugin.eclipse.findbugsBuilder</name>

+			<arguments>

+			</arguments>

+		</buildCommand>

 	</buildSpec>

 	<natures>

 		<nature>org.eclipse.pde.PluginNature</nature>

 		<nature>org.eclipse.jdt.core.javanature</nature>

 		<nature>net.sf.eclipsecs.core.CheckstyleNature</nature>

+		<nature>edu.umd.cs.findbugs.plugin.eclipse.findbugsNature</nature>

 	</natures>

 </projectDescription>

diff --git a/plugins/org.eclipse.ease.modules.charting/.settings/com.github.spotbugs.plugin.eclipse.prefs b/plugins/org.eclipse.ease.modules.charting/.settings/com.github.spotbugs.plugin.eclipse.prefs
new file mode 100644
index 0000000..53e9365
--- /dev/null
+++ b/plugins/org.eclipse.ease.modules.charting/.settings/com.github.spotbugs.plugin.eclipse.prefs
@@ -0,0 +1,2 @@
+dontRemindAboutFullBuild=true

+eclipse.preferences.version=1

diff --git a/plugins/org.eclipse.ease.modules.charting/.settings/edu.umd.cs.findbugs.core.prefs b/plugins/org.eclipse.ease.modules.charting/.settings/edu.umd.cs.findbugs.core.prefs
new file mode 100644
index 0000000..8bf6d5e
--- /dev/null
+++ b/plugins/org.eclipse.ease.modules.charting/.settings/edu.umd.cs.findbugs.core.prefs
@@ -0,0 +1,145 @@
+#SpotBugs User Preferences

+#Thu Mar 11 18:38:53 CET 2021

+detectorExplicitSerialization=ExplicitSerialization|true

+detectorMultithreadedInstanceAccess=MultithreadedInstanceAccess|true

+detectorConfusionBetweenInheritedAndOuterMethod=ConfusionBetweenInheritedAndOuterMethod|true

+detectorWrongMapIterator=WrongMapIterator|true

+detectorUnnecessaryMath=UnnecessaryMath|true

+detectorUselessSubclassMethod=UselessSubclassMethod|false

+filter_settings=Low|BAD_PRACTICE,CORRECTNESS,EXPERIMENTAL,I18N,MALICIOUS_CODE,MT_CORRECTNESS,PERFORMANCE,SECURITY,STYLE|false|20

+detectorURLProblems=URLProblems|true

+detectorIteratorIdioms=IteratorIdioms|true

+detectorMutableEnum=MutableEnum|true

+detectorFindNonShortCircuit=FindNonShortCircuit|true

+detectorSynchronizeAndNullCheckField=SynchronizeAndNullCheckField|true

+detectorVolatileUsage=VolatileUsage|true

+detectorFindNakedNotify=FindNakedNotify|true

+detectorFindUninitializedGet=FindUninitializedGet|true

+detectorFindUseOfNonSerializableValue=FindUseOfNonSerializableValue|true

+detectorFindJSR166LockMonitorenter=FindJSR166LockMonitorenter|true

+detectorQuestionableBooleanAssignment=QuestionableBooleanAssignment|true

+detectorSwitchFallthrough=SwitchFallthrough|true

+detectorFindLocalSelfAssignment2=FindLocalSelfAssignment2|true

+detectorConfusedInheritance=ConfusedInheritance|true

+detectorSynchronizationOnSharedBuiltinConstant=SynchronizationOnSharedBuiltinConstant|true

+detectorMutableStaticFields=MutableStaticFields|true

+detectorInvalidJUnitTest=InvalidJUnitTest|true

+detectorInfiniteLoop=InfiniteLoop|true

+detectorFindRunInvocations=FindRunInvocations|true

+detectorBadSyntaxForRegularExpression=BadSyntaxForRegularExpression|true

+detectorXMLFactoryBypass=XMLFactoryBypass|true

+detectorFindOpenStream=FindOpenStream|true

+detectorCheckExpectedWarnings=CheckExpectedWarnings|false

+detectorHugeSharedStringConstants=HugeSharedStringConstants|true

+detectorLostLoggerDueToWeakReference=LostLoggerDueToWeakReference|true

+detectorStringConcatenation=StringConcatenation|true

+detectorLoadOfKnownNullValue=LoadOfKnownNullValue|true

+detectorFinalizerNullsFields=FinalizerNullsFields|true

+detectorFindFieldSelfAssignment=FindFieldSelfAssignment|true

+detectorInefficientToArray=InefficientToArray|false

+detectorDontCatchIllegalMonitorStateException=DontCatchIllegalMonitorStateException|true

+detectorInconsistentAnnotations=InconsistentAnnotations|true

+detectorBadlyOverriddenAdapter=BadlyOverriddenAdapter|true

+detectorInstantiateStaticClass=InstantiateStaticClass|true

+detectorCheckRelaxingNullnessAnnotation=CheckRelaxingNullnessAnnotation|true

+detectorMethodReturnCheck=MethodReturnCheck|true

+detectorEqualsOperandShouldHaveClassCompatibleWithThis=EqualsOperandShouldHaveClassCompatibleWithThis|true

+detectorFindDoubleCheck=FindDoubleCheck|true

+detectorFindBadForLoop=FindBadForLoop|true

+detectorDefaultEncodingDetector=DefaultEncodingDetector|true

+detectorFindInconsistentSync2=FindInconsistentSync2|true

+detectorFindSpinLoop=FindSpinLoop|true

+detectorFindMaskedFields=FindMaskedFields|true

+detectorBooleanReturnNull=BooleanReturnNull|true

+detectorFindUnsyncGet=FindUnsyncGet|true

+detectorCrossSiteScripting=CrossSiteScripting|true

+detectorDroppedException=DroppedException|true

+detectorFindDeadLocalStores=FindDeadLocalStores|true

+detectorCheckImmutableAnnotation=CheckImmutableAnnotation|true

+detectorInfiniteRecursiveLoop=InfiniteRecursiveLoop|true

+detectorFindRefComparison=FindRefComparison|true

+detectorFindRoughConstants=FindRoughConstants|true

+detectorMutableLock=MutableLock|true

+detectorFindNullDeref=FindNullDeref|true

+detectorFindReturnRef=FindReturnRef|true

+detectorSynchronizeOnClassLiteralNotGetClass=SynchronizeOnClassLiteralNotGetClass|true

+detectorFindUselessControlFlow=FindUselessControlFlow|true

+detectorOverridingEqualsNotSymmetrical=OverridingEqualsNotSymmetrical|true

+detectorIDivResultCastToDouble=IDivResultCastToDouble|true

+detectorReadOfInstanceFieldInMethodInvokedByConstructorInSuperclass=ReadOfInstanceFieldInMethodInvokedByConstructorInSuperclass|true

+detectorFindSelfComparison=FindSelfComparison|true

+detectorFindFloatEquality=FindFloatEquality|true

+detectorFindComparatorProblems=FindComparatorProblems|true

+detectorRepeatedConditionals=RepeatedConditionals|true

+filter_settings_neg=NOISE|

+detectorInefficientMemberAccess=InefficientMemberAccess|false

+detectorFindUncalledPrivateMethods=FindUncalledPrivateMethods|true

+detectorNumberConstructor=NumberConstructor|true

+detectorDontAssertInstanceofInTests=DontAssertInstanceofInTests|true

+detectorFindFinalizeInvocations=FindFinalizeInvocations|true

+detectorFindNullDerefsInvolvingNonShortCircuitEvaluation=FindNullDerefsInvolvingNonShortCircuitEvaluation|true

+detectorDontIgnoreResultOfPutIfAbsent=DontIgnoreResultOfPutIfAbsent|true

+detectorFindUnconditionalWait=FindUnconditionalWait|true

+detectorFindTwoLockWait=FindTwoLockWait|true

+detectorFindSleepWithLockHeld=FindSleepWithLockHeld|true

+detectorFindUnreleasedLock=FindUnreleasedLock|true

+detectorInefficientIndexOf=InefficientIndexOf|false

+detectorDoInsideDoPrivileged=DoInsideDoPrivileged|true

+detectorFindEmptySynchronizedBlock=FindEmptySynchronizedBlock|true

+detectorOverridingMethodsMustInvokeSuperDetector=OverridingMethodsMustInvokeSuperDetector|true

+detectorWaitInLoop=WaitInLoop|true

+detectorIntCast2LongAsInstant=IntCast2LongAsInstant|true

+detectorBadUseOfReturnValue=BadUseOfReturnValue|true

+detectorFindSqlInjection=FindSqlInjection|true

+detectorUnreadFields=UnreadFields|true

+detectorSynchronizingOnContentsOfFieldToProtectField=SynchronizingOnContentsOfFieldToProtectField|true

+detectorFindUselessObjects=FindUselessObjects|true

+detectorBadAppletConstructor=BadAppletConstructor|false

+detectorInheritanceUnsafeGetResource=InheritanceUnsafeGetResource|true

+detectorSerializableIdiom=SerializableIdiom|true

+detectorNaming=Naming|true

+detectorNoteUnconditionalParamDerefs=NoteUnconditionalParamDerefs|true

+detectorFormatStringChecker=FormatStringChecker|true

+detectorSuspiciousThreadInterrupted=SuspiciousThreadInterrupted|true

+detectorEmptyZipFileEntry=EmptyZipFileEntry|false

+detectorFindCircularDependencies=FindCircularDependencies|false

+detectorPreferZeroLengthArrays=PreferZeroLengthArrays|true

+detectorAtomicityProblem=AtomicityProblem|true

+detectorRuntimeExceptionCapture=RuntimeExceptionCapture|true

+detectorInitializationChain=InitializationChain|true

+detectorInitializeNonnullFieldsInConstructor=InitializeNonnullFieldsInConstructor|true

+detectorOptionalReturnNull=OptionalReturnNull|true

+detectorStartInConstructor=StartInConstructor|true

+detectorFindUnsatisfiedObligation=FindUnsatisfiedObligation|true

+detectorRedundantConditions=RedundantConditions|true

+effort=max

+detectorRedundantInterfaces=RedundantInterfaces|true

+detectorDuplicateBranches=DuplicateBranches|true

+detectorCheckTypeQualifiers=CheckTypeQualifiers|true

+detectorComparatorIdiom=ComparatorIdiom|true

+detectorFindBadCast2=FindBadCast2|true

+detectorFindMismatchedWaitOrNotify=FindMismatchedWaitOrNotify|true

+excludefilter0=../../releng/org.eclipse.ease.modules.releng/spotbugs/spotbugs_filter.xml|true

+detectorBadResultSetAccess=BadResultSetAccess|true

+detectorIncompatMask=IncompatMask|true

+detectorCovariantArrayAssignment=CovariantArrayAssignment|false

+detectorDumbMethodInvocations=DumbMethodInvocations|true

+run_at_full_build=true

+detectorStaticCalendarDetector=StaticCalendarDetector|true

+detectorUncallableMethodOfAnonymousClass=UncallableMethodOfAnonymousClass|true

+detectorVarArgsProblems=VarArgsProblems|true

+detectorInefficientInitializationInsideLoop=InefficientInitializationInsideLoop|false

+detectorCloneIdiom=CloneIdiom|true

+detectorFindHEmismatch=FindHEmismatch|true

+detectorAppendingToAnObjectOutputStream=AppendingToAnObjectOutputStream|true

+detectorFindSelfComparison2=FindSelfComparison2|true

+detectorLazyInit=LazyInit|true

+detectorFindUnrelatedTypesInGenericContainer=FindUnrelatedTypesInGenericContainer|true

+detectorDontUseEnum=DontUseEnum|true

+detectorFindPuzzlers=FindPuzzlers|true

+detectorCallToUnsupportedMethod=CallToUnsupportedMethod|false

+detectorSuperfluousInstanceOf=SuperfluousInstanceOf|true

+detectorReadReturnShouldBeChecked=ReadReturnShouldBeChecked|true

+detector_threshold=3

+detectorPublicSemaphores=PublicSemaphores|false

+detectorDumbMethods=DumbMethods|true

diff --git a/plugins/org.eclipse.ease.modules.help/.project b/plugins/org.eclipse.ease.modules.help/.project
index af7a886..5d3165b 100644
--- a/plugins/org.eclipse.ease.modules.help/.project
+++ b/plugins/org.eclipse.ease.modules.help/.project
@@ -25,10 +25,16 @@
 			<arguments>
 			</arguments>
 		</buildCommand>
+		<buildCommand>
+			<name>edu.umd.cs.findbugs.plugin.eclipse.findbugsBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
 	</buildSpec>
 	<natures>
 		<nature>org.eclipse.pde.PluginNature</nature>
 		<nature>org.eclipse.jdt.core.javanature</nature>
 		<nature>net.sf.eclipsecs.core.CheckstyleNature</nature>
+		<nature>edu.umd.cs.findbugs.plugin.eclipse.findbugsNature</nature>
 	</natures>
 </projectDescription>
diff --git a/plugins/org.eclipse.ease.modules.help/.settings/com.github.spotbugs.plugin.eclipse.prefs b/plugins/org.eclipse.ease.modules.help/.settings/com.github.spotbugs.plugin.eclipse.prefs
new file mode 100644
index 0000000..53e9365
--- /dev/null
+++ b/plugins/org.eclipse.ease.modules.help/.settings/com.github.spotbugs.plugin.eclipse.prefs
@@ -0,0 +1,2 @@
+dontRemindAboutFullBuild=true

+eclipse.preferences.version=1

diff --git a/plugins/org.eclipse.ease.modules.help/.settings/edu.umd.cs.findbugs.core.prefs b/plugins/org.eclipse.ease.modules.help/.settings/edu.umd.cs.findbugs.core.prefs
new file mode 100644
index 0000000..8bf6d5e
--- /dev/null
+++ b/plugins/org.eclipse.ease.modules.help/.settings/edu.umd.cs.findbugs.core.prefs
@@ -0,0 +1,145 @@
+#SpotBugs User Preferences

+#Thu Mar 11 18:38:53 CET 2021

+detectorExplicitSerialization=ExplicitSerialization|true

+detectorMultithreadedInstanceAccess=MultithreadedInstanceAccess|true

+detectorConfusionBetweenInheritedAndOuterMethod=ConfusionBetweenInheritedAndOuterMethod|true

+detectorWrongMapIterator=WrongMapIterator|true

+detectorUnnecessaryMath=UnnecessaryMath|true

+detectorUselessSubclassMethod=UselessSubclassMethod|false

+filter_settings=Low|BAD_PRACTICE,CORRECTNESS,EXPERIMENTAL,I18N,MALICIOUS_CODE,MT_CORRECTNESS,PERFORMANCE,SECURITY,STYLE|false|20

+detectorURLProblems=URLProblems|true

+detectorIteratorIdioms=IteratorIdioms|true

+detectorMutableEnum=MutableEnum|true

+detectorFindNonShortCircuit=FindNonShortCircuit|true

+detectorSynchronizeAndNullCheckField=SynchronizeAndNullCheckField|true

+detectorVolatileUsage=VolatileUsage|true

+detectorFindNakedNotify=FindNakedNotify|true

+detectorFindUninitializedGet=FindUninitializedGet|true

+detectorFindUseOfNonSerializableValue=FindUseOfNonSerializableValue|true

+detectorFindJSR166LockMonitorenter=FindJSR166LockMonitorenter|true

+detectorQuestionableBooleanAssignment=QuestionableBooleanAssignment|true

+detectorSwitchFallthrough=SwitchFallthrough|true

+detectorFindLocalSelfAssignment2=FindLocalSelfAssignment2|true

+detectorConfusedInheritance=ConfusedInheritance|true

+detectorSynchronizationOnSharedBuiltinConstant=SynchronizationOnSharedBuiltinConstant|true

+detectorMutableStaticFields=MutableStaticFields|true

+detectorInvalidJUnitTest=InvalidJUnitTest|true

+detectorInfiniteLoop=InfiniteLoop|true

+detectorFindRunInvocations=FindRunInvocations|true

+detectorBadSyntaxForRegularExpression=BadSyntaxForRegularExpression|true

+detectorXMLFactoryBypass=XMLFactoryBypass|true

+detectorFindOpenStream=FindOpenStream|true

+detectorCheckExpectedWarnings=CheckExpectedWarnings|false

+detectorHugeSharedStringConstants=HugeSharedStringConstants|true

+detectorLostLoggerDueToWeakReference=LostLoggerDueToWeakReference|true

+detectorStringConcatenation=StringConcatenation|true

+detectorLoadOfKnownNullValue=LoadOfKnownNullValue|true

+detectorFinalizerNullsFields=FinalizerNullsFields|true

+detectorFindFieldSelfAssignment=FindFieldSelfAssignment|true

+detectorInefficientToArray=InefficientToArray|false

+detectorDontCatchIllegalMonitorStateException=DontCatchIllegalMonitorStateException|true

+detectorInconsistentAnnotations=InconsistentAnnotations|true

+detectorBadlyOverriddenAdapter=BadlyOverriddenAdapter|true

+detectorInstantiateStaticClass=InstantiateStaticClass|true

+detectorCheckRelaxingNullnessAnnotation=CheckRelaxingNullnessAnnotation|true

+detectorMethodReturnCheck=MethodReturnCheck|true

+detectorEqualsOperandShouldHaveClassCompatibleWithThis=EqualsOperandShouldHaveClassCompatibleWithThis|true

+detectorFindDoubleCheck=FindDoubleCheck|true

+detectorFindBadForLoop=FindBadForLoop|true

+detectorDefaultEncodingDetector=DefaultEncodingDetector|true

+detectorFindInconsistentSync2=FindInconsistentSync2|true

+detectorFindSpinLoop=FindSpinLoop|true

+detectorFindMaskedFields=FindMaskedFields|true

+detectorBooleanReturnNull=BooleanReturnNull|true

+detectorFindUnsyncGet=FindUnsyncGet|true

+detectorCrossSiteScripting=CrossSiteScripting|true

+detectorDroppedException=DroppedException|true

+detectorFindDeadLocalStores=FindDeadLocalStores|true

+detectorCheckImmutableAnnotation=CheckImmutableAnnotation|true

+detectorInfiniteRecursiveLoop=InfiniteRecursiveLoop|true

+detectorFindRefComparison=FindRefComparison|true

+detectorFindRoughConstants=FindRoughConstants|true

+detectorMutableLock=MutableLock|true

+detectorFindNullDeref=FindNullDeref|true

+detectorFindReturnRef=FindReturnRef|true

+detectorSynchronizeOnClassLiteralNotGetClass=SynchronizeOnClassLiteralNotGetClass|true

+detectorFindUselessControlFlow=FindUselessControlFlow|true

+detectorOverridingEqualsNotSymmetrical=OverridingEqualsNotSymmetrical|true

+detectorIDivResultCastToDouble=IDivResultCastToDouble|true

+detectorReadOfInstanceFieldInMethodInvokedByConstructorInSuperclass=ReadOfInstanceFieldInMethodInvokedByConstructorInSuperclass|true

+detectorFindSelfComparison=FindSelfComparison|true

+detectorFindFloatEquality=FindFloatEquality|true

+detectorFindComparatorProblems=FindComparatorProblems|true

+detectorRepeatedConditionals=RepeatedConditionals|true

+filter_settings_neg=NOISE|

+detectorInefficientMemberAccess=InefficientMemberAccess|false

+detectorFindUncalledPrivateMethods=FindUncalledPrivateMethods|true

+detectorNumberConstructor=NumberConstructor|true

+detectorDontAssertInstanceofInTests=DontAssertInstanceofInTests|true

+detectorFindFinalizeInvocations=FindFinalizeInvocations|true

+detectorFindNullDerefsInvolvingNonShortCircuitEvaluation=FindNullDerefsInvolvingNonShortCircuitEvaluation|true

+detectorDontIgnoreResultOfPutIfAbsent=DontIgnoreResultOfPutIfAbsent|true

+detectorFindUnconditionalWait=FindUnconditionalWait|true

+detectorFindTwoLockWait=FindTwoLockWait|true

+detectorFindSleepWithLockHeld=FindSleepWithLockHeld|true

+detectorFindUnreleasedLock=FindUnreleasedLock|true

+detectorInefficientIndexOf=InefficientIndexOf|false

+detectorDoInsideDoPrivileged=DoInsideDoPrivileged|true

+detectorFindEmptySynchronizedBlock=FindEmptySynchronizedBlock|true

+detectorOverridingMethodsMustInvokeSuperDetector=OverridingMethodsMustInvokeSuperDetector|true

+detectorWaitInLoop=WaitInLoop|true

+detectorIntCast2LongAsInstant=IntCast2LongAsInstant|true

+detectorBadUseOfReturnValue=BadUseOfReturnValue|true

+detectorFindSqlInjection=FindSqlInjection|true

+detectorUnreadFields=UnreadFields|true

+detectorSynchronizingOnContentsOfFieldToProtectField=SynchronizingOnContentsOfFieldToProtectField|true

+detectorFindUselessObjects=FindUselessObjects|true

+detectorBadAppletConstructor=BadAppletConstructor|false

+detectorInheritanceUnsafeGetResource=InheritanceUnsafeGetResource|true

+detectorSerializableIdiom=SerializableIdiom|true

+detectorNaming=Naming|true

+detectorNoteUnconditionalParamDerefs=NoteUnconditionalParamDerefs|true

+detectorFormatStringChecker=FormatStringChecker|true

+detectorSuspiciousThreadInterrupted=SuspiciousThreadInterrupted|true

+detectorEmptyZipFileEntry=EmptyZipFileEntry|false

+detectorFindCircularDependencies=FindCircularDependencies|false

+detectorPreferZeroLengthArrays=PreferZeroLengthArrays|true

+detectorAtomicityProblem=AtomicityProblem|true

+detectorRuntimeExceptionCapture=RuntimeExceptionCapture|true

+detectorInitializationChain=InitializationChain|true

+detectorInitializeNonnullFieldsInConstructor=InitializeNonnullFieldsInConstructor|true

+detectorOptionalReturnNull=OptionalReturnNull|true

+detectorStartInConstructor=StartInConstructor|true

+detectorFindUnsatisfiedObligation=FindUnsatisfiedObligation|true

+detectorRedundantConditions=RedundantConditions|true

+effort=max

+detectorRedundantInterfaces=RedundantInterfaces|true

+detectorDuplicateBranches=DuplicateBranches|true

+detectorCheckTypeQualifiers=CheckTypeQualifiers|true

+detectorComparatorIdiom=ComparatorIdiom|true

+detectorFindBadCast2=FindBadCast2|true

+detectorFindMismatchedWaitOrNotify=FindMismatchedWaitOrNotify|true

+excludefilter0=../../releng/org.eclipse.ease.modules.releng/spotbugs/spotbugs_filter.xml|true

+detectorBadResultSetAccess=BadResultSetAccess|true

+detectorIncompatMask=IncompatMask|true

+detectorCovariantArrayAssignment=CovariantArrayAssignment|false

+detectorDumbMethodInvocations=DumbMethodInvocations|true

+run_at_full_build=true

+detectorStaticCalendarDetector=StaticCalendarDetector|true

+detectorUncallableMethodOfAnonymousClass=UncallableMethodOfAnonymousClass|true

+detectorVarArgsProblems=VarArgsProblems|true

+detectorInefficientInitializationInsideLoop=InefficientInitializationInsideLoop|false

+detectorCloneIdiom=CloneIdiom|true

+detectorFindHEmismatch=FindHEmismatch|true

+detectorAppendingToAnObjectOutputStream=AppendingToAnObjectOutputStream|true

+detectorFindSelfComparison2=FindSelfComparison2|true

+detectorLazyInit=LazyInit|true

+detectorFindUnrelatedTypesInGenericContainer=FindUnrelatedTypesInGenericContainer|true

+detectorDontUseEnum=DontUseEnum|true

+detectorFindPuzzlers=FindPuzzlers|true

+detectorCallToUnsupportedMethod=CallToUnsupportedMethod|false

+detectorSuperfluousInstanceOf=SuperfluousInstanceOf|true

+detectorReadReturnShouldBeChecked=ReadReturnShouldBeChecked|true

+detector_threshold=3

+detectorPublicSemaphores=PublicSemaphores|false

+detectorDumbMethods=DumbMethods|true

diff --git a/plugins/org.eclipse.ease.modules.jvm/.project b/plugins/org.eclipse.ease.modules.jvm/.project
index 17373a4..86c9546 100644
--- a/plugins/org.eclipse.ease.modules.jvm/.project
+++ b/plugins/org.eclipse.ease.modules.jvm/.project
@@ -25,10 +25,16 @@
 			<arguments>
 			</arguments>
 		</buildCommand>
+		<buildCommand>
+			<name>edu.umd.cs.findbugs.plugin.eclipse.findbugsBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
 	</buildSpec>
 	<natures>
 		<nature>org.eclipse.pde.PluginNature</nature>
 		<nature>org.eclipse.jdt.core.javanature</nature>
 		<nature>net.sf.eclipsecs.core.CheckstyleNature</nature>
+		<nature>edu.umd.cs.findbugs.plugin.eclipse.findbugsNature</nature>
 	</natures>
 </projectDescription>
diff --git a/plugins/org.eclipse.ease.modules.jvm/.settings/com.github.spotbugs.plugin.eclipse.prefs b/plugins/org.eclipse.ease.modules.jvm/.settings/com.github.spotbugs.plugin.eclipse.prefs
new file mode 100644
index 0000000..53e9365
--- /dev/null
+++ b/plugins/org.eclipse.ease.modules.jvm/.settings/com.github.spotbugs.plugin.eclipse.prefs
@@ -0,0 +1,2 @@
+dontRemindAboutFullBuild=true

+eclipse.preferences.version=1

diff --git a/plugins/org.eclipse.ease.modules.jvm/.settings/edu.umd.cs.findbugs.core.prefs b/plugins/org.eclipse.ease.modules.jvm/.settings/edu.umd.cs.findbugs.core.prefs
new file mode 100644
index 0000000..8bf6d5e
--- /dev/null
+++ b/plugins/org.eclipse.ease.modules.jvm/.settings/edu.umd.cs.findbugs.core.prefs
@@ -0,0 +1,145 @@
+#SpotBugs User Preferences

+#Thu Mar 11 18:38:53 CET 2021

+detectorExplicitSerialization=ExplicitSerialization|true

+detectorMultithreadedInstanceAccess=MultithreadedInstanceAccess|true

+detectorConfusionBetweenInheritedAndOuterMethod=ConfusionBetweenInheritedAndOuterMethod|true

+detectorWrongMapIterator=WrongMapIterator|true

+detectorUnnecessaryMath=UnnecessaryMath|true

+detectorUselessSubclassMethod=UselessSubclassMethod|false

+filter_settings=Low|BAD_PRACTICE,CORRECTNESS,EXPERIMENTAL,I18N,MALICIOUS_CODE,MT_CORRECTNESS,PERFORMANCE,SECURITY,STYLE|false|20

+detectorURLProblems=URLProblems|true

+detectorIteratorIdioms=IteratorIdioms|true

+detectorMutableEnum=MutableEnum|true

+detectorFindNonShortCircuit=FindNonShortCircuit|true

+detectorSynchronizeAndNullCheckField=SynchronizeAndNullCheckField|true

+detectorVolatileUsage=VolatileUsage|true

+detectorFindNakedNotify=FindNakedNotify|true

+detectorFindUninitializedGet=FindUninitializedGet|true

+detectorFindUseOfNonSerializableValue=FindUseOfNonSerializableValue|true

+detectorFindJSR166LockMonitorenter=FindJSR166LockMonitorenter|true

+detectorQuestionableBooleanAssignment=QuestionableBooleanAssignment|true

+detectorSwitchFallthrough=SwitchFallthrough|true

+detectorFindLocalSelfAssignment2=FindLocalSelfAssignment2|true

+detectorConfusedInheritance=ConfusedInheritance|true

+detectorSynchronizationOnSharedBuiltinConstant=SynchronizationOnSharedBuiltinConstant|true

+detectorMutableStaticFields=MutableStaticFields|true

+detectorInvalidJUnitTest=InvalidJUnitTest|true

+detectorInfiniteLoop=InfiniteLoop|true

+detectorFindRunInvocations=FindRunInvocations|true

+detectorBadSyntaxForRegularExpression=BadSyntaxForRegularExpression|true

+detectorXMLFactoryBypass=XMLFactoryBypass|true

+detectorFindOpenStream=FindOpenStream|true

+detectorCheckExpectedWarnings=CheckExpectedWarnings|false

+detectorHugeSharedStringConstants=HugeSharedStringConstants|true

+detectorLostLoggerDueToWeakReference=LostLoggerDueToWeakReference|true

+detectorStringConcatenation=StringConcatenation|true

+detectorLoadOfKnownNullValue=LoadOfKnownNullValue|true

+detectorFinalizerNullsFields=FinalizerNullsFields|true

+detectorFindFieldSelfAssignment=FindFieldSelfAssignment|true

+detectorInefficientToArray=InefficientToArray|false

+detectorDontCatchIllegalMonitorStateException=DontCatchIllegalMonitorStateException|true

+detectorInconsistentAnnotations=InconsistentAnnotations|true

+detectorBadlyOverriddenAdapter=BadlyOverriddenAdapter|true

+detectorInstantiateStaticClass=InstantiateStaticClass|true

+detectorCheckRelaxingNullnessAnnotation=CheckRelaxingNullnessAnnotation|true

+detectorMethodReturnCheck=MethodReturnCheck|true

+detectorEqualsOperandShouldHaveClassCompatibleWithThis=EqualsOperandShouldHaveClassCompatibleWithThis|true

+detectorFindDoubleCheck=FindDoubleCheck|true

+detectorFindBadForLoop=FindBadForLoop|true

+detectorDefaultEncodingDetector=DefaultEncodingDetector|true

+detectorFindInconsistentSync2=FindInconsistentSync2|true

+detectorFindSpinLoop=FindSpinLoop|true

+detectorFindMaskedFields=FindMaskedFields|true

+detectorBooleanReturnNull=BooleanReturnNull|true

+detectorFindUnsyncGet=FindUnsyncGet|true

+detectorCrossSiteScripting=CrossSiteScripting|true

+detectorDroppedException=DroppedException|true

+detectorFindDeadLocalStores=FindDeadLocalStores|true

+detectorCheckImmutableAnnotation=CheckImmutableAnnotation|true

+detectorInfiniteRecursiveLoop=InfiniteRecursiveLoop|true

+detectorFindRefComparison=FindRefComparison|true

+detectorFindRoughConstants=FindRoughConstants|true

+detectorMutableLock=MutableLock|true

+detectorFindNullDeref=FindNullDeref|true

+detectorFindReturnRef=FindReturnRef|true

+detectorSynchronizeOnClassLiteralNotGetClass=SynchronizeOnClassLiteralNotGetClass|true

+detectorFindUselessControlFlow=FindUselessControlFlow|true

+detectorOverridingEqualsNotSymmetrical=OverridingEqualsNotSymmetrical|true

+detectorIDivResultCastToDouble=IDivResultCastToDouble|true

+detectorReadOfInstanceFieldInMethodInvokedByConstructorInSuperclass=ReadOfInstanceFieldInMethodInvokedByConstructorInSuperclass|true

+detectorFindSelfComparison=FindSelfComparison|true

+detectorFindFloatEquality=FindFloatEquality|true

+detectorFindComparatorProblems=FindComparatorProblems|true

+detectorRepeatedConditionals=RepeatedConditionals|true

+filter_settings_neg=NOISE|

+detectorInefficientMemberAccess=InefficientMemberAccess|false

+detectorFindUncalledPrivateMethods=FindUncalledPrivateMethods|true

+detectorNumberConstructor=NumberConstructor|true

+detectorDontAssertInstanceofInTests=DontAssertInstanceofInTests|true

+detectorFindFinalizeInvocations=FindFinalizeInvocations|true

+detectorFindNullDerefsInvolvingNonShortCircuitEvaluation=FindNullDerefsInvolvingNonShortCircuitEvaluation|true

+detectorDontIgnoreResultOfPutIfAbsent=DontIgnoreResultOfPutIfAbsent|true

+detectorFindUnconditionalWait=FindUnconditionalWait|true

+detectorFindTwoLockWait=FindTwoLockWait|true

+detectorFindSleepWithLockHeld=FindSleepWithLockHeld|true

+detectorFindUnreleasedLock=FindUnreleasedLock|true

+detectorInefficientIndexOf=InefficientIndexOf|false

+detectorDoInsideDoPrivileged=DoInsideDoPrivileged|true

+detectorFindEmptySynchronizedBlock=FindEmptySynchronizedBlock|true

+detectorOverridingMethodsMustInvokeSuperDetector=OverridingMethodsMustInvokeSuperDetector|true

+detectorWaitInLoop=WaitInLoop|true

+detectorIntCast2LongAsInstant=IntCast2LongAsInstant|true

+detectorBadUseOfReturnValue=BadUseOfReturnValue|true

+detectorFindSqlInjection=FindSqlInjection|true

+detectorUnreadFields=UnreadFields|true

+detectorSynchronizingOnContentsOfFieldToProtectField=SynchronizingOnContentsOfFieldToProtectField|true

+detectorFindUselessObjects=FindUselessObjects|true

+detectorBadAppletConstructor=BadAppletConstructor|false

+detectorInheritanceUnsafeGetResource=InheritanceUnsafeGetResource|true

+detectorSerializableIdiom=SerializableIdiom|true

+detectorNaming=Naming|true

+detectorNoteUnconditionalParamDerefs=NoteUnconditionalParamDerefs|true

+detectorFormatStringChecker=FormatStringChecker|true

+detectorSuspiciousThreadInterrupted=SuspiciousThreadInterrupted|true

+detectorEmptyZipFileEntry=EmptyZipFileEntry|false

+detectorFindCircularDependencies=FindCircularDependencies|false

+detectorPreferZeroLengthArrays=PreferZeroLengthArrays|true

+detectorAtomicityProblem=AtomicityProblem|true

+detectorRuntimeExceptionCapture=RuntimeExceptionCapture|true

+detectorInitializationChain=InitializationChain|true

+detectorInitializeNonnullFieldsInConstructor=InitializeNonnullFieldsInConstructor|true

+detectorOptionalReturnNull=OptionalReturnNull|true

+detectorStartInConstructor=StartInConstructor|true

+detectorFindUnsatisfiedObligation=FindUnsatisfiedObligation|true

+detectorRedundantConditions=RedundantConditions|true

+effort=max

+detectorRedundantInterfaces=RedundantInterfaces|true

+detectorDuplicateBranches=DuplicateBranches|true

+detectorCheckTypeQualifiers=CheckTypeQualifiers|true

+detectorComparatorIdiom=ComparatorIdiom|true

+detectorFindBadCast2=FindBadCast2|true

+detectorFindMismatchedWaitOrNotify=FindMismatchedWaitOrNotify|true

+excludefilter0=../../releng/org.eclipse.ease.modules.releng/spotbugs/spotbugs_filter.xml|true

+detectorBadResultSetAccess=BadResultSetAccess|true

+detectorIncompatMask=IncompatMask|true

+detectorCovariantArrayAssignment=CovariantArrayAssignment|false

+detectorDumbMethodInvocations=DumbMethodInvocations|true

+run_at_full_build=true

+detectorStaticCalendarDetector=StaticCalendarDetector|true

+detectorUncallableMethodOfAnonymousClass=UncallableMethodOfAnonymousClass|true

+detectorVarArgsProblems=VarArgsProblems|true

+detectorInefficientInitializationInsideLoop=InefficientInitializationInsideLoop|false

+detectorCloneIdiom=CloneIdiom|true

+detectorFindHEmismatch=FindHEmismatch|true

+detectorAppendingToAnObjectOutputStream=AppendingToAnObjectOutputStream|true

+detectorFindSelfComparison2=FindSelfComparison2|true

+detectorLazyInit=LazyInit|true

+detectorFindUnrelatedTypesInGenericContainer=FindUnrelatedTypesInGenericContainer|true

+detectorDontUseEnum=DontUseEnum|true

+detectorFindPuzzlers=FindPuzzlers|true

+detectorCallToUnsupportedMethod=CallToUnsupportedMethod|false

+detectorSuperfluousInstanceOf=SuperfluousInstanceOf|true

+detectorReadReturnShouldBeChecked=ReadReturnShouldBeChecked|true

+detector_threshold=3

+detectorPublicSemaphores=PublicSemaphores|false

+detectorDumbMethods=DumbMethods|true

diff --git a/plugins/org.eclipse.ease.modules.modeling.ui/.project b/plugins/org.eclipse.ease.modules.modeling.ui/.project
index 095a49f..89b59f8 100644
--- a/plugins/org.eclipse.ease.modules.modeling.ui/.project
+++ b/plugins/org.eclipse.ease.modules.modeling.ui/.project
@@ -25,10 +25,16 @@
 			<arguments>

 			</arguments>

 		</buildCommand>

+		<buildCommand>

+			<name>edu.umd.cs.findbugs.plugin.eclipse.findbugsBuilder</name>

+			<arguments>

+			</arguments>

+		</buildCommand>

 	</buildSpec>

 	<natures>

 		<nature>org.eclipse.pde.PluginNature</nature>

 		<nature>org.eclipse.jdt.core.javanature</nature>

 		<nature>net.sf.eclipsecs.core.CheckstyleNature</nature>

+		<nature>edu.umd.cs.findbugs.plugin.eclipse.findbugsNature</nature>

 	</natures>

 </projectDescription>

diff --git a/plugins/org.eclipse.ease.modules.modeling.ui/.settings/com.github.spotbugs.plugin.eclipse.prefs b/plugins/org.eclipse.ease.modules.modeling.ui/.settings/com.github.spotbugs.plugin.eclipse.prefs
new file mode 100644
index 0000000..53e9365
--- /dev/null
+++ b/plugins/org.eclipse.ease.modules.modeling.ui/.settings/com.github.spotbugs.plugin.eclipse.prefs
@@ -0,0 +1,2 @@
+dontRemindAboutFullBuild=true

+eclipse.preferences.version=1

diff --git a/plugins/org.eclipse.ease.modules.modeling.ui/.settings/edu.umd.cs.findbugs.core.prefs b/plugins/org.eclipse.ease.modules.modeling.ui/.settings/edu.umd.cs.findbugs.core.prefs
new file mode 100644
index 0000000..8bf6d5e
--- /dev/null
+++ b/plugins/org.eclipse.ease.modules.modeling.ui/.settings/edu.umd.cs.findbugs.core.prefs
@@ -0,0 +1,145 @@
+#SpotBugs User Preferences

+#Thu Mar 11 18:38:53 CET 2021

+detectorExplicitSerialization=ExplicitSerialization|true

+detectorMultithreadedInstanceAccess=MultithreadedInstanceAccess|true

+detectorConfusionBetweenInheritedAndOuterMethod=ConfusionBetweenInheritedAndOuterMethod|true

+detectorWrongMapIterator=WrongMapIterator|true

+detectorUnnecessaryMath=UnnecessaryMath|true

+detectorUselessSubclassMethod=UselessSubclassMethod|false

+filter_settings=Low|BAD_PRACTICE,CORRECTNESS,EXPERIMENTAL,I18N,MALICIOUS_CODE,MT_CORRECTNESS,PERFORMANCE,SECURITY,STYLE|false|20

+detectorURLProblems=URLProblems|true

+detectorIteratorIdioms=IteratorIdioms|true

+detectorMutableEnum=MutableEnum|true

+detectorFindNonShortCircuit=FindNonShortCircuit|true

+detectorSynchronizeAndNullCheckField=SynchronizeAndNullCheckField|true

+detectorVolatileUsage=VolatileUsage|true

+detectorFindNakedNotify=FindNakedNotify|true

+detectorFindUninitializedGet=FindUninitializedGet|true

+detectorFindUseOfNonSerializableValue=FindUseOfNonSerializableValue|true

+detectorFindJSR166LockMonitorenter=FindJSR166LockMonitorenter|true

+detectorQuestionableBooleanAssignment=QuestionableBooleanAssignment|true

+detectorSwitchFallthrough=SwitchFallthrough|true

+detectorFindLocalSelfAssignment2=FindLocalSelfAssignment2|true

+detectorConfusedInheritance=ConfusedInheritance|true

+detectorSynchronizationOnSharedBuiltinConstant=SynchronizationOnSharedBuiltinConstant|true

+detectorMutableStaticFields=MutableStaticFields|true

+detectorInvalidJUnitTest=InvalidJUnitTest|true

+detectorInfiniteLoop=InfiniteLoop|true

+detectorFindRunInvocations=FindRunInvocations|true

+detectorBadSyntaxForRegularExpression=BadSyntaxForRegularExpression|true

+detectorXMLFactoryBypass=XMLFactoryBypass|true

+detectorFindOpenStream=FindOpenStream|true

+detectorCheckExpectedWarnings=CheckExpectedWarnings|false

+detectorHugeSharedStringConstants=HugeSharedStringConstants|true

+detectorLostLoggerDueToWeakReference=LostLoggerDueToWeakReference|true

+detectorStringConcatenation=StringConcatenation|true

+detectorLoadOfKnownNullValue=LoadOfKnownNullValue|true

+detectorFinalizerNullsFields=FinalizerNullsFields|true

+detectorFindFieldSelfAssignment=FindFieldSelfAssignment|true

+detectorInefficientToArray=InefficientToArray|false

+detectorDontCatchIllegalMonitorStateException=DontCatchIllegalMonitorStateException|true

+detectorInconsistentAnnotations=InconsistentAnnotations|true

+detectorBadlyOverriddenAdapter=BadlyOverriddenAdapter|true

+detectorInstantiateStaticClass=InstantiateStaticClass|true

+detectorCheckRelaxingNullnessAnnotation=CheckRelaxingNullnessAnnotation|true

+detectorMethodReturnCheck=MethodReturnCheck|true

+detectorEqualsOperandShouldHaveClassCompatibleWithThis=EqualsOperandShouldHaveClassCompatibleWithThis|true

+detectorFindDoubleCheck=FindDoubleCheck|true

+detectorFindBadForLoop=FindBadForLoop|true

+detectorDefaultEncodingDetector=DefaultEncodingDetector|true

+detectorFindInconsistentSync2=FindInconsistentSync2|true

+detectorFindSpinLoop=FindSpinLoop|true

+detectorFindMaskedFields=FindMaskedFields|true

+detectorBooleanReturnNull=BooleanReturnNull|true

+detectorFindUnsyncGet=FindUnsyncGet|true

+detectorCrossSiteScripting=CrossSiteScripting|true

+detectorDroppedException=DroppedException|true

+detectorFindDeadLocalStores=FindDeadLocalStores|true

+detectorCheckImmutableAnnotation=CheckImmutableAnnotation|true

+detectorInfiniteRecursiveLoop=InfiniteRecursiveLoop|true

+detectorFindRefComparison=FindRefComparison|true

+detectorFindRoughConstants=FindRoughConstants|true

+detectorMutableLock=MutableLock|true

+detectorFindNullDeref=FindNullDeref|true

+detectorFindReturnRef=FindReturnRef|true

+detectorSynchronizeOnClassLiteralNotGetClass=SynchronizeOnClassLiteralNotGetClass|true

+detectorFindUselessControlFlow=FindUselessControlFlow|true

+detectorOverridingEqualsNotSymmetrical=OverridingEqualsNotSymmetrical|true

+detectorIDivResultCastToDouble=IDivResultCastToDouble|true

+detectorReadOfInstanceFieldInMethodInvokedByConstructorInSuperclass=ReadOfInstanceFieldInMethodInvokedByConstructorInSuperclass|true

+detectorFindSelfComparison=FindSelfComparison|true

+detectorFindFloatEquality=FindFloatEquality|true

+detectorFindComparatorProblems=FindComparatorProblems|true

+detectorRepeatedConditionals=RepeatedConditionals|true

+filter_settings_neg=NOISE|

+detectorInefficientMemberAccess=InefficientMemberAccess|false

+detectorFindUncalledPrivateMethods=FindUncalledPrivateMethods|true

+detectorNumberConstructor=NumberConstructor|true

+detectorDontAssertInstanceofInTests=DontAssertInstanceofInTests|true

+detectorFindFinalizeInvocations=FindFinalizeInvocations|true

+detectorFindNullDerefsInvolvingNonShortCircuitEvaluation=FindNullDerefsInvolvingNonShortCircuitEvaluation|true

+detectorDontIgnoreResultOfPutIfAbsent=DontIgnoreResultOfPutIfAbsent|true

+detectorFindUnconditionalWait=FindUnconditionalWait|true

+detectorFindTwoLockWait=FindTwoLockWait|true

+detectorFindSleepWithLockHeld=FindSleepWithLockHeld|true

+detectorFindUnreleasedLock=FindUnreleasedLock|true

+detectorInefficientIndexOf=InefficientIndexOf|false

+detectorDoInsideDoPrivileged=DoInsideDoPrivileged|true

+detectorFindEmptySynchronizedBlock=FindEmptySynchronizedBlock|true

+detectorOverridingMethodsMustInvokeSuperDetector=OverridingMethodsMustInvokeSuperDetector|true

+detectorWaitInLoop=WaitInLoop|true

+detectorIntCast2LongAsInstant=IntCast2LongAsInstant|true

+detectorBadUseOfReturnValue=BadUseOfReturnValue|true

+detectorFindSqlInjection=FindSqlInjection|true

+detectorUnreadFields=UnreadFields|true

+detectorSynchronizingOnContentsOfFieldToProtectField=SynchronizingOnContentsOfFieldToProtectField|true

+detectorFindUselessObjects=FindUselessObjects|true

+detectorBadAppletConstructor=BadAppletConstructor|false

+detectorInheritanceUnsafeGetResource=InheritanceUnsafeGetResource|true

+detectorSerializableIdiom=SerializableIdiom|true

+detectorNaming=Naming|true

+detectorNoteUnconditionalParamDerefs=NoteUnconditionalParamDerefs|true

+detectorFormatStringChecker=FormatStringChecker|true

+detectorSuspiciousThreadInterrupted=SuspiciousThreadInterrupted|true

+detectorEmptyZipFileEntry=EmptyZipFileEntry|false

+detectorFindCircularDependencies=FindCircularDependencies|false

+detectorPreferZeroLengthArrays=PreferZeroLengthArrays|true

+detectorAtomicityProblem=AtomicityProblem|true

+detectorRuntimeExceptionCapture=RuntimeExceptionCapture|true

+detectorInitializationChain=InitializationChain|true

+detectorInitializeNonnullFieldsInConstructor=InitializeNonnullFieldsInConstructor|true

+detectorOptionalReturnNull=OptionalReturnNull|true

+detectorStartInConstructor=StartInConstructor|true

+detectorFindUnsatisfiedObligation=FindUnsatisfiedObligation|true

+detectorRedundantConditions=RedundantConditions|true

+effort=max

+detectorRedundantInterfaces=RedundantInterfaces|true

+detectorDuplicateBranches=DuplicateBranches|true

+detectorCheckTypeQualifiers=CheckTypeQualifiers|true

+detectorComparatorIdiom=ComparatorIdiom|true

+detectorFindBadCast2=FindBadCast2|true

+detectorFindMismatchedWaitOrNotify=FindMismatchedWaitOrNotify|true

+excludefilter0=../../releng/org.eclipse.ease.modules.releng/spotbugs/spotbugs_filter.xml|true

+detectorBadResultSetAccess=BadResultSetAccess|true

+detectorIncompatMask=IncompatMask|true

+detectorCovariantArrayAssignment=CovariantArrayAssignment|false

+detectorDumbMethodInvocations=DumbMethodInvocations|true

+run_at_full_build=true

+detectorStaticCalendarDetector=StaticCalendarDetector|true

+detectorUncallableMethodOfAnonymousClass=UncallableMethodOfAnonymousClass|true

+detectorVarArgsProblems=VarArgsProblems|true

+detectorInefficientInitializationInsideLoop=InefficientInitializationInsideLoop|false

+detectorCloneIdiom=CloneIdiom|true

+detectorFindHEmismatch=FindHEmismatch|true

+detectorAppendingToAnObjectOutputStream=AppendingToAnObjectOutputStream|true

+detectorFindSelfComparison2=FindSelfComparison2|true

+detectorLazyInit=LazyInit|true

+detectorFindUnrelatedTypesInGenericContainer=FindUnrelatedTypesInGenericContainer|true

+detectorDontUseEnum=DontUseEnum|true

+detectorFindPuzzlers=FindPuzzlers|true

+detectorCallToUnsupportedMethod=CallToUnsupportedMethod|false

+detectorSuperfluousInstanceOf=SuperfluousInstanceOf|true

+detectorReadReturnShouldBeChecked=ReadReturnShouldBeChecked|true

+detector_threshold=3

+detectorPublicSemaphores=PublicSemaphores|false

+detectorDumbMethods=DumbMethods|true

diff --git a/plugins/org.eclipse.ease.modules.modeling/.project b/plugins/org.eclipse.ease.modules.modeling/.project
index 605ed43..e71a089 100644
--- a/plugins/org.eclipse.ease.modules.modeling/.project
+++ b/plugins/org.eclipse.ease.modules.modeling/.project
@@ -25,10 +25,16 @@
 			<arguments>
 			</arguments>
 		</buildCommand>
+		<buildCommand>
+			<name>edu.umd.cs.findbugs.plugin.eclipse.findbugsBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
 	</buildSpec>
 	<natures>
 		<nature>org.eclipse.pde.PluginNature</nature>
 		<nature>org.eclipse.jdt.core.javanature</nature>
 		<nature>net.sf.eclipsecs.core.CheckstyleNature</nature>
+		<nature>edu.umd.cs.findbugs.plugin.eclipse.findbugsNature</nature>
 	</natures>
 </projectDescription>
diff --git a/plugins/org.eclipse.ease.modules.modeling/.settings/com.github.spotbugs.plugin.eclipse.prefs b/plugins/org.eclipse.ease.modules.modeling/.settings/com.github.spotbugs.plugin.eclipse.prefs
new file mode 100644
index 0000000..53e9365
--- /dev/null
+++ b/plugins/org.eclipse.ease.modules.modeling/.settings/com.github.spotbugs.plugin.eclipse.prefs
@@ -0,0 +1,2 @@
+dontRemindAboutFullBuild=true

+eclipse.preferences.version=1

diff --git a/plugins/org.eclipse.ease.modules.modeling/.settings/edu.umd.cs.findbugs.core.prefs b/plugins/org.eclipse.ease.modules.modeling/.settings/edu.umd.cs.findbugs.core.prefs
new file mode 100644
index 0000000..8bf6d5e
--- /dev/null
+++ b/plugins/org.eclipse.ease.modules.modeling/.settings/edu.umd.cs.findbugs.core.prefs
@@ -0,0 +1,145 @@
+#SpotBugs User Preferences

+#Thu Mar 11 18:38:53 CET 2021

+detectorExplicitSerialization=ExplicitSerialization|true

+detectorMultithreadedInstanceAccess=MultithreadedInstanceAccess|true

+detectorConfusionBetweenInheritedAndOuterMethod=ConfusionBetweenInheritedAndOuterMethod|true

+detectorWrongMapIterator=WrongMapIterator|true

+detectorUnnecessaryMath=UnnecessaryMath|true

+detectorUselessSubclassMethod=UselessSubclassMethod|false

+filter_settings=Low|BAD_PRACTICE,CORRECTNESS,EXPERIMENTAL,I18N,MALICIOUS_CODE,MT_CORRECTNESS,PERFORMANCE,SECURITY,STYLE|false|20

+detectorURLProblems=URLProblems|true

+detectorIteratorIdioms=IteratorIdioms|true

+detectorMutableEnum=MutableEnum|true

+detectorFindNonShortCircuit=FindNonShortCircuit|true

+detectorSynchronizeAndNullCheckField=SynchronizeAndNullCheckField|true

+detectorVolatileUsage=VolatileUsage|true

+detectorFindNakedNotify=FindNakedNotify|true

+detectorFindUninitializedGet=FindUninitializedGet|true

+detectorFindUseOfNonSerializableValue=FindUseOfNonSerializableValue|true

+detectorFindJSR166LockMonitorenter=FindJSR166LockMonitorenter|true

+detectorQuestionableBooleanAssignment=QuestionableBooleanAssignment|true

+detectorSwitchFallthrough=SwitchFallthrough|true

+detectorFindLocalSelfAssignment2=FindLocalSelfAssignment2|true

+detectorConfusedInheritance=ConfusedInheritance|true

+detectorSynchronizationOnSharedBuiltinConstant=SynchronizationOnSharedBuiltinConstant|true

+detectorMutableStaticFields=MutableStaticFields|true

+detectorInvalidJUnitTest=InvalidJUnitTest|true

+detectorInfiniteLoop=InfiniteLoop|true

+detectorFindRunInvocations=FindRunInvocations|true

+detectorBadSyntaxForRegularExpression=BadSyntaxForRegularExpression|true

+detectorXMLFactoryBypass=XMLFactoryBypass|true

+detectorFindOpenStream=FindOpenStream|true

+detectorCheckExpectedWarnings=CheckExpectedWarnings|false

+detectorHugeSharedStringConstants=HugeSharedStringConstants|true

+detectorLostLoggerDueToWeakReference=LostLoggerDueToWeakReference|true

+detectorStringConcatenation=StringConcatenation|true

+detectorLoadOfKnownNullValue=LoadOfKnownNullValue|true

+detectorFinalizerNullsFields=FinalizerNullsFields|true

+detectorFindFieldSelfAssignment=FindFieldSelfAssignment|true

+detectorInefficientToArray=InefficientToArray|false

+detectorDontCatchIllegalMonitorStateException=DontCatchIllegalMonitorStateException|true

+detectorInconsistentAnnotations=InconsistentAnnotations|true

+detectorBadlyOverriddenAdapter=BadlyOverriddenAdapter|true

+detectorInstantiateStaticClass=InstantiateStaticClass|true

+detectorCheckRelaxingNullnessAnnotation=CheckRelaxingNullnessAnnotation|true

+detectorMethodReturnCheck=MethodReturnCheck|true

+detectorEqualsOperandShouldHaveClassCompatibleWithThis=EqualsOperandShouldHaveClassCompatibleWithThis|true

+detectorFindDoubleCheck=FindDoubleCheck|true

+detectorFindBadForLoop=FindBadForLoop|true

+detectorDefaultEncodingDetector=DefaultEncodingDetector|true

+detectorFindInconsistentSync2=FindInconsistentSync2|true

+detectorFindSpinLoop=FindSpinLoop|true

+detectorFindMaskedFields=FindMaskedFields|true

+detectorBooleanReturnNull=BooleanReturnNull|true

+detectorFindUnsyncGet=FindUnsyncGet|true

+detectorCrossSiteScripting=CrossSiteScripting|true

+detectorDroppedException=DroppedException|true

+detectorFindDeadLocalStores=FindDeadLocalStores|true

+detectorCheckImmutableAnnotation=CheckImmutableAnnotation|true

+detectorInfiniteRecursiveLoop=InfiniteRecursiveLoop|true

+detectorFindRefComparison=FindRefComparison|true

+detectorFindRoughConstants=FindRoughConstants|true

+detectorMutableLock=MutableLock|true

+detectorFindNullDeref=FindNullDeref|true

+detectorFindReturnRef=FindReturnRef|true

+detectorSynchronizeOnClassLiteralNotGetClass=SynchronizeOnClassLiteralNotGetClass|true

+detectorFindUselessControlFlow=FindUselessControlFlow|true

+detectorOverridingEqualsNotSymmetrical=OverridingEqualsNotSymmetrical|true

+detectorIDivResultCastToDouble=IDivResultCastToDouble|true

+detectorReadOfInstanceFieldInMethodInvokedByConstructorInSuperclass=ReadOfInstanceFieldInMethodInvokedByConstructorInSuperclass|true

+detectorFindSelfComparison=FindSelfComparison|true

+detectorFindFloatEquality=FindFloatEquality|true

+detectorFindComparatorProblems=FindComparatorProblems|true

+detectorRepeatedConditionals=RepeatedConditionals|true

+filter_settings_neg=NOISE|

+detectorInefficientMemberAccess=InefficientMemberAccess|false

+detectorFindUncalledPrivateMethods=FindUncalledPrivateMethods|true

+detectorNumberConstructor=NumberConstructor|true

+detectorDontAssertInstanceofInTests=DontAssertInstanceofInTests|true

+detectorFindFinalizeInvocations=FindFinalizeInvocations|true

+detectorFindNullDerefsInvolvingNonShortCircuitEvaluation=FindNullDerefsInvolvingNonShortCircuitEvaluation|true

+detectorDontIgnoreResultOfPutIfAbsent=DontIgnoreResultOfPutIfAbsent|true

+detectorFindUnconditionalWait=FindUnconditionalWait|true

+detectorFindTwoLockWait=FindTwoLockWait|true

+detectorFindSleepWithLockHeld=FindSleepWithLockHeld|true

+detectorFindUnreleasedLock=FindUnreleasedLock|true

+detectorInefficientIndexOf=InefficientIndexOf|false

+detectorDoInsideDoPrivileged=DoInsideDoPrivileged|true

+detectorFindEmptySynchronizedBlock=FindEmptySynchronizedBlock|true

+detectorOverridingMethodsMustInvokeSuperDetector=OverridingMethodsMustInvokeSuperDetector|true

+detectorWaitInLoop=WaitInLoop|true

+detectorIntCast2LongAsInstant=IntCast2LongAsInstant|true

+detectorBadUseOfReturnValue=BadUseOfReturnValue|true

+detectorFindSqlInjection=FindSqlInjection|true

+detectorUnreadFields=UnreadFields|true

+detectorSynchronizingOnContentsOfFieldToProtectField=SynchronizingOnContentsOfFieldToProtectField|true

+detectorFindUselessObjects=FindUselessObjects|true

+detectorBadAppletConstructor=BadAppletConstructor|false

+detectorInheritanceUnsafeGetResource=InheritanceUnsafeGetResource|true

+detectorSerializableIdiom=SerializableIdiom|true

+detectorNaming=Naming|true

+detectorNoteUnconditionalParamDerefs=NoteUnconditionalParamDerefs|true

+detectorFormatStringChecker=FormatStringChecker|true

+detectorSuspiciousThreadInterrupted=SuspiciousThreadInterrupted|true

+detectorEmptyZipFileEntry=EmptyZipFileEntry|false

+detectorFindCircularDependencies=FindCircularDependencies|false

+detectorPreferZeroLengthArrays=PreferZeroLengthArrays|true

+detectorAtomicityProblem=AtomicityProblem|true

+detectorRuntimeExceptionCapture=RuntimeExceptionCapture|true

+detectorInitializationChain=InitializationChain|true

+detectorInitializeNonnullFieldsInConstructor=InitializeNonnullFieldsInConstructor|true

+detectorOptionalReturnNull=OptionalReturnNull|true

+detectorStartInConstructor=StartInConstructor|true

+detectorFindUnsatisfiedObligation=FindUnsatisfiedObligation|true

+detectorRedundantConditions=RedundantConditions|true

+effort=max

+detectorRedundantInterfaces=RedundantInterfaces|true

+detectorDuplicateBranches=DuplicateBranches|true

+detectorCheckTypeQualifiers=CheckTypeQualifiers|true

+detectorComparatorIdiom=ComparatorIdiom|true

+detectorFindBadCast2=FindBadCast2|true

+detectorFindMismatchedWaitOrNotify=FindMismatchedWaitOrNotify|true

+excludefilter0=../../releng/org.eclipse.ease.modules.releng/spotbugs/spotbugs_filter.xml|true

+detectorBadResultSetAccess=BadResultSetAccess|true

+detectorIncompatMask=IncompatMask|true

+detectorCovariantArrayAssignment=CovariantArrayAssignment|false

+detectorDumbMethodInvocations=DumbMethodInvocations|true

+run_at_full_build=true

+detectorStaticCalendarDetector=StaticCalendarDetector|true

+detectorUncallableMethodOfAnonymousClass=UncallableMethodOfAnonymousClass|true

+detectorVarArgsProblems=VarArgsProblems|true

+detectorInefficientInitializationInsideLoop=InefficientInitializationInsideLoop|false

+detectorCloneIdiom=CloneIdiom|true

+detectorFindHEmismatch=FindHEmismatch|true

+detectorAppendingToAnObjectOutputStream=AppendingToAnObjectOutputStream|true

+detectorFindSelfComparison2=FindSelfComparison2|true

+detectorLazyInit=LazyInit|true

+detectorFindUnrelatedTypesInGenericContainer=FindUnrelatedTypesInGenericContainer|true

+detectorDontUseEnum=DontUseEnum|true

+detectorFindPuzzlers=FindPuzzlers|true

+detectorCallToUnsupportedMethod=CallToUnsupportedMethod|false

+detectorSuperfluousInstanceOf=SuperfluousInstanceOf|true

+detectorReadReturnShouldBeChecked=ReadReturnShouldBeChecked|true

+detector_threshold=3

+detectorPublicSemaphores=PublicSemaphores|false

+detectorDumbMethods=DumbMethods|true

diff --git a/plugins/org.eclipse.ease.modules.platform/.project b/plugins/org.eclipse.ease.modules.platform/.project
index 4c5568e..1136f8d 100644
--- a/plugins/org.eclipse.ease.modules.platform/.project
+++ b/plugins/org.eclipse.ease.modules.platform/.project
@@ -25,10 +25,16 @@
 			<arguments>
 			</arguments>
 		</buildCommand>
+		<buildCommand>
+			<name>edu.umd.cs.findbugs.plugin.eclipse.findbugsBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
 	</buildSpec>
 	<natures>
 		<nature>org.eclipse.pde.PluginNature</nature>
 		<nature>org.eclipse.jdt.core.javanature</nature>
 		<nature>net.sf.eclipsecs.core.CheckstyleNature</nature>
+		<nature>edu.umd.cs.findbugs.plugin.eclipse.findbugsNature</nature>
 	</natures>
 </projectDescription>
diff --git a/plugins/org.eclipse.ease.modules.platform/.settings/com.github.spotbugs.plugin.eclipse.prefs b/plugins/org.eclipse.ease.modules.platform/.settings/com.github.spotbugs.plugin.eclipse.prefs
new file mode 100644
index 0000000..53e9365
--- /dev/null
+++ b/plugins/org.eclipse.ease.modules.platform/.settings/com.github.spotbugs.plugin.eclipse.prefs
@@ -0,0 +1,2 @@
+dontRemindAboutFullBuild=true

+eclipse.preferences.version=1

diff --git a/plugins/org.eclipse.ease.modules.platform/.settings/edu.umd.cs.findbugs.core.prefs b/plugins/org.eclipse.ease.modules.platform/.settings/edu.umd.cs.findbugs.core.prefs
new file mode 100644
index 0000000..8bf6d5e
--- /dev/null
+++ b/plugins/org.eclipse.ease.modules.platform/.settings/edu.umd.cs.findbugs.core.prefs
@@ -0,0 +1,145 @@
+#SpotBugs User Preferences

+#Thu Mar 11 18:38:53 CET 2021

+detectorExplicitSerialization=ExplicitSerialization|true

+detectorMultithreadedInstanceAccess=MultithreadedInstanceAccess|true

+detectorConfusionBetweenInheritedAndOuterMethod=ConfusionBetweenInheritedAndOuterMethod|true

+detectorWrongMapIterator=WrongMapIterator|true

+detectorUnnecessaryMath=UnnecessaryMath|true

+detectorUselessSubclassMethod=UselessSubclassMethod|false

+filter_settings=Low|BAD_PRACTICE,CORRECTNESS,EXPERIMENTAL,I18N,MALICIOUS_CODE,MT_CORRECTNESS,PERFORMANCE,SECURITY,STYLE|false|20

+detectorURLProblems=URLProblems|true

+detectorIteratorIdioms=IteratorIdioms|true

+detectorMutableEnum=MutableEnum|true

+detectorFindNonShortCircuit=FindNonShortCircuit|true

+detectorSynchronizeAndNullCheckField=SynchronizeAndNullCheckField|true

+detectorVolatileUsage=VolatileUsage|true

+detectorFindNakedNotify=FindNakedNotify|true

+detectorFindUninitializedGet=FindUninitializedGet|true

+detectorFindUseOfNonSerializableValue=FindUseOfNonSerializableValue|true

+detectorFindJSR166LockMonitorenter=FindJSR166LockMonitorenter|true

+detectorQuestionableBooleanAssignment=QuestionableBooleanAssignment|true

+detectorSwitchFallthrough=SwitchFallthrough|true

+detectorFindLocalSelfAssignment2=FindLocalSelfAssignment2|true

+detectorConfusedInheritance=ConfusedInheritance|true

+detectorSynchronizationOnSharedBuiltinConstant=SynchronizationOnSharedBuiltinConstant|true

+detectorMutableStaticFields=MutableStaticFields|true

+detectorInvalidJUnitTest=InvalidJUnitTest|true

+detectorInfiniteLoop=InfiniteLoop|true

+detectorFindRunInvocations=FindRunInvocations|true

+detectorBadSyntaxForRegularExpression=BadSyntaxForRegularExpression|true

+detectorXMLFactoryBypass=XMLFactoryBypass|true

+detectorFindOpenStream=FindOpenStream|true

+detectorCheckExpectedWarnings=CheckExpectedWarnings|false

+detectorHugeSharedStringConstants=HugeSharedStringConstants|true

+detectorLostLoggerDueToWeakReference=LostLoggerDueToWeakReference|true

+detectorStringConcatenation=StringConcatenation|true

+detectorLoadOfKnownNullValue=LoadOfKnownNullValue|true

+detectorFinalizerNullsFields=FinalizerNullsFields|true

+detectorFindFieldSelfAssignment=FindFieldSelfAssignment|true

+detectorInefficientToArray=InefficientToArray|false

+detectorDontCatchIllegalMonitorStateException=DontCatchIllegalMonitorStateException|true

+detectorInconsistentAnnotations=InconsistentAnnotations|true

+detectorBadlyOverriddenAdapter=BadlyOverriddenAdapter|true

+detectorInstantiateStaticClass=InstantiateStaticClass|true

+detectorCheckRelaxingNullnessAnnotation=CheckRelaxingNullnessAnnotation|true

+detectorMethodReturnCheck=MethodReturnCheck|true

+detectorEqualsOperandShouldHaveClassCompatibleWithThis=EqualsOperandShouldHaveClassCompatibleWithThis|true

+detectorFindDoubleCheck=FindDoubleCheck|true

+detectorFindBadForLoop=FindBadForLoop|true

+detectorDefaultEncodingDetector=DefaultEncodingDetector|true

+detectorFindInconsistentSync2=FindInconsistentSync2|true

+detectorFindSpinLoop=FindSpinLoop|true

+detectorFindMaskedFields=FindMaskedFields|true

+detectorBooleanReturnNull=BooleanReturnNull|true

+detectorFindUnsyncGet=FindUnsyncGet|true

+detectorCrossSiteScripting=CrossSiteScripting|true

+detectorDroppedException=DroppedException|true

+detectorFindDeadLocalStores=FindDeadLocalStores|true

+detectorCheckImmutableAnnotation=CheckImmutableAnnotation|true

+detectorInfiniteRecursiveLoop=InfiniteRecursiveLoop|true

+detectorFindRefComparison=FindRefComparison|true

+detectorFindRoughConstants=FindRoughConstants|true

+detectorMutableLock=MutableLock|true

+detectorFindNullDeref=FindNullDeref|true

+detectorFindReturnRef=FindReturnRef|true

+detectorSynchronizeOnClassLiteralNotGetClass=SynchronizeOnClassLiteralNotGetClass|true

+detectorFindUselessControlFlow=FindUselessControlFlow|true

+detectorOverridingEqualsNotSymmetrical=OverridingEqualsNotSymmetrical|true

+detectorIDivResultCastToDouble=IDivResultCastToDouble|true

+detectorReadOfInstanceFieldInMethodInvokedByConstructorInSuperclass=ReadOfInstanceFieldInMethodInvokedByConstructorInSuperclass|true

+detectorFindSelfComparison=FindSelfComparison|true

+detectorFindFloatEquality=FindFloatEquality|true

+detectorFindComparatorProblems=FindComparatorProblems|true

+detectorRepeatedConditionals=RepeatedConditionals|true

+filter_settings_neg=NOISE|

+detectorInefficientMemberAccess=InefficientMemberAccess|false

+detectorFindUncalledPrivateMethods=FindUncalledPrivateMethods|true

+detectorNumberConstructor=NumberConstructor|true

+detectorDontAssertInstanceofInTests=DontAssertInstanceofInTests|true

+detectorFindFinalizeInvocations=FindFinalizeInvocations|true

+detectorFindNullDerefsInvolvingNonShortCircuitEvaluation=FindNullDerefsInvolvingNonShortCircuitEvaluation|true

+detectorDontIgnoreResultOfPutIfAbsent=DontIgnoreResultOfPutIfAbsent|true

+detectorFindUnconditionalWait=FindUnconditionalWait|true

+detectorFindTwoLockWait=FindTwoLockWait|true

+detectorFindSleepWithLockHeld=FindSleepWithLockHeld|true

+detectorFindUnreleasedLock=FindUnreleasedLock|true

+detectorInefficientIndexOf=InefficientIndexOf|false

+detectorDoInsideDoPrivileged=DoInsideDoPrivileged|true

+detectorFindEmptySynchronizedBlock=FindEmptySynchronizedBlock|true

+detectorOverridingMethodsMustInvokeSuperDetector=OverridingMethodsMustInvokeSuperDetector|true

+detectorWaitInLoop=WaitInLoop|true

+detectorIntCast2LongAsInstant=IntCast2LongAsInstant|true

+detectorBadUseOfReturnValue=BadUseOfReturnValue|true

+detectorFindSqlInjection=FindSqlInjection|true

+detectorUnreadFields=UnreadFields|true

+detectorSynchronizingOnContentsOfFieldToProtectField=SynchronizingOnContentsOfFieldToProtectField|true

+detectorFindUselessObjects=FindUselessObjects|true

+detectorBadAppletConstructor=BadAppletConstructor|false

+detectorInheritanceUnsafeGetResource=InheritanceUnsafeGetResource|true

+detectorSerializableIdiom=SerializableIdiom|true

+detectorNaming=Naming|true

+detectorNoteUnconditionalParamDerefs=NoteUnconditionalParamDerefs|true

+detectorFormatStringChecker=FormatStringChecker|true

+detectorSuspiciousThreadInterrupted=SuspiciousThreadInterrupted|true

+detectorEmptyZipFileEntry=EmptyZipFileEntry|false

+detectorFindCircularDependencies=FindCircularDependencies|false

+detectorPreferZeroLengthArrays=PreferZeroLengthArrays|true

+detectorAtomicityProblem=AtomicityProblem|true

+detectorRuntimeExceptionCapture=RuntimeExceptionCapture|true

+detectorInitializationChain=InitializationChain|true

+detectorInitializeNonnullFieldsInConstructor=InitializeNonnullFieldsInConstructor|true

+detectorOptionalReturnNull=OptionalReturnNull|true

+detectorStartInConstructor=StartInConstructor|true

+detectorFindUnsatisfiedObligation=FindUnsatisfiedObligation|true

+detectorRedundantConditions=RedundantConditions|true

+effort=max

+detectorRedundantInterfaces=RedundantInterfaces|true

+detectorDuplicateBranches=DuplicateBranches|true

+detectorCheckTypeQualifiers=CheckTypeQualifiers|true

+detectorComparatorIdiom=ComparatorIdiom|true

+detectorFindBadCast2=FindBadCast2|true

+detectorFindMismatchedWaitOrNotify=FindMismatchedWaitOrNotify|true

+excludefilter0=../../releng/org.eclipse.ease.modules.releng/spotbugs/spotbugs_filter.xml|true

+detectorBadResultSetAccess=BadResultSetAccess|true

+detectorIncompatMask=IncompatMask|true

+detectorCovariantArrayAssignment=CovariantArrayAssignment|false

+detectorDumbMethodInvocations=DumbMethodInvocations|true

+run_at_full_build=true

+detectorStaticCalendarDetector=StaticCalendarDetector|true

+detectorUncallableMethodOfAnonymousClass=UncallableMethodOfAnonymousClass|true

+detectorVarArgsProblems=VarArgsProblems|true

+detectorInefficientInitializationInsideLoop=InefficientInitializationInsideLoop|false

+detectorCloneIdiom=CloneIdiom|true

+detectorFindHEmismatch=FindHEmismatch|true

+detectorAppendingToAnObjectOutputStream=AppendingToAnObjectOutputStream|true

+detectorFindSelfComparison2=FindSelfComparison2|true

+detectorLazyInit=LazyInit|true

+detectorFindUnrelatedTypesInGenericContainer=FindUnrelatedTypesInGenericContainer|true

+detectorDontUseEnum=DontUseEnum|true

+detectorFindPuzzlers=FindPuzzlers|true

+detectorCallToUnsupportedMethod=CallToUnsupportedMethod|false

+detectorSuperfluousInstanceOf=SuperfluousInstanceOf|true

+detectorReadReturnShouldBeChecked=ReadReturnShouldBeChecked|true

+detector_threshold=3

+detectorPublicSemaphores=PublicSemaphores|false

+detectorDumbMethods=DumbMethods|true

diff --git a/plugins/org.eclipse.ease.modules.team.git.ui/.project b/plugins/org.eclipse.ease.modules.team.git.ui/.project
index 6b3a89a..aa1db52 100644
--- a/plugins/org.eclipse.ease.modules.team.git.ui/.project
+++ b/plugins/org.eclipse.ease.modules.team.git.ui/.project
@@ -25,10 +25,16 @@
 			<arguments>
 			</arguments>
 		</buildCommand>
+		<buildCommand>
+			<name>edu.umd.cs.findbugs.plugin.eclipse.findbugsBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
 	</buildSpec>
 	<natures>
 		<nature>org.eclipse.pde.PluginNature</nature>
 		<nature>org.eclipse.jdt.core.javanature</nature>
 		<nature>net.sf.eclipsecs.core.CheckstyleNature</nature>
+		<nature>edu.umd.cs.findbugs.plugin.eclipse.findbugsNature</nature>
 	</natures>
 </projectDescription>
diff --git a/plugins/org.eclipse.ease.modules.team.git.ui/.settings/com.github.spotbugs.plugin.eclipse.prefs b/plugins/org.eclipse.ease.modules.team.git.ui/.settings/com.github.spotbugs.plugin.eclipse.prefs
new file mode 100644
index 0000000..53e9365
--- /dev/null
+++ b/plugins/org.eclipse.ease.modules.team.git.ui/.settings/com.github.spotbugs.plugin.eclipse.prefs
@@ -0,0 +1,2 @@
+dontRemindAboutFullBuild=true

+eclipse.preferences.version=1

diff --git a/plugins/org.eclipse.ease.modules.team.git.ui/.settings/edu.umd.cs.findbugs.core.prefs b/plugins/org.eclipse.ease.modules.team.git.ui/.settings/edu.umd.cs.findbugs.core.prefs
new file mode 100644
index 0000000..8bf6d5e
--- /dev/null
+++ b/plugins/org.eclipse.ease.modules.team.git.ui/.settings/edu.umd.cs.findbugs.core.prefs
@@ -0,0 +1,145 @@
+#SpotBugs User Preferences

+#Thu Mar 11 18:38:53 CET 2021

+detectorExplicitSerialization=ExplicitSerialization|true

+detectorMultithreadedInstanceAccess=MultithreadedInstanceAccess|true

+detectorConfusionBetweenInheritedAndOuterMethod=ConfusionBetweenInheritedAndOuterMethod|true

+detectorWrongMapIterator=WrongMapIterator|true

+detectorUnnecessaryMath=UnnecessaryMath|true

+detectorUselessSubclassMethod=UselessSubclassMethod|false

+filter_settings=Low|BAD_PRACTICE,CORRECTNESS,EXPERIMENTAL,I18N,MALICIOUS_CODE,MT_CORRECTNESS,PERFORMANCE,SECURITY,STYLE|false|20

+detectorURLProblems=URLProblems|true

+detectorIteratorIdioms=IteratorIdioms|true

+detectorMutableEnum=MutableEnum|true

+detectorFindNonShortCircuit=FindNonShortCircuit|true

+detectorSynchronizeAndNullCheckField=SynchronizeAndNullCheckField|true

+detectorVolatileUsage=VolatileUsage|true

+detectorFindNakedNotify=FindNakedNotify|true

+detectorFindUninitializedGet=FindUninitializedGet|true

+detectorFindUseOfNonSerializableValue=FindUseOfNonSerializableValue|true

+detectorFindJSR166LockMonitorenter=FindJSR166LockMonitorenter|true

+detectorQuestionableBooleanAssignment=QuestionableBooleanAssignment|true

+detectorSwitchFallthrough=SwitchFallthrough|true

+detectorFindLocalSelfAssignment2=FindLocalSelfAssignment2|true

+detectorConfusedInheritance=ConfusedInheritance|true

+detectorSynchronizationOnSharedBuiltinConstant=SynchronizationOnSharedBuiltinConstant|true

+detectorMutableStaticFields=MutableStaticFields|true

+detectorInvalidJUnitTest=InvalidJUnitTest|true

+detectorInfiniteLoop=InfiniteLoop|true

+detectorFindRunInvocations=FindRunInvocations|true

+detectorBadSyntaxForRegularExpression=BadSyntaxForRegularExpression|true

+detectorXMLFactoryBypass=XMLFactoryBypass|true

+detectorFindOpenStream=FindOpenStream|true

+detectorCheckExpectedWarnings=CheckExpectedWarnings|false

+detectorHugeSharedStringConstants=HugeSharedStringConstants|true

+detectorLostLoggerDueToWeakReference=LostLoggerDueToWeakReference|true

+detectorStringConcatenation=StringConcatenation|true

+detectorLoadOfKnownNullValue=LoadOfKnownNullValue|true

+detectorFinalizerNullsFields=FinalizerNullsFields|true

+detectorFindFieldSelfAssignment=FindFieldSelfAssignment|true

+detectorInefficientToArray=InefficientToArray|false

+detectorDontCatchIllegalMonitorStateException=DontCatchIllegalMonitorStateException|true

+detectorInconsistentAnnotations=InconsistentAnnotations|true

+detectorBadlyOverriddenAdapter=BadlyOverriddenAdapter|true

+detectorInstantiateStaticClass=InstantiateStaticClass|true

+detectorCheckRelaxingNullnessAnnotation=CheckRelaxingNullnessAnnotation|true

+detectorMethodReturnCheck=MethodReturnCheck|true

+detectorEqualsOperandShouldHaveClassCompatibleWithThis=EqualsOperandShouldHaveClassCompatibleWithThis|true

+detectorFindDoubleCheck=FindDoubleCheck|true

+detectorFindBadForLoop=FindBadForLoop|true

+detectorDefaultEncodingDetector=DefaultEncodingDetector|true

+detectorFindInconsistentSync2=FindInconsistentSync2|true

+detectorFindSpinLoop=FindSpinLoop|true

+detectorFindMaskedFields=FindMaskedFields|true

+detectorBooleanReturnNull=BooleanReturnNull|true

+detectorFindUnsyncGet=FindUnsyncGet|true

+detectorCrossSiteScripting=CrossSiteScripting|true

+detectorDroppedException=DroppedException|true

+detectorFindDeadLocalStores=FindDeadLocalStores|true

+detectorCheckImmutableAnnotation=CheckImmutableAnnotation|true

+detectorInfiniteRecursiveLoop=InfiniteRecursiveLoop|true

+detectorFindRefComparison=FindRefComparison|true

+detectorFindRoughConstants=FindRoughConstants|true

+detectorMutableLock=MutableLock|true

+detectorFindNullDeref=FindNullDeref|true

+detectorFindReturnRef=FindReturnRef|true

+detectorSynchronizeOnClassLiteralNotGetClass=SynchronizeOnClassLiteralNotGetClass|true

+detectorFindUselessControlFlow=FindUselessControlFlow|true

+detectorOverridingEqualsNotSymmetrical=OverridingEqualsNotSymmetrical|true

+detectorIDivResultCastToDouble=IDivResultCastToDouble|true

+detectorReadOfInstanceFieldInMethodInvokedByConstructorInSuperclass=ReadOfInstanceFieldInMethodInvokedByConstructorInSuperclass|true

+detectorFindSelfComparison=FindSelfComparison|true

+detectorFindFloatEquality=FindFloatEquality|true

+detectorFindComparatorProblems=FindComparatorProblems|true

+detectorRepeatedConditionals=RepeatedConditionals|true

+filter_settings_neg=NOISE|

+detectorInefficientMemberAccess=InefficientMemberAccess|false

+detectorFindUncalledPrivateMethods=FindUncalledPrivateMethods|true

+detectorNumberConstructor=NumberConstructor|true

+detectorDontAssertInstanceofInTests=DontAssertInstanceofInTests|true

+detectorFindFinalizeInvocations=FindFinalizeInvocations|true

+detectorFindNullDerefsInvolvingNonShortCircuitEvaluation=FindNullDerefsInvolvingNonShortCircuitEvaluation|true

+detectorDontIgnoreResultOfPutIfAbsent=DontIgnoreResultOfPutIfAbsent|true

+detectorFindUnconditionalWait=FindUnconditionalWait|true

+detectorFindTwoLockWait=FindTwoLockWait|true

+detectorFindSleepWithLockHeld=FindSleepWithLockHeld|true

+detectorFindUnreleasedLock=FindUnreleasedLock|true

+detectorInefficientIndexOf=InefficientIndexOf|false

+detectorDoInsideDoPrivileged=DoInsideDoPrivileged|true

+detectorFindEmptySynchronizedBlock=FindEmptySynchronizedBlock|true

+detectorOverridingMethodsMustInvokeSuperDetector=OverridingMethodsMustInvokeSuperDetector|true

+detectorWaitInLoop=WaitInLoop|true

+detectorIntCast2LongAsInstant=IntCast2LongAsInstant|true

+detectorBadUseOfReturnValue=BadUseOfReturnValue|true

+detectorFindSqlInjection=FindSqlInjection|true

+detectorUnreadFields=UnreadFields|true

+detectorSynchronizingOnContentsOfFieldToProtectField=SynchronizingOnContentsOfFieldToProtectField|true

+detectorFindUselessObjects=FindUselessObjects|true

+detectorBadAppletConstructor=BadAppletConstructor|false

+detectorInheritanceUnsafeGetResource=InheritanceUnsafeGetResource|true

+detectorSerializableIdiom=SerializableIdiom|true

+detectorNaming=Naming|true

+detectorNoteUnconditionalParamDerefs=NoteUnconditionalParamDerefs|true

+detectorFormatStringChecker=FormatStringChecker|true

+detectorSuspiciousThreadInterrupted=SuspiciousThreadInterrupted|true

+detectorEmptyZipFileEntry=EmptyZipFileEntry|false

+detectorFindCircularDependencies=FindCircularDependencies|false

+detectorPreferZeroLengthArrays=PreferZeroLengthArrays|true

+detectorAtomicityProblem=AtomicityProblem|true

+detectorRuntimeExceptionCapture=RuntimeExceptionCapture|true

+detectorInitializationChain=InitializationChain|true

+detectorInitializeNonnullFieldsInConstructor=InitializeNonnullFieldsInConstructor|true

+detectorOptionalReturnNull=OptionalReturnNull|true

+detectorStartInConstructor=StartInConstructor|true

+detectorFindUnsatisfiedObligation=FindUnsatisfiedObligation|true

+detectorRedundantConditions=RedundantConditions|true

+effort=max

+detectorRedundantInterfaces=RedundantInterfaces|true

+detectorDuplicateBranches=DuplicateBranches|true

+detectorCheckTypeQualifiers=CheckTypeQualifiers|true

+detectorComparatorIdiom=ComparatorIdiom|true

+detectorFindBadCast2=FindBadCast2|true

+detectorFindMismatchedWaitOrNotify=FindMismatchedWaitOrNotify|true

+excludefilter0=../../releng/org.eclipse.ease.modules.releng/spotbugs/spotbugs_filter.xml|true

+detectorBadResultSetAccess=BadResultSetAccess|true

+detectorIncompatMask=IncompatMask|true

+detectorCovariantArrayAssignment=CovariantArrayAssignment|false

+detectorDumbMethodInvocations=DumbMethodInvocations|true

+run_at_full_build=true

+detectorStaticCalendarDetector=StaticCalendarDetector|true

+detectorUncallableMethodOfAnonymousClass=UncallableMethodOfAnonymousClass|true

+detectorVarArgsProblems=VarArgsProblems|true

+detectorInefficientInitializationInsideLoop=InefficientInitializationInsideLoop|false

+detectorCloneIdiom=CloneIdiom|true

+detectorFindHEmismatch=FindHEmismatch|true

+detectorAppendingToAnObjectOutputStream=AppendingToAnObjectOutputStream|true

+detectorFindSelfComparison2=FindSelfComparison2|true

+detectorLazyInit=LazyInit|true

+detectorFindUnrelatedTypesInGenericContainer=FindUnrelatedTypesInGenericContainer|true

+detectorDontUseEnum=DontUseEnum|true

+detectorFindPuzzlers=FindPuzzlers|true

+detectorCallToUnsupportedMethod=CallToUnsupportedMethod|false

+detectorSuperfluousInstanceOf=SuperfluousInstanceOf|true

+detectorReadReturnShouldBeChecked=ReadReturnShouldBeChecked|true

+detector_threshold=3

+detectorPublicSemaphores=PublicSemaphores|false

+detectorDumbMethods=DumbMethods|true

diff --git a/plugins/org.eclipse.ease.modules.team.git/.project b/plugins/org.eclipse.ease.modules.team.git/.project
index c8c6c56..6cb63c1 100644
--- a/plugins/org.eclipse.ease.modules.team.git/.project
+++ b/plugins/org.eclipse.ease.modules.team.git/.project
@@ -25,10 +25,16 @@
 			<arguments>
 			</arguments>
 		</buildCommand>
+		<buildCommand>
+			<name>edu.umd.cs.findbugs.plugin.eclipse.findbugsBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
 	</buildSpec>
 	<natures>
 		<nature>org.eclipse.pde.PluginNature</nature>
 		<nature>org.eclipse.jdt.core.javanature</nature>
 		<nature>net.sf.eclipsecs.core.CheckstyleNature</nature>
+		<nature>edu.umd.cs.findbugs.plugin.eclipse.findbugsNature</nature>
 	</natures>
 </projectDescription>
diff --git a/plugins/org.eclipse.ease.modules.team.git/.settings/com.github.spotbugs.plugin.eclipse.prefs b/plugins/org.eclipse.ease.modules.team.git/.settings/com.github.spotbugs.plugin.eclipse.prefs
new file mode 100644
index 0000000..53e9365
--- /dev/null
+++ b/plugins/org.eclipse.ease.modules.team.git/.settings/com.github.spotbugs.plugin.eclipse.prefs
@@ -0,0 +1,2 @@
+dontRemindAboutFullBuild=true

+eclipse.preferences.version=1

diff --git a/plugins/org.eclipse.ease.modules.team.git/.settings/edu.umd.cs.findbugs.core.prefs b/plugins/org.eclipse.ease.modules.team.git/.settings/edu.umd.cs.findbugs.core.prefs
new file mode 100644
index 0000000..8bf6d5e
--- /dev/null
+++ b/plugins/org.eclipse.ease.modules.team.git/.settings/edu.umd.cs.findbugs.core.prefs
@@ -0,0 +1,145 @@
+#SpotBugs User Preferences

+#Thu Mar 11 18:38:53 CET 2021

+detectorExplicitSerialization=ExplicitSerialization|true

+detectorMultithreadedInstanceAccess=MultithreadedInstanceAccess|true

+detectorConfusionBetweenInheritedAndOuterMethod=ConfusionBetweenInheritedAndOuterMethod|true

+detectorWrongMapIterator=WrongMapIterator|true

+detectorUnnecessaryMath=UnnecessaryMath|true

+detectorUselessSubclassMethod=UselessSubclassMethod|false

+filter_settings=Low|BAD_PRACTICE,CORRECTNESS,EXPERIMENTAL,I18N,MALICIOUS_CODE,MT_CORRECTNESS,PERFORMANCE,SECURITY,STYLE|false|20

+detectorURLProblems=URLProblems|true

+detectorIteratorIdioms=IteratorIdioms|true

+detectorMutableEnum=MutableEnum|true

+detectorFindNonShortCircuit=FindNonShortCircuit|true

+detectorSynchronizeAndNullCheckField=SynchronizeAndNullCheckField|true

+detectorVolatileUsage=VolatileUsage|true

+detectorFindNakedNotify=FindNakedNotify|true

+detectorFindUninitializedGet=FindUninitializedGet|true

+detectorFindUseOfNonSerializableValue=FindUseOfNonSerializableValue|true

+detectorFindJSR166LockMonitorenter=FindJSR166LockMonitorenter|true

+detectorQuestionableBooleanAssignment=QuestionableBooleanAssignment|true

+detectorSwitchFallthrough=SwitchFallthrough|true

+detectorFindLocalSelfAssignment2=FindLocalSelfAssignment2|true

+detectorConfusedInheritance=ConfusedInheritance|true

+detectorSynchronizationOnSharedBuiltinConstant=SynchronizationOnSharedBuiltinConstant|true

+detectorMutableStaticFields=MutableStaticFields|true

+detectorInvalidJUnitTest=InvalidJUnitTest|true

+detectorInfiniteLoop=InfiniteLoop|true

+detectorFindRunInvocations=FindRunInvocations|true

+detectorBadSyntaxForRegularExpression=BadSyntaxForRegularExpression|true

+detectorXMLFactoryBypass=XMLFactoryBypass|true

+detectorFindOpenStream=FindOpenStream|true

+detectorCheckExpectedWarnings=CheckExpectedWarnings|false

+detectorHugeSharedStringConstants=HugeSharedStringConstants|true

+detectorLostLoggerDueToWeakReference=LostLoggerDueToWeakReference|true

+detectorStringConcatenation=StringConcatenation|true

+detectorLoadOfKnownNullValue=LoadOfKnownNullValue|true

+detectorFinalizerNullsFields=FinalizerNullsFields|true

+detectorFindFieldSelfAssignment=FindFieldSelfAssignment|true

+detectorInefficientToArray=InefficientToArray|false

+detectorDontCatchIllegalMonitorStateException=DontCatchIllegalMonitorStateException|true

+detectorInconsistentAnnotations=InconsistentAnnotations|true

+detectorBadlyOverriddenAdapter=BadlyOverriddenAdapter|true

+detectorInstantiateStaticClass=InstantiateStaticClass|true

+detectorCheckRelaxingNullnessAnnotation=CheckRelaxingNullnessAnnotation|true

+detectorMethodReturnCheck=MethodReturnCheck|true

+detectorEqualsOperandShouldHaveClassCompatibleWithThis=EqualsOperandShouldHaveClassCompatibleWithThis|true

+detectorFindDoubleCheck=FindDoubleCheck|true

+detectorFindBadForLoop=FindBadForLoop|true

+detectorDefaultEncodingDetector=DefaultEncodingDetector|true

+detectorFindInconsistentSync2=FindInconsistentSync2|true

+detectorFindSpinLoop=FindSpinLoop|true

+detectorFindMaskedFields=FindMaskedFields|true

+detectorBooleanReturnNull=BooleanReturnNull|true

+detectorFindUnsyncGet=FindUnsyncGet|true

+detectorCrossSiteScripting=CrossSiteScripting|true

+detectorDroppedException=DroppedException|true

+detectorFindDeadLocalStores=FindDeadLocalStores|true

+detectorCheckImmutableAnnotation=CheckImmutableAnnotation|true

+detectorInfiniteRecursiveLoop=InfiniteRecursiveLoop|true

+detectorFindRefComparison=FindRefComparison|true

+detectorFindRoughConstants=FindRoughConstants|true

+detectorMutableLock=MutableLock|true

+detectorFindNullDeref=FindNullDeref|true

+detectorFindReturnRef=FindReturnRef|true

+detectorSynchronizeOnClassLiteralNotGetClass=SynchronizeOnClassLiteralNotGetClass|true

+detectorFindUselessControlFlow=FindUselessControlFlow|true

+detectorOverridingEqualsNotSymmetrical=OverridingEqualsNotSymmetrical|true

+detectorIDivResultCastToDouble=IDivResultCastToDouble|true

+detectorReadOfInstanceFieldInMethodInvokedByConstructorInSuperclass=ReadOfInstanceFieldInMethodInvokedByConstructorInSuperclass|true

+detectorFindSelfComparison=FindSelfComparison|true

+detectorFindFloatEquality=FindFloatEquality|true

+detectorFindComparatorProblems=FindComparatorProblems|true

+detectorRepeatedConditionals=RepeatedConditionals|true

+filter_settings_neg=NOISE|

+detectorInefficientMemberAccess=InefficientMemberAccess|false

+detectorFindUncalledPrivateMethods=FindUncalledPrivateMethods|true

+detectorNumberConstructor=NumberConstructor|true

+detectorDontAssertInstanceofInTests=DontAssertInstanceofInTests|true

+detectorFindFinalizeInvocations=FindFinalizeInvocations|true

+detectorFindNullDerefsInvolvingNonShortCircuitEvaluation=FindNullDerefsInvolvingNonShortCircuitEvaluation|true

+detectorDontIgnoreResultOfPutIfAbsent=DontIgnoreResultOfPutIfAbsent|true

+detectorFindUnconditionalWait=FindUnconditionalWait|true

+detectorFindTwoLockWait=FindTwoLockWait|true

+detectorFindSleepWithLockHeld=FindSleepWithLockHeld|true

+detectorFindUnreleasedLock=FindUnreleasedLock|true

+detectorInefficientIndexOf=InefficientIndexOf|false

+detectorDoInsideDoPrivileged=DoInsideDoPrivileged|true

+detectorFindEmptySynchronizedBlock=FindEmptySynchronizedBlock|true

+detectorOverridingMethodsMustInvokeSuperDetector=OverridingMethodsMustInvokeSuperDetector|true

+detectorWaitInLoop=WaitInLoop|true

+detectorIntCast2LongAsInstant=IntCast2LongAsInstant|true

+detectorBadUseOfReturnValue=BadUseOfReturnValue|true

+detectorFindSqlInjection=FindSqlInjection|true

+detectorUnreadFields=UnreadFields|true

+detectorSynchronizingOnContentsOfFieldToProtectField=SynchronizingOnContentsOfFieldToProtectField|true

+detectorFindUselessObjects=FindUselessObjects|true

+detectorBadAppletConstructor=BadAppletConstructor|false

+detectorInheritanceUnsafeGetResource=InheritanceUnsafeGetResource|true

+detectorSerializableIdiom=SerializableIdiom|true

+detectorNaming=Naming|true

+detectorNoteUnconditionalParamDerefs=NoteUnconditionalParamDerefs|true

+detectorFormatStringChecker=FormatStringChecker|true

+detectorSuspiciousThreadInterrupted=SuspiciousThreadInterrupted|true

+detectorEmptyZipFileEntry=EmptyZipFileEntry|false

+detectorFindCircularDependencies=FindCircularDependencies|false

+detectorPreferZeroLengthArrays=PreferZeroLengthArrays|true

+detectorAtomicityProblem=AtomicityProblem|true

+detectorRuntimeExceptionCapture=RuntimeExceptionCapture|true

+detectorInitializationChain=InitializationChain|true

+detectorInitializeNonnullFieldsInConstructor=InitializeNonnullFieldsInConstructor|true

+detectorOptionalReturnNull=OptionalReturnNull|true

+detectorStartInConstructor=StartInConstructor|true

+detectorFindUnsatisfiedObligation=FindUnsatisfiedObligation|true

+detectorRedundantConditions=RedundantConditions|true

+effort=max

+detectorRedundantInterfaces=RedundantInterfaces|true

+detectorDuplicateBranches=DuplicateBranches|true

+detectorCheckTypeQualifiers=CheckTypeQualifiers|true

+detectorComparatorIdiom=ComparatorIdiom|true

+detectorFindBadCast2=FindBadCast2|true

+detectorFindMismatchedWaitOrNotify=FindMismatchedWaitOrNotify|true

+excludefilter0=../../releng/org.eclipse.ease.modules.releng/spotbugs/spotbugs_filter.xml|true

+detectorBadResultSetAccess=BadResultSetAccess|true

+detectorIncompatMask=IncompatMask|true

+detectorCovariantArrayAssignment=CovariantArrayAssignment|false

+detectorDumbMethodInvocations=DumbMethodInvocations|true

+run_at_full_build=true

+detectorStaticCalendarDetector=StaticCalendarDetector|true

+detectorUncallableMethodOfAnonymousClass=UncallableMethodOfAnonymousClass|true

+detectorVarArgsProblems=VarArgsProblems|true

+detectorInefficientInitializationInsideLoop=InefficientInitializationInsideLoop|false

+detectorCloneIdiom=CloneIdiom|true

+detectorFindHEmismatch=FindHEmismatch|true

+detectorAppendingToAnObjectOutputStream=AppendingToAnObjectOutputStream|true

+detectorFindSelfComparison2=FindSelfComparison2|true

+detectorLazyInit=LazyInit|true

+detectorFindUnrelatedTypesInGenericContainer=FindUnrelatedTypesInGenericContainer|true

+detectorDontUseEnum=DontUseEnum|true

+detectorFindPuzzlers=FindPuzzlers|true

+detectorCallToUnsupportedMethod=CallToUnsupportedMethod|false

+detectorSuperfluousInstanceOf=SuperfluousInstanceOf|true

+detectorReadReturnShouldBeChecked=ReadReturnShouldBeChecked|true

+detector_threshold=3

+detectorPublicSemaphores=PublicSemaphores|false

+detectorDumbMethods=DumbMethods|true

diff --git a/plugins/org.eclipse.ease.modules.team.svn/.project b/plugins/org.eclipse.ease.modules.team.svn/.project
index 039acaf..3faa1f0 100644
--- a/plugins/org.eclipse.ease.modules.team.svn/.project
+++ b/plugins/org.eclipse.ease.modules.team.svn/.project
@@ -25,10 +25,16 @@
 			<arguments>

 			</arguments>

 		</buildCommand>

+		<buildCommand>

+			<name>edu.umd.cs.findbugs.plugin.eclipse.findbugsBuilder</name>

+			<arguments>

+			</arguments>

+		</buildCommand>

 	</buildSpec>

 	<natures>

 		<nature>org.eclipse.pde.PluginNature</nature>

 		<nature>org.eclipse.jdt.core.javanature</nature>

 		<nature>net.sf.eclipsecs.core.CheckstyleNature</nature>

+		<nature>edu.umd.cs.findbugs.plugin.eclipse.findbugsNature</nature>

 	</natures>

 </projectDescription>

diff --git a/plugins/org.eclipse.ease.modules.team.svn/.settings/com.github.spotbugs.plugin.eclipse.prefs b/plugins/org.eclipse.ease.modules.team.svn/.settings/com.github.spotbugs.plugin.eclipse.prefs
new file mode 100644
index 0000000..53e9365
--- /dev/null
+++ b/plugins/org.eclipse.ease.modules.team.svn/.settings/com.github.spotbugs.plugin.eclipse.prefs
@@ -0,0 +1,2 @@
+dontRemindAboutFullBuild=true

+eclipse.preferences.version=1

diff --git a/plugins/org.eclipse.ease.modules.team.svn/.settings/edu.umd.cs.findbugs.core.prefs b/plugins/org.eclipse.ease.modules.team.svn/.settings/edu.umd.cs.findbugs.core.prefs
new file mode 100644
index 0000000..8bf6d5e
--- /dev/null
+++ b/plugins/org.eclipse.ease.modules.team.svn/.settings/edu.umd.cs.findbugs.core.prefs
@@ -0,0 +1,145 @@
+#SpotBugs User Preferences

+#Thu Mar 11 18:38:53 CET 2021

+detectorExplicitSerialization=ExplicitSerialization|true

+detectorMultithreadedInstanceAccess=MultithreadedInstanceAccess|true

+detectorConfusionBetweenInheritedAndOuterMethod=ConfusionBetweenInheritedAndOuterMethod|true

+detectorWrongMapIterator=WrongMapIterator|true

+detectorUnnecessaryMath=UnnecessaryMath|true

+detectorUselessSubclassMethod=UselessSubclassMethod|false

+filter_settings=Low|BAD_PRACTICE,CORRECTNESS,EXPERIMENTAL,I18N,MALICIOUS_CODE,MT_CORRECTNESS,PERFORMANCE,SECURITY,STYLE|false|20

+detectorURLProblems=URLProblems|true

+detectorIteratorIdioms=IteratorIdioms|true

+detectorMutableEnum=MutableEnum|true

+detectorFindNonShortCircuit=FindNonShortCircuit|true

+detectorSynchronizeAndNullCheckField=SynchronizeAndNullCheckField|true

+detectorVolatileUsage=VolatileUsage|true

+detectorFindNakedNotify=FindNakedNotify|true

+detectorFindUninitializedGet=FindUninitializedGet|true

+detectorFindUseOfNonSerializableValue=FindUseOfNonSerializableValue|true

+detectorFindJSR166LockMonitorenter=FindJSR166LockMonitorenter|true

+detectorQuestionableBooleanAssignment=QuestionableBooleanAssignment|true

+detectorSwitchFallthrough=SwitchFallthrough|true

+detectorFindLocalSelfAssignment2=FindLocalSelfAssignment2|true

+detectorConfusedInheritance=ConfusedInheritance|true

+detectorSynchronizationOnSharedBuiltinConstant=SynchronizationOnSharedBuiltinConstant|true

+detectorMutableStaticFields=MutableStaticFields|true

+detectorInvalidJUnitTest=InvalidJUnitTest|true

+detectorInfiniteLoop=InfiniteLoop|true

+detectorFindRunInvocations=FindRunInvocations|true

+detectorBadSyntaxForRegularExpression=BadSyntaxForRegularExpression|true

+detectorXMLFactoryBypass=XMLFactoryBypass|true

+detectorFindOpenStream=FindOpenStream|true

+detectorCheckExpectedWarnings=CheckExpectedWarnings|false

+detectorHugeSharedStringConstants=HugeSharedStringConstants|true

+detectorLostLoggerDueToWeakReference=LostLoggerDueToWeakReference|true

+detectorStringConcatenation=StringConcatenation|true

+detectorLoadOfKnownNullValue=LoadOfKnownNullValue|true

+detectorFinalizerNullsFields=FinalizerNullsFields|true

+detectorFindFieldSelfAssignment=FindFieldSelfAssignment|true

+detectorInefficientToArray=InefficientToArray|false

+detectorDontCatchIllegalMonitorStateException=DontCatchIllegalMonitorStateException|true

+detectorInconsistentAnnotations=InconsistentAnnotations|true

+detectorBadlyOverriddenAdapter=BadlyOverriddenAdapter|true

+detectorInstantiateStaticClass=InstantiateStaticClass|true

+detectorCheckRelaxingNullnessAnnotation=CheckRelaxingNullnessAnnotation|true

+detectorMethodReturnCheck=MethodReturnCheck|true

+detectorEqualsOperandShouldHaveClassCompatibleWithThis=EqualsOperandShouldHaveClassCompatibleWithThis|true

+detectorFindDoubleCheck=FindDoubleCheck|true

+detectorFindBadForLoop=FindBadForLoop|true

+detectorDefaultEncodingDetector=DefaultEncodingDetector|true

+detectorFindInconsistentSync2=FindInconsistentSync2|true

+detectorFindSpinLoop=FindSpinLoop|true

+detectorFindMaskedFields=FindMaskedFields|true

+detectorBooleanReturnNull=BooleanReturnNull|true

+detectorFindUnsyncGet=FindUnsyncGet|true

+detectorCrossSiteScripting=CrossSiteScripting|true

+detectorDroppedException=DroppedException|true

+detectorFindDeadLocalStores=FindDeadLocalStores|true

+detectorCheckImmutableAnnotation=CheckImmutableAnnotation|true

+detectorInfiniteRecursiveLoop=InfiniteRecursiveLoop|true

+detectorFindRefComparison=FindRefComparison|true

+detectorFindRoughConstants=FindRoughConstants|true

+detectorMutableLock=MutableLock|true

+detectorFindNullDeref=FindNullDeref|true

+detectorFindReturnRef=FindReturnRef|true

+detectorSynchronizeOnClassLiteralNotGetClass=SynchronizeOnClassLiteralNotGetClass|true

+detectorFindUselessControlFlow=FindUselessControlFlow|true

+detectorOverridingEqualsNotSymmetrical=OverridingEqualsNotSymmetrical|true

+detectorIDivResultCastToDouble=IDivResultCastToDouble|true

+detectorReadOfInstanceFieldInMethodInvokedByConstructorInSuperclass=ReadOfInstanceFieldInMethodInvokedByConstructorInSuperclass|true

+detectorFindSelfComparison=FindSelfComparison|true

+detectorFindFloatEquality=FindFloatEquality|true

+detectorFindComparatorProblems=FindComparatorProblems|true

+detectorRepeatedConditionals=RepeatedConditionals|true

+filter_settings_neg=NOISE|

+detectorInefficientMemberAccess=InefficientMemberAccess|false

+detectorFindUncalledPrivateMethods=FindUncalledPrivateMethods|true

+detectorNumberConstructor=NumberConstructor|true

+detectorDontAssertInstanceofInTests=DontAssertInstanceofInTests|true

+detectorFindFinalizeInvocations=FindFinalizeInvocations|true

+detectorFindNullDerefsInvolvingNonShortCircuitEvaluation=FindNullDerefsInvolvingNonShortCircuitEvaluation|true

+detectorDontIgnoreResultOfPutIfAbsent=DontIgnoreResultOfPutIfAbsent|true

+detectorFindUnconditionalWait=FindUnconditionalWait|true

+detectorFindTwoLockWait=FindTwoLockWait|true

+detectorFindSleepWithLockHeld=FindSleepWithLockHeld|true

+detectorFindUnreleasedLock=FindUnreleasedLock|true

+detectorInefficientIndexOf=InefficientIndexOf|false

+detectorDoInsideDoPrivileged=DoInsideDoPrivileged|true

+detectorFindEmptySynchronizedBlock=FindEmptySynchronizedBlock|true

+detectorOverridingMethodsMustInvokeSuperDetector=OverridingMethodsMustInvokeSuperDetector|true

+detectorWaitInLoop=WaitInLoop|true

+detectorIntCast2LongAsInstant=IntCast2LongAsInstant|true

+detectorBadUseOfReturnValue=BadUseOfReturnValue|true

+detectorFindSqlInjection=FindSqlInjection|true

+detectorUnreadFields=UnreadFields|true

+detectorSynchronizingOnContentsOfFieldToProtectField=SynchronizingOnContentsOfFieldToProtectField|true

+detectorFindUselessObjects=FindUselessObjects|true

+detectorBadAppletConstructor=BadAppletConstructor|false

+detectorInheritanceUnsafeGetResource=InheritanceUnsafeGetResource|true

+detectorSerializableIdiom=SerializableIdiom|true

+detectorNaming=Naming|true

+detectorNoteUnconditionalParamDerefs=NoteUnconditionalParamDerefs|true

+detectorFormatStringChecker=FormatStringChecker|true

+detectorSuspiciousThreadInterrupted=SuspiciousThreadInterrupted|true

+detectorEmptyZipFileEntry=EmptyZipFileEntry|false

+detectorFindCircularDependencies=FindCircularDependencies|false

+detectorPreferZeroLengthArrays=PreferZeroLengthArrays|true

+detectorAtomicityProblem=AtomicityProblem|true

+detectorRuntimeExceptionCapture=RuntimeExceptionCapture|true

+detectorInitializationChain=InitializationChain|true

+detectorInitializeNonnullFieldsInConstructor=InitializeNonnullFieldsInConstructor|true

+detectorOptionalReturnNull=OptionalReturnNull|true

+detectorStartInConstructor=StartInConstructor|true

+detectorFindUnsatisfiedObligation=FindUnsatisfiedObligation|true

+detectorRedundantConditions=RedundantConditions|true

+effort=max

+detectorRedundantInterfaces=RedundantInterfaces|true

+detectorDuplicateBranches=DuplicateBranches|true

+detectorCheckTypeQualifiers=CheckTypeQualifiers|true

+detectorComparatorIdiom=ComparatorIdiom|true

+detectorFindBadCast2=FindBadCast2|true

+detectorFindMismatchedWaitOrNotify=FindMismatchedWaitOrNotify|true

+excludefilter0=../../releng/org.eclipse.ease.modules.releng/spotbugs/spotbugs_filter.xml|true

+detectorBadResultSetAccess=BadResultSetAccess|true

+detectorIncompatMask=IncompatMask|true

+detectorCovariantArrayAssignment=CovariantArrayAssignment|false

+detectorDumbMethodInvocations=DumbMethodInvocations|true

+run_at_full_build=true

+detectorStaticCalendarDetector=StaticCalendarDetector|true

+detectorUncallableMethodOfAnonymousClass=UncallableMethodOfAnonymousClass|true

+detectorVarArgsProblems=VarArgsProblems|true

+detectorInefficientInitializationInsideLoop=InefficientInitializationInsideLoop|false

+detectorCloneIdiom=CloneIdiom|true

+detectorFindHEmismatch=FindHEmismatch|true

+detectorAppendingToAnObjectOutputStream=AppendingToAnObjectOutputStream|true

+detectorFindSelfComparison2=FindSelfComparison2|true

+detectorLazyInit=LazyInit|true

+detectorFindUnrelatedTypesInGenericContainer=FindUnrelatedTypesInGenericContainer|true

+detectorDontUseEnum=DontUseEnum|true

+detectorFindPuzzlers=FindPuzzlers|true

+detectorCallToUnsupportedMethod=CallToUnsupportedMethod|false

+detectorSuperfluousInstanceOf=SuperfluousInstanceOf|true

+detectorReadReturnShouldBeChecked=ReadReturnShouldBeChecked|true

+detector_threshold=3

+detectorPublicSemaphores=PublicSemaphores|false

+detectorDumbMethods=DumbMethods|true

diff --git a/tests/org.eclipse.ease.modules.platform.test/.project b/tests/org.eclipse.ease.modules.platform.test/.project
index 4577555..97f28e5 100644
--- a/tests/org.eclipse.ease.modules.platform.test/.project
+++ b/tests/org.eclipse.ease.modules.platform.test/.project
@@ -25,10 +25,16 @@
 			<arguments>
 			</arguments>
 		</buildCommand>
+		<buildCommand>
+			<name>edu.umd.cs.findbugs.plugin.eclipse.findbugsBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
 	</buildSpec>
 	<natures>
 		<nature>org.eclipse.pde.PluginNature</nature>
 		<nature>org.eclipse.jdt.core.javanature</nature>
 		<nature>net.sf.eclipsecs.core.CheckstyleNature</nature>
+		<nature>edu.umd.cs.findbugs.plugin.eclipse.findbugsNature</nature>
 	</natures>
 </projectDescription>
diff --git a/tests/org.eclipse.ease.modules.platform.test/.settings/com.github.spotbugs.plugin.eclipse.prefs b/tests/org.eclipse.ease.modules.platform.test/.settings/com.github.spotbugs.plugin.eclipse.prefs
new file mode 100644
index 0000000..53e9365
--- /dev/null
+++ b/tests/org.eclipse.ease.modules.platform.test/.settings/com.github.spotbugs.plugin.eclipse.prefs
@@ -0,0 +1,2 @@
+dontRemindAboutFullBuild=true

+eclipse.preferences.version=1

diff --git a/tests/org.eclipse.ease.modules.platform.test/.settings/edu.umd.cs.findbugs.core.prefs b/tests/org.eclipse.ease.modules.platform.test/.settings/edu.umd.cs.findbugs.core.prefs
new file mode 100644
index 0000000..8bf6d5e
--- /dev/null
+++ b/tests/org.eclipse.ease.modules.platform.test/.settings/edu.umd.cs.findbugs.core.prefs
@@ -0,0 +1,145 @@
+#SpotBugs User Preferences

+#Thu Mar 11 18:38:53 CET 2021

+detectorExplicitSerialization=ExplicitSerialization|true

+detectorMultithreadedInstanceAccess=MultithreadedInstanceAccess|true

+detectorConfusionBetweenInheritedAndOuterMethod=ConfusionBetweenInheritedAndOuterMethod|true

+detectorWrongMapIterator=WrongMapIterator|true

+detectorUnnecessaryMath=UnnecessaryMath|true

+detectorUselessSubclassMethod=UselessSubclassMethod|false

+filter_settings=Low|BAD_PRACTICE,CORRECTNESS,EXPERIMENTAL,I18N,MALICIOUS_CODE,MT_CORRECTNESS,PERFORMANCE,SECURITY,STYLE|false|20

+detectorURLProblems=URLProblems|true

+detectorIteratorIdioms=IteratorIdioms|true

+detectorMutableEnum=MutableEnum|true

+detectorFindNonShortCircuit=FindNonShortCircuit|true

+detectorSynchronizeAndNullCheckField=SynchronizeAndNullCheckField|true

+detectorVolatileUsage=VolatileUsage|true

+detectorFindNakedNotify=FindNakedNotify|true

+detectorFindUninitializedGet=FindUninitializedGet|true

+detectorFindUseOfNonSerializableValue=FindUseOfNonSerializableValue|true

+detectorFindJSR166LockMonitorenter=FindJSR166LockMonitorenter|true

+detectorQuestionableBooleanAssignment=QuestionableBooleanAssignment|true

+detectorSwitchFallthrough=SwitchFallthrough|true

+detectorFindLocalSelfAssignment2=FindLocalSelfAssignment2|true

+detectorConfusedInheritance=ConfusedInheritance|true

+detectorSynchronizationOnSharedBuiltinConstant=SynchronizationOnSharedBuiltinConstant|true

+detectorMutableStaticFields=MutableStaticFields|true

+detectorInvalidJUnitTest=InvalidJUnitTest|true

+detectorInfiniteLoop=InfiniteLoop|true

+detectorFindRunInvocations=FindRunInvocations|true

+detectorBadSyntaxForRegularExpression=BadSyntaxForRegularExpression|true

+detectorXMLFactoryBypass=XMLFactoryBypass|true

+detectorFindOpenStream=FindOpenStream|true

+detectorCheckExpectedWarnings=CheckExpectedWarnings|false

+detectorHugeSharedStringConstants=HugeSharedStringConstants|true

+detectorLostLoggerDueToWeakReference=LostLoggerDueToWeakReference|true

+detectorStringConcatenation=StringConcatenation|true

+detectorLoadOfKnownNullValue=LoadOfKnownNullValue|true

+detectorFinalizerNullsFields=FinalizerNullsFields|true

+detectorFindFieldSelfAssignment=FindFieldSelfAssignment|true

+detectorInefficientToArray=InefficientToArray|false

+detectorDontCatchIllegalMonitorStateException=DontCatchIllegalMonitorStateException|true

+detectorInconsistentAnnotations=InconsistentAnnotations|true

+detectorBadlyOverriddenAdapter=BadlyOverriddenAdapter|true

+detectorInstantiateStaticClass=InstantiateStaticClass|true

+detectorCheckRelaxingNullnessAnnotation=CheckRelaxingNullnessAnnotation|true

+detectorMethodReturnCheck=MethodReturnCheck|true

+detectorEqualsOperandShouldHaveClassCompatibleWithThis=EqualsOperandShouldHaveClassCompatibleWithThis|true

+detectorFindDoubleCheck=FindDoubleCheck|true

+detectorFindBadForLoop=FindBadForLoop|true

+detectorDefaultEncodingDetector=DefaultEncodingDetector|true

+detectorFindInconsistentSync2=FindInconsistentSync2|true

+detectorFindSpinLoop=FindSpinLoop|true

+detectorFindMaskedFields=FindMaskedFields|true

+detectorBooleanReturnNull=BooleanReturnNull|true

+detectorFindUnsyncGet=FindUnsyncGet|true

+detectorCrossSiteScripting=CrossSiteScripting|true

+detectorDroppedException=DroppedException|true

+detectorFindDeadLocalStores=FindDeadLocalStores|true

+detectorCheckImmutableAnnotation=CheckImmutableAnnotation|true

+detectorInfiniteRecursiveLoop=InfiniteRecursiveLoop|true

+detectorFindRefComparison=FindRefComparison|true

+detectorFindRoughConstants=FindRoughConstants|true

+detectorMutableLock=MutableLock|true

+detectorFindNullDeref=FindNullDeref|true

+detectorFindReturnRef=FindReturnRef|true

+detectorSynchronizeOnClassLiteralNotGetClass=SynchronizeOnClassLiteralNotGetClass|true

+detectorFindUselessControlFlow=FindUselessControlFlow|true

+detectorOverridingEqualsNotSymmetrical=OverridingEqualsNotSymmetrical|true

+detectorIDivResultCastToDouble=IDivResultCastToDouble|true

+detectorReadOfInstanceFieldInMethodInvokedByConstructorInSuperclass=ReadOfInstanceFieldInMethodInvokedByConstructorInSuperclass|true

+detectorFindSelfComparison=FindSelfComparison|true

+detectorFindFloatEquality=FindFloatEquality|true

+detectorFindComparatorProblems=FindComparatorProblems|true

+detectorRepeatedConditionals=RepeatedConditionals|true

+filter_settings_neg=NOISE|

+detectorInefficientMemberAccess=InefficientMemberAccess|false

+detectorFindUncalledPrivateMethods=FindUncalledPrivateMethods|true

+detectorNumberConstructor=NumberConstructor|true

+detectorDontAssertInstanceofInTests=DontAssertInstanceofInTests|true

+detectorFindFinalizeInvocations=FindFinalizeInvocations|true

+detectorFindNullDerefsInvolvingNonShortCircuitEvaluation=FindNullDerefsInvolvingNonShortCircuitEvaluation|true

+detectorDontIgnoreResultOfPutIfAbsent=DontIgnoreResultOfPutIfAbsent|true

+detectorFindUnconditionalWait=FindUnconditionalWait|true

+detectorFindTwoLockWait=FindTwoLockWait|true

+detectorFindSleepWithLockHeld=FindSleepWithLockHeld|true

+detectorFindUnreleasedLock=FindUnreleasedLock|true

+detectorInefficientIndexOf=InefficientIndexOf|false

+detectorDoInsideDoPrivileged=DoInsideDoPrivileged|true

+detectorFindEmptySynchronizedBlock=FindEmptySynchronizedBlock|true

+detectorOverridingMethodsMustInvokeSuperDetector=OverridingMethodsMustInvokeSuperDetector|true

+detectorWaitInLoop=WaitInLoop|true

+detectorIntCast2LongAsInstant=IntCast2LongAsInstant|true

+detectorBadUseOfReturnValue=BadUseOfReturnValue|true

+detectorFindSqlInjection=FindSqlInjection|true

+detectorUnreadFields=UnreadFields|true

+detectorSynchronizingOnContentsOfFieldToProtectField=SynchronizingOnContentsOfFieldToProtectField|true

+detectorFindUselessObjects=FindUselessObjects|true

+detectorBadAppletConstructor=BadAppletConstructor|false

+detectorInheritanceUnsafeGetResource=InheritanceUnsafeGetResource|true

+detectorSerializableIdiom=SerializableIdiom|true

+detectorNaming=Naming|true

+detectorNoteUnconditionalParamDerefs=NoteUnconditionalParamDerefs|true

+detectorFormatStringChecker=FormatStringChecker|true

+detectorSuspiciousThreadInterrupted=SuspiciousThreadInterrupted|true

+detectorEmptyZipFileEntry=EmptyZipFileEntry|false

+detectorFindCircularDependencies=FindCircularDependencies|false

+detectorPreferZeroLengthArrays=PreferZeroLengthArrays|true

+detectorAtomicityProblem=AtomicityProblem|true

+detectorRuntimeExceptionCapture=RuntimeExceptionCapture|true

+detectorInitializationChain=InitializationChain|true

+detectorInitializeNonnullFieldsInConstructor=InitializeNonnullFieldsInConstructor|true

+detectorOptionalReturnNull=OptionalReturnNull|true

+detectorStartInConstructor=StartInConstructor|true

+detectorFindUnsatisfiedObligation=FindUnsatisfiedObligation|true

+detectorRedundantConditions=RedundantConditions|true

+effort=max

+detectorRedundantInterfaces=RedundantInterfaces|true

+detectorDuplicateBranches=DuplicateBranches|true

+detectorCheckTypeQualifiers=CheckTypeQualifiers|true

+detectorComparatorIdiom=ComparatorIdiom|true

+detectorFindBadCast2=FindBadCast2|true

+detectorFindMismatchedWaitOrNotify=FindMismatchedWaitOrNotify|true

+excludefilter0=../../releng/org.eclipse.ease.modules.releng/spotbugs/spotbugs_filter.xml|true

+detectorBadResultSetAccess=BadResultSetAccess|true

+detectorIncompatMask=IncompatMask|true

+detectorCovariantArrayAssignment=CovariantArrayAssignment|false

+detectorDumbMethodInvocations=DumbMethodInvocations|true

+run_at_full_build=true

+detectorStaticCalendarDetector=StaticCalendarDetector|true

+detectorUncallableMethodOfAnonymousClass=UncallableMethodOfAnonymousClass|true

+detectorVarArgsProblems=VarArgsProblems|true

+detectorInefficientInitializationInsideLoop=InefficientInitializationInsideLoop|false

+detectorCloneIdiom=CloneIdiom|true

+detectorFindHEmismatch=FindHEmismatch|true

+detectorAppendingToAnObjectOutputStream=AppendingToAnObjectOutputStream|true

+detectorFindSelfComparison2=FindSelfComparison2|true

+detectorLazyInit=LazyInit|true

+detectorFindUnrelatedTypesInGenericContainer=FindUnrelatedTypesInGenericContainer|true

+detectorDontUseEnum=DontUseEnum|true

+detectorFindPuzzlers=FindPuzzlers|true

+detectorCallToUnsupportedMethod=CallToUnsupportedMethod|false

+detectorSuperfluousInstanceOf=SuperfluousInstanceOf|true

+detectorReadReturnShouldBeChecked=ReadReturnShouldBeChecked|true

+detector_threshold=3

+detectorPublicSemaphores=PublicSemaphores|false

+detectorDumbMethods=DumbMethods|true