FindBugs Bug Detector Report

The following document contains the results of FindBugs Report

FindBugs Version is 1.2.0

Threshold is Low

Effort is Default

Summary

ClassesBugsErrorsMissing Classes
3222600

Files

ClassBugs
net.sf.jour.Config2
net.sf.jour.Interceptor2
net.sf.jour.filter.MatchListFilter1
net.sf.jour.instrumentor.AbstractInstrumentor1
net.sf.jour.instrumentor.ExceptionCatcherInstrumentor1
net.sf.jour.instrumentor.MethodExecutionTimeInstrumentor1
net.sf.jour.processor.DirectoryOutputWriter1
net.sf.jour.processor.FileEntry1
net.sf.jour.signature.APICompare2
net.sf.jour.signature.APICompareChangeHelper1
net.sf.jour.signature.ExportXML2
net.sf.jour.signature.Generator$ClassSortComparator1
net.sf.jour.signature.SignatureImport1
net.sf.jour.util.CmdArgs1
net.sf.jour.util.ConfigFileUtil1
net.sf.jour.util.FileUtil2
net.sf.jour.util.FileUtil$FileListByDateComparator1
net.sf.jour.util.FileUtil$FileListByNameComparator1
net.sf.jour.util.RegExUtil1
net.sf.jour.util.TimeUtil2

net.sf.jour.Config

BugCategoryDetailsLine
Method net.sf.jour.Config.getAllInstrumentors() uses Collection.toArray() with zero-length array argumentPERFORMANCEITA_INEFFICIENT_TO_ARRAY236
Method net.sf.jour.Config.getInstrumentors(String) uses Collection.toArray() with zero-length array argumentPERFORMANCEITA_INEFFICIENT_TO_ARRAY226

net.sf.jour.Interceptor

BugCategoryDetailsLine
net.sf.jour.Interceptor.Interceptor(Config, ClassPool, String, Instrumentor[]) may expose internal representation by storing an externally mutable object into Interceptor.instrumentorsMALICIOUS_CODEEI_EXPOSE_REP269
Exception is caught when Exception is not thrown in net.sf.jour.Interceptor.instrument()STYLEREC_CATCH_EXCEPTION116

net.sf.jour.filter.MatchListFilter

BugCategoryDetailsLine
Method net.sf.jour.filter.MatchListFilter.matchListAny(Object, List) uses the same code for two switch clausesSTYLEDB_DUPLICATE_SWITCH_CLAUSES133-134

net.sf.jour.instrumentor.AbstractInstrumentor

BugCategoryDetailsLine
AbstractInstrumentor.createdClasses not initialized in constructorSTYLEUWF_FIELD_NOT_INITIALIZED_IN_CONSTRUCTORNot available

net.sf.jour.instrumentor.ExceptionCatcherInstrumentor

BugCategoryDetailsLine
Exception is caught when Exception is not thrown in net.sf.jour.instrumentor.ExceptionCatcherInstrumentor.instrumentMethod(CtClass, CtMethod)STYLEREC_CATCH_EXCEPTION82

net.sf.jour.instrumentor.MethodExecutionTimeInstrumentor

BugCategoryDetailsLine
Exception is caught when Exception is not thrown in net.sf.jour.instrumentor.MethodExecutionTimeInstrumentor.addTiming(CtClass, CtMethod)STYLEREC_CATCH_EXCEPTION90

net.sf.jour.processor.DirectoryOutputWriter

BugCategoryDetailsLine
net.sf.jour.processor.DirectoryOutputWriter.write(Entry) may fail to close stream on exceptionBAD_PRACTICEOS_OPEN_STREAM_EXCEPTION_PATH40

net.sf.jour.processor.FileEntry

BugCategoryDetailsLine
net.sf.jour.processor.FileEntry defines equals and uses Object.hashCode()BAD_PRACTICEHE_EQUALS_USE_HASHCODE48-51

