mirror of
https://github.com/unicode-org/icu.git
synced 2025-04-06 22:15:31 +00:00
ICU-8957 Fixed issues detected by FindBugs in ICU library code except #9667 and #10097. Added FindBugs exclusion filter files in ICU4J library project directories.
X-SVN-Rev: 33516
This commit is contained in:
parent
69285080db
commit
e255e7d747
16 changed files with 534 additions and 48 deletions
3
.gitattributes
vendored
3
.gitattributes
vendored
|
@ -239,12 +239,14 @@ icu4j/main/classes/charset/.settings/org.eclipse.jdt.core.prefs -text
|
|||
icu4j/main/classes/charset/manifest.stub -text
|
||||
icu4j/main/classes/collate/.classpath -text
|
||||
icu4j/main/classes/collate/.project -text
|
||||
icu4j/main/classes/collate/.settings/edu.umd.cs.findbugs.core.prefs -text
|
||||
icu4j/main/classes/collate/.settings/org.eclipse.core.resources.prefs -text
|
||||
icu4j/main/classes/collate/.settings/org.eclipse.jdt.core.prefs -text
|
||||
icu4j/main/classes/collate/.settings/org.eclipse.jdt.ui.prefs -text
|
||||
icu4j/main/classes/collate/collate-build.launch -text
|
||||
icu4j/main/classes/core/.classpath -text
|
||||
icu4j/main/classes/core/.project -text
|
||||
icu4j/main/classes/core/.settings/edu.umd.cs.findbugs.core.prefs -text
|
||||
icu4j/main/classes/core/.settings/org.eclipse.core.resources.prefs -text
|
||||
icu4j/main/classes/core/.settings/org.eclipse.jdt.core.prefs -text
|
||||
icu4j/main/classes/core/manifest.stub -text
|
||||
|
@ -280,6 +282,7 @@ icu4j/main/classes/regiondata/.settings/org.eclipse.jdt.core.prefs -text
|
|||
icu4j/main/classes/regiondata/.settings/org.eclipse.jdt.ui.prefs -text
|
||||
icu4j/main/classes/regiondata/regiondata-build.launch -text
|
||||
icu4j/main/classes/translit/.externalToolBuilders/copy-data-translit.launch -text
|
||||
icu4j/main/classes/translit/.settings/edu.umd.cs.findbugs.core.prefs -text
|
||||
icu4j/main/classes/translit/.settings/org.eclipse.core.resources.prefs -text
|
||||
icu4j/main/classes/translit/.settings/org.eclipse.jdt.core.prefs -text
|
||||
icu4j/main/classes/translit/.settings/org.eclipse.jdt.ui.prefs -text
|
||||
|
|
|
@ -0,0 +1,133 @@
|
|||
#FindBugs User Preferences
|
||||
#Tue Apr 02 10:11:27 EDT 2013
|
||||
cloud_id=edu.umd.cs.findbugs.cloud.doNothingCloud
|
||||
detectorAppendingToAnObjectOutputStream=AppendingToAnObjectOutputStream|true
|
||||
detectorAtomicityProblem=AtomicityProblem|true
|
||||
detectorBadAppletConstructor=BadAppletConstructor|false
|
||||
detectorBadResultSetAccess=BadResultSetAccess|true
|
||||
detectorBadSyntaxForRegularExpression=BadSyntaxForRegularExpression|true
|
||||
detectorBadUseOfReturnValue=BadUseOfReturnValue|true
|
||||
detectorBadlyOverriddenAdapter=BadlyOverriddenAdapter|true
|
||||
detectorBooleanReturnNull=BooleanReturnNull|true
|
||||
detectorCallToUnsupportedMethod=CallToUnsupportedMethod|false
|
||||
detectorCheckExpectedWarnings=CheckExpectedWarnings|false
|
||||
detectorCheckImmutableAnnotation=CheckImmutableAnnotation|true
|
||||
detectorCheckTypeQualifiers=CheckTypeQualifiers|true
|
||||
detectorCloneIdiom=CloneIdiom|true
|
||||
detectorComparatorIdiom=ComparatorIdiom|true
|
||||
detectorConfusedInheritance=ConfusedInheritance|true
|
||||
detectorConfusionBetweenInheritedAndOuterMethod=ConfusionBetweenInheritedAndOuterMethod|true
|
||||
detectorCrossSiteScripting=CrossSiteScripting|true
|
||||
detectorDefaultEncodingDetector=DefaultEncodingDetector|true
|
||||
detectorDoInsideDoPrivileged=DoInsideDoPrivileged|true
|
||||
detectorDontCatchIllegalMonitorStateException=DontCatchIllegalMonitorStateException|true
|
||||
detectorDontIgnoreResultOfPutIfAbsent=DontIgnoreResultOfPutIfAbsent|true
|
||||
detectorDontUseEnum=DontUseEnum|true
|
||||
detectorDroppedException=DroppedException|true
|
||||
detectorDumbMethodInvocations=DumbMethodInvocations|true
|
||||
detectorDumbMethods=DumbMethods|true
|
||||
detectorDuplicateBranches=DuplicateBranches|true
|
||||
detectorEmptyZipFileEntry=EmptyZipFileEntry|true
|
||||
detectorEqualsOperandShouldHaveClassCompatibleWithThis=EqualsOperandShouldHaveClassCompatibleWithThis|true
|
||||
detectorExplicitSerialization=ExplicitSerialization|true
|
||||
detectorFinalizerNullsFields=FinalizerNullsFields|true
|
||||
detectorFindBadCast2=FindBadCast2|true
|
||||
detectorFindBadForLoop=FindBadForLoop|true
|
||||
detectorFindCircularDependencies=FindCircularDependencies|false
|
||||
detectorFindDeadLocalStores=FindDeadLocalStores|true
|
||||
detectorFindDoubleCheck=FindDoubleCheck|true
|
||||
detectorFindEmptySynchronizedBlock=FindEmptySynchronizedBlock|true
|
||||
detectorFindFieldSelfAssignment=FindFieldSelfAssignment|true
|
||||
detectorFindFinalizeInvocations=FindFinalizeInvocations|true
|
||||
detectorFindFloatEquality=FindFloatEquality|true
|
||||
detectorFindHEmismatch=FindHEmismatch|true
|
||||
detectorFindInconsistentSync2=FindInconsistentSync2|true
|
||||
detectorFindJSR166LockMonitorenter=FindJSR166LockMonitorenter|true
|
||||
detectorFindLocalSelfAssignment2=FindLocalSelfAssignment2|true
|
||||
detectorFindMaskedFields=FindMaskedFields|true
|
||||
detectorFindMismatchedWaitOrNotify=FindMismatchedWaitOrNotify|true
|
||||
detectorFindNakedNotify=FindNakedNotify|true
|
||||
detectorFindNonShortCircuit=FindNonShortCircuit|true
|
||||
detectorFindNullDeref=FindNullDeref|true
|
||||
detectorFindNullDerefsInvolvingNonShortCircuitEvaluation=FindNullDerefsInvolvingNonShortCircuitEvaluation|true
|
||||
detectorFindOpenStream=FindOpenStream|true
|
||||
detectorFindPuzzlers=FindPuzzlers|true
|
||||
detectorFindRefComparison=FindRefComparison|true
|
||||
detectorFindReturnRef=FindReturnRef|true
|
||||
detectorFindRunInvocations=FindRunInvocations|true
|
||||
detectorFindSelfComparison=FindSelfComparison|true
|
||||
detectorFindSelfComparison2=FindSelfComparison2|true
|
||||
detectorFindSleepWithLockHeld=FindSleepWithLockHeld|true
|
||||
detectorFindSpinLoop=FindSpinLoop|true
|
||||
detectorFindSqlInjection=FindSqlInjection|true
|
||||
detectorFindTwoLockWait=FindTwoLockWait|true
|
||||
detectorFindUncalledPrivateMethods=FindUncalledPrivateMethods|true
|
||||
detectorFindUnconditionalWait=FindUnconditionalWait|true
|
||||
detectorFindUninitializedGet=FindUninitializedGet|true
|
||||
detectorFindUnrelatedTypesInGenericContainer=FindUnrelatedTypesInGenericContainer|true
|
||||
detectorFindUnreleasedLock=FindUnreleasedLock|true
|
||||
detectorFindUnsatisfiedObligation=FindUnsatisfiedObligation|true
|
||||
detectorFindUnsyncGet=FindUnsyncGet|true
|
||||
detectorFindUseOfNonSerializableValue=FindUseOfNonSerializableValue|true
|
||||
detectorFindUselessControlFlow=FindUselessControlFlow|true
|
||||
detectorFormatStringChecker=FormatStringChecker|true
|
||||
detectorHugeSharedStringConstants=HugeSharedStringConstants|true
|
||||
detectorIDivResultCastToDouble=IDivResultCastToDouble|true
|
||||
detectorIncompatMask=IncompatMask|true
|
||||
detectorInconsistentAnnotations=InconsistentAnnotations|true
|
||||
detectorInefficientMemberAccess=InefficientMemberAccess|false
|
||||
detectorInefficientToArray=InefficientToArray|true
|
||||
detectorInfiniteLoop=InfiniteLoop|true
|
||||
detectorInfiniteRecursiveLoop=InfiniteRecursiveLoop|true
|
||||
detectorInheritanceUnsafeGetResource=InheritanceUnsafeGetResource|true
|
||||
detectorInitializationChain=InitializationChain|true
|
||||
detectorInitializeNonnullFieldsInConstructor=InitializeNonnullFieldsInConstructor|true
|
||||
detectorInstantiateStaticClass=InstantiateStaticClass|true
|
||||
detectorIntCast2LongAsInstant=IntCast2LongAsInstant|true
|
||||
detectorInvalidJUnitTest=InvalidJUnitTest|true
|
||||
detectorIteratorIdioms=IteratorIdioms|true
|
||||
detectorLazyInit=LazyInit|true
|
||||
detectorLoadOfKnownNullValue=LoadOfKnownNullValue|true
|
||||
detectorLostLoggerDueToWeakReference=LostLoggerDueToWeakReference|true
|
||||
detectorMethodReturnCheck=MethodReturnCheck|true
|
||||
detectorMultithreadedInstanceAccess=MultithreadedInstanceAccess|true
|
||||
detectorMutableLock=MutableLock|true
|
||||
detectorMutableStaticFields=MutableStaticFields|true
|
||||
detectorNaming=Naming|true
|
||||
detectorNoteUnconditionalParamDerefs=NoteUnconditionalParamDerefs|true
|
||||
detectorNumberConstructor=NumberConstructor|true
|
||||
detectorOverridingEqualsNotSymmetrical=OverridingEqualsNotSymmetrical|true
|
||||
detectorPreferZeroLengthArrays=PreferZeroLengthArrays|true
|
||||
detectorPublicSemaphores=PublicSemaphores|false
|
||||
detectorQuestionableBooleanAssignment=QuestionableBooleanAssignment|true
|
||||
detectorReadOfInstanceFieldInMethodInvokedByConstructorInSuperclass=ReadOfInstanceFieldInMethodInvokedByConstructorInSuperclass|true
|
||||
detectorReadReturnShouldBeChecked=ReadReturnShouldBeChecked|true
|
||||
detectorRedundantInterfaces=RedundantInterfaces|true
|
||||
detectorRepeatedConditionals=RepeatedConditionals|true
|
||||
detectorRuntimeExceptionCapture=RuntimeExceptionCapture|true
|
||||
detectorSerializableIdiom=SerializableIdiom|true
|
||||
detectorStartInConstructor=StartInConstructor|true
|
||||
detectorStaticCalendarDetector=StaticCalendarDetector|true
|
||||
detectorStringConcatenation=StringConcatenation|true
|
||||
detectorSuperfluousInstanceOf=SuperfluousInstanceOf|true
|
||||
detectorSuspiciousThreadInterrupted=SuspiciousThreadInterrupted|true
|
||||
detectorSwitchFallthrough=SwitchFallthrough|true
|
||||
detectorSynchronizeAndNullCheckField=SynchronizeAndNullCheckField|true
|
||||
detectorSynchronizeOnClassLiteralNotGetClass=SynchronizeOnClassLiteralNotGetClass|true
|
||||
detectorSynchronizingOnContentsOfFieldToProtectField=SynchronizingOnContentsOfFieldToProtectField|true
|
||||
detectorURLProblems=URLProblems|true
|
||||
detectorUncallableMethodOfAnonymousClass=UncallableMethodOfAnonymousClass|true
|
||||
detectorUnnecessaryMath=UnnecessaryMath|true
|
||||
detectorUnreadFields=UnreadFields|true
|
||||
detectorUselessSubclassMethod=UselessSubclassMethod|false
|
||||
detectorVarArgsProblems=VarArgsProblems|true
|
||||
detectorVolatileUsage=VolatileUsage|true
|
||||
detectorWaitInLoop=WaitInLoop|true
|
||||
detectorWrongMapIterator=WrongMapIterator|true
|
||||
detectorXMLFactoryBypass=XMLFactoryBypass|true
|
||||
detector_threshold=2
|
||||
effort=default
|
||||
excludefilter0=findbugs-exclude.xml|true
|
||||
filter_settings=Medium|BAD_PRACTICE,CORRECTNESS,MT_CORRECTNESS,PERFORMANCE,STYLE|false|15
|
||||
filter_settings_neg=MALICIOUS_CODE,NOISE,I18N,SECURITY,EXPERIMENTAL|
|
||||
run_at_full_build=false
|
14
icu4j/main/classes/collate/findbugs-exclude.xml
Normal file
14
icu4j/main/classes/collate/findbugs-exclude.xml
Normal file
|
@ -0,0 +1,14 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!--
|
||||
*******************************************************************************
|
||||
* Copyright (C) 2013, International Business Machines Corporation and *
|
||||
* others. All Rights Reserved. *
|
||||
*******************************************************************************
|
||||
-->
|
||||
<FindBugsFilter>
|
||||
<Match>
|
||||
<Class name="com.ibm.icu.text.CollationParsedRuleBuilder"/>
|
||||
<Method name="allocateWeights" params="int,int,int,int,com.ibm.icu.text.CollationParsedRuleBuilder$WeightRange[]" returns="int"/>
|
||||
<Bug pattern="SA_FIELD_DOUBLE_ASSIGNMENT"/>
|
||||
</Match>
|
||||
</FindBugsFilter>
|
133
icu4j/main/classes/core/.settings/edu.umd.cs.findbugs.core.prefs
Normal file
133
icu4j/main/classes/core/.settings/edu.umd.cs.findbugs.core.prefs
Normal file
|
@ -0,0 +1,133 @@
|
|||
#FindBugs User Preferences
|
||||
#Fri Mar 29 14:39:16 EDT 2013
|
||||
cloud_id=edu.umd.cs.findbugs.cloud.doNothingCloud
|
||||
detectorAppendingToAnObjectOutputStream=AppendingToAnObjectOutputStream|true
|
||||
detectorAtomicityProblem=AtomicityProblem|true
|
||||
detectorBadAppletConstructor=BadAppletConstructor|false
|
||||
detectorBadResultSetAccess=BadResultSetAccess|true
|
||||
detectorBadSyntaxForRegularExpression=BadSyntaxForRegularExpression|true
|
||||
detectorBadUseOfReturnValue=BadUseOfReturnValue|true
|
||||
detectorBadlyOverriddenAdapter=BadlyOverriddenAdapter|true
|
||||
detectorBooleanReturnNull=BooleanReturnNull|true
|
||||
detectorCallToUnsupportedMethod=CallToUnsupportedMethod|false
|
||||
detectorCheckExpectedWarnings=CheckExpectedWarnings|false
|
||||
detectorCheckImmutableAnnotation=CheckImmutableAnnotation|true
|
||||
detectorCheckTypeQualifiers=CheckTypeQualifiers|true
|
||||
detectorCloneIdiom=CloneIdiom|true
|
||||
detectorComparatorIdiom=ComparatorIdiom|true
|
||||
detectorConfusedInheritance=ConfusedInheritance|true
|
||||
detectorConfusionBetweenInheritedAndOuterMethod=ConfusionBetweenInheritedAndOuterMethod|true
|
||||
detectorCrossSiteScripting=CrossSiteScripting|true
|
||||
detectorDefaultEncodingDetector=DefaultEncodingDetector|true
|
||||
detectorDoInsideDoPrivileged=DoInsideDoPrivileged|true
|
||||
detectorDontCatchIllegalMonitorStateException=DontCatchIllegalMonitorStateException|true
|
||||
detectorDontIgnoreResultOfPutIfAbsent=DontIgnoreResultOfPutIfAbsent|true
|
||||
detectorDontUseEnum=DontUseEnum|true
|
||||
detectorDroppedException=DroppedException|true
|
||||
detectorDumbMethodInvocations=DumbMethodInvocations|true
|
||||
detectorDumbMethods=DumbMethods|true
|
||||
detectorDuplicateBranches=DuplicateBranches|true
|
||||
detectorEmptyZipFileEntry=EmptyZipFileEntry|true
|
||||
detectorEqualsOperandShouldHaveClassCompatibleWithThis=EqualsOperandShouldHaveClassCompatibleWithThis|true
|
||||
detectorExplicitSerialization=ExplicitSerialization|true
|
||||
detectorFinalizerNullsFields=FinalizerNullsFields|true
|
||||
detectorFindBadCast2=FindBadCast2|true
|
||||
detectorFindBadForLoop=FindBadForLoop|true
|
||||
detectorFindCircularDependencies=FindCircularDependencies|false
|
||||
detectorFindDeadLocalStores=FindDeadLocalStores|true
|
||||
detectorFindDoubleCheck=FindDoubleCheck|true
|
||||
detectorFindEmptySynchronizedBlock=FindEmptySynchronizedBlock|true
|
||||
detectorFindFieldSelfAssignment=FindFieldSelfAssignment|true
|
||||
detectorFindFinalizeInvocations=FindFinalizeInvocations|true
|
||||
detectorFindFloatEquality=FindFloatEquality|true
|
||||
detectorFindHEmismatch=FindHEmismatch|true
|
||||
detectorFindInconsistentSync2=FindInconsistentSync2|true
|
||||
detectorFindJSR166LockMonitorenter=FindJSR166LockMonitorenter|true
|
||||
detectorFindLocalSelfAssignment2=FindLocalSelfAssignment2|true
|
||||
detectorFindMaskedFields=FindMaskedFields|true
|
||||
detectorFindMismatchedWaitOrNotify=FindMismatchedWaitOrNotify|true
|
||||
detectorFindNakedNotify=FindNakedNotify|true
|
||||
detectorFindNonShortCircuit=FindNonShortCircuit|true
|
||||
detectorFindNullDeref=FindNullDeref|true
|
||||
detectorFindNullDerefsInvolvingNonShortCircuitEvaluation=FindNullDerefsInvolvingNonShortCircuitEvaluation|true
|
||||
detectorFindOpenStream=FindOpenStream|true
|
||||
detectorFindPuzzlers=FindPuzzlers|true
|
||||
detectorFindRefComparison=FindRefComparison|true
|
||||
detectorFindReturnRef=FindReturnRef|true
|
||||
detectorFindRunInvocations=FindRunInvocations|true
|
||||
detectorFindSelfComparison=FindSelfComparison|true
|
||||
detectorFindSelfComparison2=FindSelfComparison2|true
|
||||
detectorFindSleepWithLockHeld=FindSleepWithLockHeld|true
|
||||
detectorFindSpinLoop=FindSpinLoop|true
|
||||
detectorFindSqlInjection=FindSqlInjection|true
|
||||
detectorFindTwoLockWait=FindTwoLockWait|true
|
||||
detectorFindUncalledPrivateMethods=FindUncalledPrivateMethods|true
|
||||
detectorFindUnconditionalWait=FindUnconditionalWait|true
|
||||
detectorFindUninitializedGet=FindUninitializedGet|true
|
||||
detectorFindUnrelatedTypesInGenericContainer=FindUnrelatedTypesInGenericContainer|true
|
||||
detectorFindUnreleasedLock=FindUnreleasedLock|true
|
||||
detectorFindUnsatisfiedObligation=FindUnsatisfiedObligation|true
|
||||
detectorFindUnsyncGet=FindUnsyncGet|true
|
||||
detectorFindUseOfNonSerializableValue=FindUseOfNonSerializableValue|true
|
||||
detectorFindUselessControlFlow=FindUselessControlFlow|true
|
||||
detectorFormatStringChecker=FormatStringChecker|true
|
||||
detectorHugeSharedStringConstants=HugeSharedStringConstants|true
|
||||
detectorIDivResultCastToDouble=IDivResultCastToDouble|true
|
||||
detectorIncompatMask=IncompatMask|true
|
||||
detectorInconsistentAnnotations=InconsistentAnnotations|true
|
||||
detectorInefficientMemberAccess=InefficientMemberAccess|false
|
||||
detectorInefficientToArray=InefficientToArray|true
|
||||
detectorInfiniteLoop=InfiniteLoop|true
|
||||
detectorInfiniteRecursiveLoop=InfiniteRecursiveLoop|true
|
||||
detectorInheritanceUnsafeGetResource=InheritanceUnsafeGetResource|true
|
||||
detectorInitializationChain=InitializationChain|true
|
||||
detectorInitializeNonnullFieldsInConstructor=InitializeNonnullFieldsInConstructor|true
|
||||
detectorInstantiateStaticClass=InstantiateStaticClass|true
|
||||
detectorIntCast2LongAsInstant=IntCast2LongAsInstant|true
|
||||
detectorInvalidJUnitTest=InvalidJUnitTest|true
|
||||
detectorIteratorIdioms=IteratorIdioms|true
|
||||
detectorLazyInit=LazyInit|true
|
||||
detectorLoadOfKnownNullValue=LoadOfKnownNullValue|true
|
||||
detectorLostLoggerDueToWeakReference=LostLoggerDueToWeakReference|true
|
||||
detectorMethodReturnCheck=MethodReturnCheck|true
|
||||
detectorMultithreadedInstanceAccess=MultithreadedInstanceAccess|true
|
||||
detectorMutableLock=MutableLock|true
|
||||
detectorMutableStaticFields=MutableStaticFields|true
|
||||
detectorNaming=Naming|true
|
||||
detectorNoteUnconditionalParamDerefs=NoteUnconditionalParamDerefs|true
|
||||
detectorNumberConstructor=NumberConstructor|true
|
||||
detectorOverridingEqualsNotSymmetrical=OverridingEqualsNotSymmetrical|true
|
||||
detectorPreferZeroLengthArrays=PreferZeroLengthArrays|true
|
||||
detectorPublicSemaphores=PublicSemaphores|false
|
||||
detectorQuestionableBooleanAssignment=QuestionableBooleanAssignment|true
|
||||
detectorReadOfInstanceFieldInMethodInvokedByConstructorInSuperclass=ReadOfInstanceFieldInMethodInvokedByConstructorInSuperclass|true
|
||||
detectorReadReturnShouldBeChecked=ReadReturnShouldBeChecked|true
|
||||
detectorRedundantInterfaces=RedundantInterfaces|true
|
||||
detectorRepeatedConditionals=RepeatedConditionals|true
|
||||
detectorRuntimeExceptionCapture=RuntimeExceptionCapture|true
|
||||
detectorSerializableIdiom=SerializableIdiom|true
|
||||
detectorStartInConstructor=StartInConstructor|true
|
||||
detectorStaticCalendarDetector=StaticCalendarDetector|true
|
||||
detectorStringConcatenation=StringConcatenation|true
|
||||
detectorSuperfluousInstanceOf=SuperfluousInstanceOf|true
|
||||
detectorSuspiciousThreadInterrupted=SuspiciousThreadInterrupted|true
|
||||
detectorSwitchFallthrough=SwitchFallthrough|true
|
||||
detectorSynchronizeAndNullCheckField=SynchronizeAndNullCheckField|true
|
||||
detectorSynchronizeOnClassLiteralNotGetClass=SynchronizeOnClassLiteralNotGetClass|true
|
||||
detectorSynchronizingOnContentsOfFieldToProtectField=SynchronizingOnContentsOfFieldToProtectField|true
|
||||
detectorURLProblems=URLProblems|true
|
||||
detectorUncallableMethodOfAnonymousClass=UncallableMethodOfAnonymousClass|true
|
||||
detectorUnnecessaryMath=UnnecessaryMath|true
|
||||
detectorUnreadFields=UnreadFields|true
|
||||
detectorUselessSubclassMethod=UselessSubclassMethod|false
|
||||
detectorVarArgsProblems=VarArgsProblems|true
|
||||
detectorVolatileUsage=VolatileUsage|true
|
||||
detectorWaitInLoop=WaitInLoop|true
|
||||
detectorWrongMapIterator=WrongMapIterator|true
|
||||
detectorXMLFactoryBypass=XMLFactoryBypass|true
|
||||
detector_threshold=2
|
||||
effort=default
|
||||
excludefilter0=findbugs-exclude.xml|true
|
||||
filter_settings=Medium|BAD_PRACTICE,CORRECTNESS,MT_CORRECTNESS,PERFORMANCE,STYLE|false|15
|
||||
filter_settings_neg=MALICIOUS_CODE,NOISE,I18N,SECURITY,EXPERIMENTAL|
|
||||
run_at_full_build=false
|
58
icu4j/main/classes/core/findbugs-exclude.xml
Normal file
58
icu4j/main/classes/core/findbugs-exclude.xml
Normal file
|
@ -0,0 +1,58 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!--
|
||||
*******************************************************************************
|
||||
* Copyright (C) 2013, International Business Machines Corporation and *
|
||||
* others. All Rights Reserved. *
|
||||
*******************************************************************************
|
||||
-->
|
||||
<FindBugsFilter>
|
||||
<Match>
|
||||
<Class name="com.ibm.icu.impl.locale.AsciiUtil"/>
|
||||
<Or>
|
||||
<Method name="caseIgnoreCompare" params="java.lang.String,java.lang.String" returns="int"/>
|
||||
<Method name="caseIgnoreMatch" params="java.lang.String,java.lang.String" returns="boolean"/>
|
||||
</Or>
|
||||
<Bug pattern="ES_COMPARING_PARAMETER_STRING_WITH_EQ"/>
|
||||
</Match>
|
||||
|
||||
<Match>
|
||||
<Class name="com.ibm.icu.text.UTF16$StringComparator"/>
|
||||
<Method name="compare" params="java.lang.String,java.lang.String" returns="int"/>
|
||||
<Bug pattern="ES_COMPARING_PARAMETER_STRING_WITH_EQ"/>
|
||||
</Match>
|
||||
|
||||
<Match>
|
||||
<Class name="com.ibm.icu.impl.RelativeDateFormat"/>
|
||||
<Field name="fDateFormat"/>
|
||||
<Bug pattern="UWF_UNWRITTEN_FIELD"/>
|
||||
</Match>
|
||||
|
||||
<Match>
|
||||
<Class name="com.ibm.icu.impl.CalendarAstronomer"/>
|
||||
<Or>
|
||||
<Method name="eclipticObliquity" params="" returns="double"/>
|
||||
<Method name="getJulianCentury" params="" returns="double"/>
|
||||
<Method name="getJulianDay" params="" returns="double"/>
|
||||
</Or>
|
||||
<Bug pattern="FE_FLOATING_POINT_EQUALITY"/>
|
||||
</Match>
|
||||
|
||||
<Match>
|
||||
<Class name="com.ibm.icu.text.DecimalFormat"/>
|
||||
<Method name="round" params="double,double,double,int,boolean" returns="double"/>
|
||||
<Bug pattern="FE_FLOATING_POINT_EQUALITY"/>
|
||||
</Match>
|
||||
|
||||
<Match>
|
||||
<Class name="com.ibm.icu.text.NFRule"/>
|
||||
<Method name="doParse" params="java.lang.String,java.text.ParsePosition,boolean,double" returns="java.lang.Number"/>
|
||||
<Bug pattern="FE_FLOATING_POINT_EQUALITY"/>
|
||||
</Match>
|
||||
|
||||
<Match>
|
||||
<Class name="com.ibm.icu.impl.UnicodeRegex"/>
|
||||
<Field name="log"/>
|
||||
<Bug pattern="UWF_NULL_FIELD"/>
|
||||
</Match>
|
||||
|
||||
</FindBugsFilter>
|
|
@ -1,6 +1,6 @@
|
|||
/**
|
||||
*******************************************************************************
|
||||
* Copyright (C) 1996-2011, International Business Machines Corporation and *
|
||||
* Copyright (C) 1996-2013, International Business Machines Corporation and *
|
||||
* others. All Rights Reserved. *
|
||||
*******************************************************************************
|
||||
*/
|
||||
|
@ -316,9 +316,7 @@ public final class UCharacterName
|
|||
String result = getName(ch, UCharacterNameChoice.UNICODE_CHAR_NAME);
|
||||
if (result == null) {
|
||||
// TODO: Return Name_Alias/control names for control codes 0..1F & 7F..9F.
|
||||
if (result == null) {
|
||||
result = getExtendedOr10Name(ch);
|
||||
}
|
||||
result = getExtendedOr10Name(ch);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/**
|
||||
*******************************************************************************
|
||||
* Copyright (C) 2001-2011, International Business Machines Corporation and *
|
||||
* Copyright (C) 2001-2013, International Business Machines Corporation and *
|
||||
* others. All Rights Reserved. *
|
||||
*******************************************************************************
|
||||
*/
|
||||
|
@ -144,8 +144,8 @@ public class ResourceReader {
|
|||
// Remove BOMs
|
||||
++lineNo;
|
||||
String line = reader.readLine();
|
||||
if (line.charAt(0) == '\uFFEF' ||
|
||||
line.charAt(0) == '\uFEFF') {
|
||||
if (line != null && (line.charAt(0) == '\uFFEF' ||
|
||||
line.charAt(0) == '\uFEFF')) {
|
||||
line = line.substring(1);
|
||||
}
|
||||
return line;
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
*******************************************************************************
|
||||
* Copyright (C) 2007-2009, International Business Machines Corporation and *
|
||||
* Copyright (C) 2007-2013, International Business Machines Corporation and *
|
||||
* others. All Rights Reserved. *
|
||||
*******************************************************************************
|
||||
*/
|
||||
|
@ -30,8 +30,6 @@ public class BasicDurationFormat extends DurationFormat {
|
|||
return new BasicDurationFormat(locale);
|
||||
}
|
||||
|
||||
private static boolean checkXMLDuration = true;
|
||||
|
||||
public StringBuffer format(Object object, StringBuffer toAppend, FieldPosition pos) {
|
||||
if(object instanceof Long) {
|
||||
String res = formatDurationFromNow(((Long)object).longValue());
|
||||
|
@ -39,15 +37,9 @@ public class BasicDurationFormat extends DurationFormat {
|
|||
} else if(object instanceof Date) {
|
||||
String res = formatDurationFromNowTo(((Date)object));
|
||||
return toAppend.append(res);
|
||||
}
|
||||
if(checkXMLDuration) try {
|
||||
if(object instanceof javax.xml.datatype.Duration) {
|
||||
String res = formatDuration(object);
|
||||
return toAppend.append(res);
|
||||
}
|
||||
} catch ( NoClassDefFoundError ncdfe ) {
|
||||
System.err.println("Skipping XML capability");
|
||||
checkXMLDuration = false; // don't try again
|
||||
} else if (object instanceof javax.xml.datatype.Duration) {
|
||||
String res = formatDuration(object);
|
||||
return toAppend.append(res);
|
||||
}
|
||||
throw new IllegalArgumentException("Cannot format given Object as a Duration");
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/****************************************************************************
|
||||
* Copyright (C) 2000-2012, International Business Machines Corporation and
|
||||
* Copyright (C) 2000-2013, International Business Machines Corporation and
|
||||
* others. All Rights Reserved.
|
||||
****************************************************************************
|
||||
*/
|
||||
|
@ -68,7 +68,8 @@ public class ChineseDateFormatSymbols extends DateFormatSymbols {
|
|||
* @deprecated ICU 50
|
||||
*/
|
||||
public ChineseDateFormatSymbols(Calendar cal, Locale locale) {
|
||||
super(cal==null?null:cal.getClass(), locale);
|
||||
// NPE is thrown here when cal is null, like the super class does
|
||||
super(cal.getClass(), locale);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -78,7 +79,8 @@ public class ChineseDateFormatSymbols extends DateFormatSymbols {
|
|||
* @deprecated ICU 50
|
||||
*/
|
||||
public ChineseDateFormatSymbols(Calendar cal, ULocale locale) {
|
||||
super(cal == null ? null : cal.getClass(), locale);
|
||||
// NPE is thrown here when cal is null, like the super class does
|
||||
super(cal.getClass(), locale);
|
||||
}
|
||||
|
||||
// New API
|
||||
|
|
|
@ -708,6 +708,9 @@ public class DateFormatSymbols implements Serializable, Cloneable {
|
|||
}
|
||||
break;
|
||||
}
|
||||
if (returnValue == null) {
|
||||
throw new IllegalArgumentException("Bad context or width argument");
|
||||
}
|
||||
return duplicate(returnValue);
|
||||
}
|
||||
|
||||
|
@ -836,6 +839,9 @@ public class DateFormatSymbols implements Serializable, Cloneable {
|
|||
}
|
||||
break;
|
||||
}
|
||||
if (returnValue == null) {
|
||||
throw new IllegalArgumentException("Bad context or width argument");
|
||||
}
|
||||
return duplicate(returnValue);
|
||||
}
|
||||
|
||||
|
@ -960,6 +966,9 @@ public class DateFormatSymbols implements Serializable, Cloneable {
|
|||
}
|
||||
break;
|
||||
}
|
||||
if (returnValue == null) {
|
||||
throw new IllegalArgumentException("Bad context or width argument");
|
||||
}
|
||||
return duplicate(returnValue);
|
||||
}
|
||||
|
||||
|
|
|
@ -456,6 +456,15 @@ public class PluralRules implements Serializable {
|
|||
}
|
||||
@Override
|
||||
public boolean equals(Object arg0) {
|
||||
if (arg0 == null) {
|
||||
return false;
|
||||
}
|
||||
if (arg0 == this) {
|
||||
return true;
|
||||
}
|
||||
if (!(arg0 instanceof NumberInfo)) {
|
||||
return false;
|
||||
}
|
||||
NumberInfo other = (NumberInfo)arg0;
|
||||
return source == other.source && visibleFractionDigitCount == other.visibleFractionDigitCount && fractionalDigits == other.fractionalDigits;
|
||||
}
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
*******************************************************************************
|
||||
* Copyright (C) 1996-2012, International Business Machines Corporation and *
|
||||
* Copyright (C) 1996-2013, International Business Machines Corporation and *
|
||||
* others. All Rights Reserved. *
|
||||
*******************************************************************************
|
||||
*/
|
||||
|
@ -4062,14 +4062,14 @@ public class UnicodeSet extends UnicodeFilter implements Iterable<String>, Compa
|
|||
UnicodeSetIterator2(UnicodeSet source) {
|
||||
// set according to invariants
|
||||
len = source.len - 1;
|
||||
if (item >= len) {
|
||||
stringIterator = source.strings.iterator();
|
||||
sourceList = null;
|
||||
} else {
|
||||
if (len > 0) {
|
||||
sourceStrings = source.strings;
|
||||
sourceList = source.list;
|
||||
current = sourceList[item++];
|
||||
limit = sourceList[item++];
|
||||
} else {
|
||||
stringIterator = source.strings.iterator();
|
||||
sourceList = null;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/**
|
||||
*******************************************************************************
|
||||
* Copyright (C) 2001-2011, International Business Machines Corporation and *
|
||||
* Copyright (C) 2001-2013, International Business Machines Corporation and *
|
||||
* others. All Rights Reserved. *
|
||||
*******************************************************************************
|
||||
*/
|
||||
|
@ -62,22 +62,13 @@ public class CaseInsensitiveString {
|
|||
if (this == o) {
|
||||
return true;
|
||||
}
|
||||
getFolded();
|
||||
try {
|
||||
if (o instanceof CaseInsensitiveString) {
|
||||
getFolded();
|
||||
CaseInsensitiveString cis = (CaseInsensitiveString) o;
|
||||
|
||||
cis.getFolded();
|
||||
|
||||
return folded.equals(cis.folded);
|
||||
} catch (ClassCastException e) {
|
||||
try {
|
||||
String s = (String) o;
|
||||
|
||||
return folded.equals(foldCase(s));
|
||||
} catch (ClassCastException e2) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -0,0 +1,133 @@
|
|||
#FindBugs User Preferences
|
||||
#Tue Apr 02 10:38:26 EDT 2013
|
||||
cloud_id=edu.umd.cs.findbugs.cloud.doNothingCloud
|
||||
detectorAppendingToAnObjectOutputStream=AppendingToAnObjectOutputStream|true
|
||||
detectorAtomicityProblem=AtomicityProblem|true
|
||||
detectorBadAppletConstructor=BadAppletConstructor|false
|
||||
detectorBadResultSetAccess=BadResultSetAccess|true
|
||||
detectorBadSyntaxForRegularExpression=BadSyntaxForRegularExpression|true
|
||||
detectorBadUseOfReturnValue=BadUseOfReturnValue|true
|
||||
detectorBadlyOverriddenAdapter=BadlyOverriddenAdapter|true
|
||||
detectorBooleanReturnNull=BooleanReturnNull|true
|
||||
detectorCallToUnsupportedMethod=CallToUnsupportedMethod|false
|
||||
detectorCheckExpectedWarnings=CheckExpectedWarnings|false
|
||||
detectorCheckImmutableAnnotation=CheckImmutableAnnotation|true
|
||||
detectorCheckTypeQualifiers=CheckTypeQualifiers|true
|
||||
detectorCloneIdiom=CloneIdiom|true
|
||||
detectorComparatorIdiom=ComparatorIdiom|true
|
||||
detectorConfusedInheritance=ConfusedInheritance|true
|
||||
detectorConfusionBetweenInheritedAndOuterMethod=ConfusionBetweenInheritedAndOuterMethod|true
|
||||
detectorCrossSiteScripting=CrossSiteScripting|true
|
||||
detectorDefaultEncodingDetector=DefaultEncodingDetector|true
|
||||
detectorDoInsideDoPrivileged=DoInsideDoPrivileged|true
|
||||
detectorDontCatchIllegalMonitorStateException=DontCatchIllegalMonitorStateException|true
|
||||
detectorDontIgnoreResultOfPutIfAbsent=DontIgnoreResultOfPutIfAbsent|true
|
||||
detectorDontUseEnum=DontUseEnum|true
|
||||
detectorDroppedException=DroppedException|true
|
||||
detectorDumbMethodInvocations=DumbMethodInvocations|true
|
||||
detectorDumbMethods=DumbMethods|true
|
||||
detectorDuplicateBranches=DuplicateBranches|true
|
||||
detectorEmptyZipFileEntry=EmptyZipFileEntry|true
|
||||
detectorEqualsOperandShouldHaveClassCompatibleWithThis=EqualsOperandShouldHaveClassCompatibleWithThis|true
|
||||
detectorExplicitSerialization=ExplicitSerialization|true
|
||||
detectorFinalizerNullsFields=FinalizerNullsFields|true
|
||||
detectorFindBadCast2=FindBadCast2|true
|
||||
detectorFindBadForLoop=FindBadForLoop|true
|
||||
detectorFindCircularDependencies=FindCircularDependencies|false
|
||||
detectorFindDeadLocalStores=FindDeadLocalStores|true
|
||||
detectorFindDoubleCheck=FindDoubleCheck|true
|
||||
detectorFindEmptySynchronizedBlock=FindEmptySynchronizedBlock|true
|
||||
detectorFindFieldSelfAssignment=FindFieldSelfAssignment|true
|
||||
detectorFindFinalizeInvocations=FindFinalizeInvocations|true
|
||||
detectorFindFloatEquality=FindFloatEquality|true
|
||||
detectorFindHEmismatch=FindHEmismatch|true
|
||||
detectorFindInconsistentSync2=FindInconsistentSync2|true
|
||||
detectorFindJSR166LockMonitorenter=FindJSR166LockMonitorenter|true
|
||||
detectorFindLocalSelfAssignment2=FindLocalSelfAssignment2|true
|
||||
detectorFindMaskedFields=FindMaskedFields|true
|
||||
detectorFindMismatchedWaitOrNotify=FindMismatchedWaitOrNotify|true
|
||||
detectorFindNakedNotify=FindNakedNotify|true
|
||||
detectorFindNonShortCircuit=FindNonShortCircuit|true
|
||||
detectorFindNullDeref=FindNullDeref|true
|
||||
detectorFindNullDerefsInvolvingNonShortCircuitEvaluation=FindNullDerefsInvolvingNonShortCircuitEvaluation|true
|
||||
detectorFindOpenStream=FindOpenStream|true
|
||||
detectorFindPuzzlers=FindPuzzlers|true
|
||||
detectorFindRefComparison=FindRefComparison|true
|
||||
detectorFindReturnRef=FindReturnRef|true
|
||||
detectorFindRunInvocations=FindRunInvocations|true
|
||||
detectorFindSelfComparison=FindSelfComparison|true
|
||||
detectorFindSelfComparison2=FindSelfComparison2|true
|
||||
detectorFindSleepWithLockHeld=FindSleepWithLockHeld|true
|
||||
detectorFindSpinLoop=FindSpinLoop|true
|
||||
detectorFindSqlInjection=FindSqlInjection|true
|
||||
detectorFindTwoLockWait=FindTwoLockWait|true
|
||||
detectorFindUncalledPrivateMethods=FindUncalledPrivateMethods|true
|
||||
detectorFindUnconditionalWait=FindUnconditionalWait|true
|
||||
detectorFindUninitializedGet=FindUninitializedGet|true
|
||||
detectorFindUnrelatedTypesInGenericContainer=FindUnrelatedTypesInGenericContainer|true
|
||||
detectorFindUnreleasedLock=FindUnreleasedLock|true
|
||||
detectorFindUnsatisfiedObligation=FindUnsatisfiedObligation|true
|
||||
detectorFindUnsyncGet=FindUnsyncGet|true
|
||||
detectorFindUseOfNonSerializableValue=FindUseOfNonSerializableValue|true
|
||||
detectorFindUselessControlFlow=FindUselessControlFlow|true
|
||||
detectorFormatStringChecker=FormatStringChecker|true
|
||||
detectorHugeSharedStringConstants=HugeSharedStringConstants|true
|
||||
detectorIDivResultCastToDouble=IDivResultCastToDouble|true
|
||||
detectorIncompatMask=IncompatMask|true
|
||||
detectorInconsistentAnnotations=InconsistentAnnotations|true
|
||||
detectorInefficientMemberAccess=InefficientMemberAccess|false
|
||||
detectorInefficientToArray=InefficientToArray|true
|
||||
detectorInfiniteLoop=InfiniteLoop|true
|
||||
detectorInfiniteRecursiveLoop=InfiniteRecursiveLoop|true
|
||||
detectorInheritanceUnsafeGetResource=InheritanceUnsafeGetResource|true
|
||||
detectorInitializationChain=InitializationChain|true
|
||||
detectorInitializeNonnullFieldsInConstructor=InitializeNonnullFieldsInConstructor|true
|
||||
detectorInstantiateStaticClass=InstantiateStaticClass|true
|
||||
detectorIntCast2LongAsInstant=IntCast2LongAsInstant|true
|
||||
detectorInvalidJUnitTest=InvalidJUnitTest|true
|
||||
detectorIteratorIdioms=IteratorIdioms|true
|
||||
detectorLazyInit=LazyInit|true
|
||||
detectorLoadOfKnownNullValue=LoadOfKnownNullValue|true
|
||||
detectorLostLoggerDueToWeakReference=LostLoggerDueToWeakReference|true
|
||||
detectorMethodReturnCheck=MethodReturnCheck|true
|
||||
detectorMultithreadedInstanceAccess=MultithreadedInstanceAccess|true
|
||||
detectorMutableLock=MutableLock|true
|
||||
detectorMutableStaticFields=MutableStaticFields|true
|
||||
detectorNaming=Naming|true
|
||||
detectorNoteUnconditionalParamDerefs=NoteUnconditionalParamDerefs|true
|
||||
detectorNumberConstructor=NumberConstructor|true
|
||||
detectorOverridingEqualsNotSymmetrical=OverridingEqualsNotSymmetrical|true
|
||||
detectorPreferZeroLengthArrays=PreferZeroLengthArrays|true
|
||||
detectorPublicSemaphores=PublicSemaphores|false
|
||||
detectorQuestionableBooleanAssignment=QuestionableBooleanAssignment|true
|
||||
detectorReadOfInstanceFieldInMethodInvokedByConstructorInSuperclass=ReadOfInstanceFieldInMethodInvokedByConstructorInSuperclass|true
|
||||
detectorReadReturnShouldBeChecked=ReadReturnShouldBeChecked|true
|
||||
detectorRedundantInterfaces=RedundantInterfaces|true
|
||||
detectorRepeatedConditionals=RepeatedConditionals|true
|
||||
detectorRuntimeExceptionCapture=RuntimeExceptionCapture|true
|
||||
detectorSerializableIdiom=SerializableIdiom|true
|
||||
detectorStartInConstructor=StartInConstructor|true
|
||||
detectorStaticCalendarDetector=StaticCalendarDetector|true
|
||||
detectorStringConcatenation=StringConcatenation|true
|
||||
detectorSuperfluousInstanceOf=SuperfluousInstanceOf|true
|
||||
detectorSuspiciousThreadInterrupted=SuspiciousThreadInterrupted|true
|
||||
detectorSwitchFallthrough=SwitchFallthrough|true
|
||||
detectorSynchronizeAndNullCheckField=SynchronizeAndNullCheckField|true
|
||||
detectorSynchronizeOnClassLiteralNotGetClass=SynchronizeOnClassLiteralNotGetClass|true
|
||||
detectorSynchronizingOnContentsOfFieldToProtectField=SynchronizingOnContentsOfFieldToProtectField|true
|
||||
detectorURLProblems=URLProblems|true
|
||||
detectorUncallableMethodOfAnonymousClass=UncallableMethodOfAnonymousClass|true
|
||||
detectorUnnecessaryMath=UnnecessaryMath|true
|
||||
detectorUnreadFields=UnreadFields|true
|
||||
detectorUselessSubclassMethod=UselessSubclassMethod|false
|
||||
detectorVarArgsProblems=VarArgsProblems|true
|
||||
detectorVolatileUsage=VolatileUsage|true
|
||||
detectorWaitInLoop=WaitInLoop|true
|
||||
detectorWrongMapIterator=WrongMapIterator|true
|
||||
detectorXMLFactoryBypass=XMLFactoryBypass|true
|
||||
detector_threshold=2
|
||||
effort=default
|
||||
excludefilter0=findbugs-exclude.xml|true
|
||||
filter_settings=Medium|BAD_PRACTICE,CORRECTNESS,MT_CORRECTNESS,PERFORMANCE,STYLE|false|15
|
||||
filter_settings_neg=MALICIOUS_CODE,NOISE,I18N,SECURITY,EXPERIMENTAL|
|
||||
run_at_full_build=false
|
17
icu4j/main/classes/translit/findbugs-exclude.xml
Normal file
17
icu4j/main/classes/translit/findbugs-exclude.xml
Normal file
|
@ -0,0 +1,17 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!--
|
||||
*******************************************************************************
|
||||
* Copyright (C) 2013, International Business Machines Corporation and *
|
||||
* others. All Rights Reserved. *
|
||||
*******************************************************************************
|
||||
-->
|
||||
<FindBugsFilter>
|
||||
<Match>
|
||||
<Class name="com.ibm.icu.text.TransliteratorRegistry$Spec"/>
|
||||
<Or>
|
||||
<Method name="reset" params=""/>
|
||||
<Method name="setupNext" params=""/>
|
||||
</Or>
|
||||
<Bug pattern="ES_COMPARING_STRINGS_WITH_EQ"/>
|
||||
</Match>
|
||||
</FindBugsFilter>
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
*******************************************************************************
|
||||
* Copyright (C) 1996-2012, International Business Machines Corporation and *
|
||||
* Copyright (C) 1996-2013, International Business Machines Corporation and *
|
||||
* others. All Rights Reserved. *
|
||||
*******************************************************************************
|
||||
*/
|
||||
|
@ -248,15 +248,9 @@ public class XEquivalenceClass<T,R> implements Iterable<T> {
|
|||
}
|
||||
|
||||
public static class Linkage<T,R> {
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public Set<R> reasons;
|
||||
public T result;
|
||||
/**
|
||||
* @param reasons
|
||||
* @param item
|
||||
*/
|
||||
|
||||
public Linkage(Set<R> reasons, T result) {
|
||||
this.reasons = reasons;
|
||||
this.result = result;
|
||||
|
|
Loading…
Add table
Reference in a new issue