net.sf.jour.signature.APICompare

BugCategoryDetailsLine
Method net.sf.jour.signature.APICompare.compareFields(CtField[], CtField[], String, CtClass, CtClass) makes inefficient use of keySet iterator instead of entrySet iteratorPERFORMANCEWMI_WRONG_MAP_ITERATOR487
Method net.sf.jour.signature.APICompare.compareMethods(CtMethod[], CtMethod[], String) makes inefficient use of keySet iterator instead of entrySet iteratorPERFORMANCEWMI_WRONG_MAP_ITERATOR433

net.sf.jour.signature.APICompareChangeHelper

BugCategoryDetailsLine
net.sf.jour.signature.APICompareChangeHelper.assertEquals(String, boolean, boolean) invokes inefficient Boolean constructor; use Boolean.valueOf(...) insteadPERFORMANCEDM_BOOLEAN_CTOR76

net.sf.jour.signature.ExportXML

BugCategoryDetailsLine
ExportXML.document not initialized in constructorSTYLEUWF_FIELD_NOT_INITIALIZED_IN_CONSTRUCTORNot available
ExportXML.filter not initialized in constructorSTYLEUWF_FIELD_NOT_INITIALIZED_IN_CONSTRUCTORNot available

net.sf.jour.signature.Generator$ClassSortComparator

BugCategoryDetailsLine
net.sf.jour.signature.Generator$ClassSortComparator implements Comparator but not SerializableBAD_PRACTICESE_COMPARATOR_SHOULD_BE_SERIALIZABLENot available

net.sf.jour.signature.SignatureImport

BugCategoryDetailsLine
SignatureImport.filter not initialized in constructorSTYLEUWF_FIELD_NOT_INITIALIZED_IN_CONSTRUCTORNot available

net.sf.jour.util.CmdArgs

BugCategoryDetailsLine
Dead store to name in net.sf.jour.util.CmdArgs.isArgsName(String)STYLEDLS_DEAD_LOCAL_STORE23

net.sf.jour.util.ConfigFileUtil

BugCategoryDetailsLine
Should net.sf.jour.util.ConfigFileUtil.getChildNodes(Node, String) return a zero length array rather than null?STYLEPZLA_PREFER_ZERO_LENGTH_ARRAYS126

net.sf.jour.util.FileUtil

BugCategoryDetailsLine
net.sf.jour.util.FileUtil.readTextFile(File, HashSet) may fail to close streamBAD_PRACTICEOS_OPEN_STREAM151
Exception is caught when Exception is not thrown in net.sf.jour.util.FileUtil.readTextFile(File, HashSet)STYLEREC_CATCH_EXCEPTION174

net.sf.jour.util.FileUtil$FileListByDateComparator

BugCategoryDetailsLine
net.sf.jour.util.FileUtil$FileListByDateComparator implements Comparator but not SerializableBAD_PRACTICESE_COMPARATOR_SHOULD_BE_SERIALIZABLENot available

net.sf.jour.util.FileUtil$FileListByNameComparator

BugCategoryDetailsLine
net.sf.jour.util.FileUtil$FileListByNameComparator implements Comparator but not SerializableBAD_PRACTICESE_COMPARATOR_SHOULD_BE_SERIALIZABLENot available

net.sf.jour.util.RegExUtil

BugCategoryDetailsLine
Method net.sf.jour.util.RegExUtil.match(String, String) uses Collection.toArray() with zero-length array argumentPERFORMANCEITA_INEFFICIENT_TO_ARRAY46

net.sf.jour.util.TimeUtil

BugCategoryDetailsLine
Should net.sf.jour.util.TimeUtil.string2TimeInterval(String) return a zero length array rather than null?STYLEPZLA_PREFER_ZERO_LENGTH_ARRAYS232
Exception is caught when Exception is not thrown in net.sf.jour.util.TimeUtil.detectTimeformat(String)STYLEREC_CATCH_EXCEPTION210