|
From: <be...@us...> - 2007-04-19 23:49:49
|
Revision: 296
http://svn.sourceforge.net/qalab/?rev=296&view=rev
Author: benoitx
Date: 2007-04-19 16:49:48 -0700 (Thu, 19 Apr 2007)
Log Message:
-----------
Re-written the FindBugs merger in order to cope with both XDOC and XML outputs from Findbugs.
Adding the Jakarta Commons Lang as test cases for new FindBugs.
Added Paths:
-----------
trunk/qalab/src/test/java/net/objectlab/qalab/parser/commons-lang-2.3-findbugs-feedback-xdoc.xml
trunk/qalab/src/test/java/net/objectlab/qalab/parser/commons-lang-2.3-findbugs-feedback.xml
Added: trunk/qalab/src/test/java/net/objectlab/qalab/parser/commons-lang-2.3-findbugs-feedback-xdoc.xml
===================================================================
--- trunk/qalab/src/test/java/net/objectlab/qalab/parser/commons-lang-2.3-findbugs-feedback-xdoc.xml (rev 0)
+++ trunk/qalab/src/test/java/net/objectlab/qalab/parser/commons-lang-2.3-findbugs-feedback-xdoc.xml 2007-04-19 23:49:48 UTC (rev 296)
@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<BugCollection>
+ <file classname="org.apache.commons.lang.BooleanUtils">
+ <BugInstance type="ES_COMPARING_PARAMETER_STRING_WITH_EQ" priority="High" message="ES: Comparison of String parameter using == or != in org.apache.commons.lang.BooleanUtils.toBoolean(String) " line="653"/>
+ </file>
+ <file classname="org.apache.commons.lang.Entities$BinaryEntityMap">
+ <BugInstance type="IM_AVERAGE_COMPUTATION_COULD_OVERFLOW" priority="Normal" message="IM: Computation of average could overflow in org.apache.commons.lang.Entities$BinaryEntityMap.binarySearch(int)" line="683"/>
+ </file>
+ <file classname="org.apache.commons.lang.IntHashMap">
+ <BugInstance type="SE_TRANSIENT_FIELD_OF_NONSERIALIZABLE_CLASS" priority="Normal" message="Se: org.apache.commons.lang.IntHashMap.table is transient but org.apache.commons.lang.IntHashMap isn't Serializable" line="-1"/>
+ <BugInstance type="SE_TRANSIENT_FIELD_OF_NONSERIALIZABLE_CLASS" priority="Normal" message="Se: org.apache.commons.lang.IntHashMap.count is transient but org.apache.commons.lang.IntHashMap isn't Serializable" line="-1"/>
+ </file>
+ <file classname="org.apache.commons.lang.NumberUtils">
+ <BugInstance type="SF_SWITCH_FALLTHROUGH" priority="Normal" message="SF: Switch statement found in org.apache.commons.lang.NumberUtils.createNumber(String) where one case falls through to the next case" line="215"/>
+ </file>
+ <file classname="org.apache.commons.lang.StringUtils">
+ <BugInstance type="ES_COMPARING_PARAMETER_STRING_WITH_EQ" priority="High" message="ES: Comparison of String parameter using == or != in org.apache.commons.lang.StringUtils.indexOfDifference(String,String) " line="4919"/>
+ </file>
+ <file classname="org.apache.commons.lang.builder.ReflectionToStringBuilder">
+ <BugInstance type="EI_EXPOSE_REP" priority="Normal" message="EI: org.apache.commons.lang.builder.ReflectionToStringBuilder.getExcludeFieldNames() may expose internal representation by returning org.apache.commons.lang.builder.ReflectionToStringBuilder.excludeFieldNames" line="621"/>
+ </file>
+ <file classname="org.apache.commons.lang.exception.ExceptionUtils">
+ <BugInstance type="REC_CATCH_EXCEPTION" priority="Normal" message="REC: Method org.apache.commons.lang.exception.ExceptionUtils.<static initializer>() catches Exception, but Exception is not thrown in the try block and RuntimeException is not explicitly caught" line="97"/>
+ </file>
+ <file classname="org.apache.commons.lang.math.DoubleRange">
+ <BugInstance type="SE_TRANSIENT_FIELD_NOT_RESTORED" priority="Normal" message="Se: The field org.apache.commons.lang.math.DoubleRange.hashCode is transient but isn't set by deserialization" line="-1"/>
+ </file>
+ <file classname="org.apache.commons.lang.math.FloatRange">
+ <BugInstance type="SE_TRANSIENT_FIELD_NOT_RESTORED" priority="Normal" message="Se: The field org.apache.commons.lang.math.FloatRange.hashCode is transient but isn't set by deserialization" line="-1"/>
+ </file>
+ <file classname="org.apache.commons.lang.math.Fraction">
+ <BugInstance type="SE_TRANSIENT_FIELD_NOT_RESTORED" priority="Normal" message="Se: The field org.apache.commons.lang.math.Fraction.toProperString is transient but isn't set by deserialization" line="-1"/>
+ </file>
+ <file classname="org.apache.commons.lang.math.IntRange">
+ <BugInstance type="SE_TRANSIENT_FIELD_NOT_RESTORED" priority="Normal" message="Se: The field org.apache.commons.lang.math.IntRange.hashCode is transient but isn't set by deserialization" line="-1"/>
+ </file>
+ <file classname="org.apache.commons.lang.math.JVMRandom">
+ <BugInstance type="DM_NEXTINT_VIA_NEXTDOUBLE" priority="Normal" message="Dm: Method org.apache.commons.lang.math.JVMRandom.nextInt(int) uses the nextDouble method of Random to generate a random integer; using nextInt is more efficient" line="109"/>
+ </file>
+ <file classname="org.apache.commons.lang.math.LongRange">
+ <BugInstance type="SE_TRANSIENT_FIELD_NOT_RESTORED" priority="Normal" message="Se: The field org.apache.commons.lang.math.LongRange.hashCode is transient but isn't set by deserialization" line="-1"/>
+ </file>
+ <file classname="org.apache.commons.lang.math.NumberRange">
+ <BugInstance type="SE_TRANSIENT_FIELD_NOT_RESTORED" priority="Normal" message="Se: The field org.apache.commons.lang.math.NumberRange.hashCode is transient but isn't set by deserialization" line="-1"/>
+ </file>
+ <file classname="org.apache.commons.lang.math.NumberUtils">
+ <BugInstance type="SF_SWITCH_FALLTHROUGH" priority="Normal" message="SF: Switch statement found in org.apache.commons.lang.math.NumberUtils.createNumber(String) where one case falls through to the next case" line="474"/>
+ </file>
+ <file classname="org.apache.commons.lang.text.StrBuilder">
+ <BugInstance type="CN_IDIOM" priority="Normal" message="CN: Class org.apache.commons.lang.text.StrBuilder implements Cloneable but does not define or use clone method" line="-1"/>
+ </file>
+ <file classname="org.apache.commons.lang.text.StrTokenizer">
+ <BugInstance type="CN_IDIOM_NO_SUPER_CALL" priority="Normal" message="CN: clone method org.apache.commons.lang.text.StrTokenizer.clone() does not call super.clone()" line="1088"/>
+ <BugInstance type="EI_EXPOSE_REP2" priority="Normal" message="EI2: org.apache.commons.lang.text.StrTokenizer.StrTokenizer(char[]) may expose internal representation by storing an externally mutable object into org.apache.commons.lang.text.StrTokenizer.chars" line="330"/>
+ <BugInstance type="EI_EXPOSE_REP2" priority="Normal" message="EI2: org.apache.commons.lang.text.StrTokenizer.reset(char[]) may expose internal representation by storing an externally mutable object into org.apache.commons.lang.text.StrTokenizer.chars" line="511"/>
+ </file>
+ <file classname="org.apache.commons.lang.exception.NestableDelegate">
+ <BugInstance type="MS_SHOULD_BE_FINAL" priority="Normal" message="MS: org.apache.commons.lang.exception.NestableDelegate.topDown isn't final but should be" line="78"/>
+ <BugInstance type="MS_SHOULD_BE_FINAL" priority="Normal" message="MS: org.apache.commons.lang.exception.NestableDelegate.trimStackFrames isn't final but should be" line="88"/>
+ <BugInstance type="MS_SHOULD_BE_FINAL" priority="Normal" message="MS: org.apache.commons.lang.exception.NestableDelegate.matchSubclasses isn't final but should be" line="98"/>
+ </file>
+ <file classname="org.apache.commons.lang.IntHashMap$Entry">
+ <BugInstance type="URF_UNREAD_FIELD" priority="Normal" message="UrF: Unread field: org.apache.commons.lang.IntHashMap$Entry.key" line="-1"/>
+ </file>
+ <Errors/>
+</BugCollection>
Added: trunk/qalab/src/test/java/net/objectlab/qalab/parser/commons-lang-2.3-findbugs-feedback.xml
===================================================================
--- trunk/qalab/src/test/java/net/objectlab/qalab/parser/commons-lang-2.3-findbugs-feedback.xml (rev 0)
+++ trunk/qalab/src/test/java/net/objectlab/qalab/parser/commons-lang-2.3-findbugs-feedback.xml 2007-04-19 23:49:48 UTC (rev 296)
@@ -0,0 +1,812 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<BugCollection version="1.1.1" sequence="0" timestamp="1176869309176" analysisTimestamp="1176869314023" release="">
+ <Project filename="<<unnamed project>>">
+ <Jar>/Users/john/tools/commons-lang-2.3-src/target/classes</Jar>
+ <SrcDir>/Users/john/tools/commons-lang-2.3-src/src/java</SrcDir>
+ </Project>
+ <BugInstance type="ES_COMPARING_PARAMETER_STRING_WITH_EQ" priority="1" abbrev="ES" category="BAD_PRACTICE" uid="0" instanceHash="78ba436b5efdcec0558d2ee62261f6cf" instanceOccurrenceNum="0" instanceOccurrenceMax="0">
+ <ShortMessage>Comparison of String parameter using == or !=</ShortMessage>
+ <LongMessage>Comparison of String parameter using == or != in org.apache.commons.lang.BooleanUtils.toBoolean(String) </LongMessage>
+ <Class classname="org.apache.commons.lang.BooleanUtils">
+ <SourceLine classname="org.apache.commons.lang.BooleanUtils" sourcefile="BooleanUtils.java" sourcepath="org/apache/commons/lang/BooleanUtils.java">
+ <Message>In BooleanUtils.java</Message>
+ </SourceLine>
+ <Message>In class org.apache.commons.lang.BooleanUtils</Message>
+ </Class>
+ <Method classname="org.apache.commons.lang.BooleanUtils" name="toBoolean" signature="(Ljava/lang/String;)Z" isStatic="true">
+ <SourceLine classname="org.apache.commons.lang.BooleanUtils" start="653" end="696" startBytecode="0" endBytecode="173" sourcefile="BooleanUtils.java" sourcepath="org/apache/commons/lang/BooleanUtils.java"/>
+ <Message>In method org.apache.commons.lang.BooleanUtils.toBoolean(String)</Message>
+ </Method>
+ <Type descriptor="Ljava/lang/String;">
+ <Message>Type java.lang.String</Message>
+ </Type>
+ <SourceLine classname="org.apache.commons.lang.BooleanUtils" start="653" end="653" startBytecode="3" endBytecode="3" sourcefile="BooleanUtils.java" sourcepath="org/apache/commons/lang/BooleanUtils.java">
+ <Message>At BooleanUtils.java:[line 653]</Message>
+ </SourceLine>
+ </BugInstance>
+ <BugInstance type="IM_AVERAGE_COMPUTATION_COULD_OVERFLOW" priority="2" abbrev="IM" category="STYLE" uid="1" instanceHash="3cb6305f863ce61d7715e51c72549dbb" instanceOccurrenceNum="0" instanceOccurrenceMax="0">
+ <ShortMessage>Computation of average could overflow</ShortMessage>
+ <LongMessage>Computation of average could overflow in org.apache.commons.lang.Entities$BinaryEntityMap.binarySearch(int)</LongMessage>
+ <Class classname="org.apache.commons.lang.Entities$BinaryEntityMap">
+ <SourceLine classname="org.apache.commons.lang.Entities$BinaryEntityMap" sourcefile="Entities.java" sourcepath="org/apache/commons/lang/Entities.java">
+ <Message>In Entities.java</Message>
+ </SourceLine>
+ <Message>In class org.apache.commons.lang.Entities$BinaryEntityMap</Message>
+ </Class>
+ <Method classname="org.apache.commons.lang.Entities$BinaryEntityMap" name="binarySearch" signature="(I)I" isStatic="false">
+ <SourceLine classname="org.apache.commons.lang.Entities$BinaryEntityMap" start="678" end="693" startBytecode="0" endBytecode="68" sourcefile="Entities.java" sourcepath="org/apache/commons/lang/Entities.java"/>
+ <Message>In method org.apache.commons.lang.Entities$BinaryEntityMap.binarySearch(int)</Message>
+ </Method>
+ <SourceLine classname="org.apache.commons.lang.Entities$BinaryEntityMap" start="683" end="683" startBytecode="27" endBytecode="27" sourcefile="Entities.java" sourcepath="org/apache/commons/lang/Entities.java">
+ <Message>At Entities.java:[line 683]</Message>
+ </SourceLine>
+ </BugInstance>
+ <BugInstance type="SE_TRANSIENT_FIELD_OF_NONSERIALIZABLE_CLASS" priority="2" abbrev="Se" category="STYLE" uid="3" instanceHash="e89d080a85f8231f09af926ba1a1ff9a" instanceOccurrenceNum="0" instanceOccurrenceMax="0">
+ <ShortMessage>Transient field of class that isn't Serializable. </ShortMessage>
+ <LongMessage>org.apache.commons.lang.IntHashMap.count is transient but org.apache.commons.lang.IntHashMap isn't Serializable</LongMessage>
+ <Class classname="org.apache.commons.lang.IntHashMap">
+ <SourceLine classname="org.apache.commons.lang.IntHashMap" sourcefile="IntHashMap.java" sourcepath="org/apache/commons/lang/IntHashMap.java">
+ <Message>In IntHashMap.java</Message>
+ </SourceLine>
+ <Message>In class org.apache.commons.lang.IntHashMap</Message>
+ </Class>
+ <Field classname="org.apache.commons.lang.IntHashMap" name="count" signature="I" isStatic="false">
+ <SourceLine classname="org.apache.commons.lang.IntHashMap" sourcefile="IntHashMap.java" sourcepath="org/apache/commons/lang/IntHashMap.java">
+ <Message>In IntHashMap.java</Message>
+ </SourceLine>
+ <Message>Field org.apache.commons.lang.IntHashMap.count</Message>
+ </Field>
+ <SourceLine classname="org.apache.commons.lang.IntHashMap" sourcefile="IntHashMap.java" sourcepath="org/apache/commons/lang/IntHashMap.java" synthetic="true">
+ <Message>In IntHashMap.java</Message>
+ </SourceLine>
+ </BugInstance>
+ <BugInstance type="SE_TRANSIENT_FIELD_OF_NONSERIALIZABLE_CLASS" priority="2" abbrev="Se" category="STYLE" uid="2" instanceHash="65c8975b5764f1d2cfd87ad835088a8" instanceOccurrenceNum="0" instanceOccurrenceMax="0">
+ <ShortMessage>Transient field of class that isn't Serializable. </ShortMessage>
+ <LongMessage>org.apache.commons.lang.IntHashMap.table is transient but org.apache.commons.lang.IntHashMap isn't Serializable</LongMessage>
+ <Class classname="org.apache.commons.lang.IntHashMap">
+ <SourceLine classname="org.apache.commons.lang.IntHashMap" sourcefile="IntHashMap.java" sourcepath="org/apache/commons/lang/IntHashMap.java">
+ <Message>In IntHashMap.java</Message>
+ </SourceLine>
+ <Message>In class org.apache.commons.lang.IntHashMap</Message>
+ </Class>
+ <Field classname="org.apache.commons.lang.IntHashMap" name="table" signature="[Lorg/apache/commons/lang/IntHashMap$Entry;" isStatic="false">
+ <SourceLine classname="org.apache.commons.lang.IntHashMap" sourcefile="IntHashMap.java" sourcepath="org/apache/commons/lang/IntHashMap.java">
+ <Message>In IntHashMap.java</Message>
+ </SourceLine>
+ <Message>Field org.apache.commons.lang.IntHashMap.table</Message>
+ </Field>
+ <SourceLine classname="org.apache.commons.lang.IntHashMap" sourcefile="IntHashMap.java" sourcepath="org/apache/commons/lang/IntHashMap.java" synthetic="true">
+ <Message>In IntHashMap.java</Message>
+ </SourceLine>
+ </BugInstance>
+ <BugInstance type="URF_UNREAD_FIELD" priority="2" abbrev="UrF" category="PERFORMANCE" uid="23" instanceHash="8926acffb9cc1498e5ec4782c60ba246" instanceOccurrenceNum="0" instanceOccurrenceMax="0">
+ <ShortMessage>Unread field</ShortMessage>
+ <LongMessage>Unread field: org.apache.commons.lang.IntHashMap$Entry.key</LongMessage>
+ <Class classname="org.apache.commons.lang.IntHashMap$Entry">
+ <SourceLine classname="org.apache.commons.lang.IntHashMap$Entry" sourcefile="IntHashMap.java" sourcepath="org/apache/commons/lang/IntHashMap.java">
+ <Message>In IntHashMap.java</Message>
+ </SourceLine>
+ <Message>In class org.apache.commons.lang.IntHashMap$Entry</Message>
+ </Class>
+ <Field classname="org.apache.commons.lang.IntHashMap$Entry" name="key" signature="I" isStatic="false">
+ <SourceLine classname="org.apache.commons.lang.IntHashMap$Entry" sourcefile="IntHashMap.java" sourcepath="org/apache/commons/lang/IntHashMap.java">
+ <Message>In IntHashMap.java</Message>
+ </SourceLine>
+ <Message>Field org.apache.commons.lang.IntHashMap$Entry.key</Message>
+ </Field>
+ <SourceLine classname="org.apache.commons.lang.IntHashMap$Entry" sourcefile="IntHashMap.java" sourcepath="org/apache/commons/lang/IntHashMap.java" synthetic="true">
+ <Message>In IntHashMap.java</Message>
+ </SourceLine>
+ </BugInstance>
+ <BugInstance type="SF_SWITCH_FALLTHROUGH" priority="2" abbrev="SF" category="STYLE" uid="4" instanceHash="bf133195e0c95f5bf19e89aa72c5de84" instanceOccurrenceNum="0" instanceOccurrenceMax="0">
+ <ShortMessage>Switch statement found where one case falls through to the next case</ShortMessage>
+ <LongMessage>Switch statement found in org.apache.commons.lang.NumberUtils.createNumber(String) where one case falls through to the next case</LongMessage>
+ <Class classname="org.apache.commons.lang.NumberUtils">
+ <SourceLine classname="org.apache.commons.lang.NumberUtils" sourcefile="NumberUtils.java" sourcepath="org/apache/commons/lang/NumberUtils.java">
+ <Message>In NumberUtils.java</Message>
+ </SourceLine>
+ <Message>In class org.apache.commons.lang.NumberUtils</Message>
+ </Class>
+ <Method classname="org.apache.commons.lang.NumberUtils" name="createNumber" signature="(Ljava/lang/String;)Ljava/lang/Number;" isStatic="true">
+ <SourceLine classname="org.apache.commons.lang.NumberUtils" start="139" end="281" startBytecode="0" endBytecode="694" sourcefile="NumberUtils.java" sourcepath="org/apache/commons/lang/NumberUtils.java"/>
+ <Message>In method org.apache.commons.lang.NumberUtils.createNumber(String)</Message>
+ </Method>
+ <SourceLine classname="org.apache.commons.lang.NumberUtils" start="215" end="222" startBytecode="453" endBytecode="455" sourcefile="NumberUtils.java" sourcepath="org/apache/commons/lang/NumberUtils.java">
+ <Message>At NumberUtils.java:[lines 215-222]</Message>
+ </SourceLine>
+ </BugInstance>
+ <BugInstance type="ES_COMPARING_PARAMETER_STRING_WITH_EQ" priority="1" abbrev="ES" category="BAD_PRACTICE" uid="5" instanceHash="27f7dbc398871d75e14a3e87b7e599a0" instanceOccurrenceNum="0" instanceOccurrenceMax="0">
+ <ShortMessage>Comparison of String parameter using == or !=</ShortMessage>
+ <LongMessage>Comparison of String parameter using == or != in org.apache.commons.lang.StringUtils.indexOfDifference(String,String) </LongMessage>
+ <Class classname="org.apache.commons.lang.StringUtils">
+ <SourceLine classname="org.apache.commons.lang.StringUtils" sourcefile="StringUtils.java" sourcepath="org/apache/commons/lang/StringUtils.java">
+ <Message>In StringUtils.java</Message>
+ </SourceLine>
+ <Message>In class org.apache.commons.lang.StringUtils</Message>
+ </Class>
+ <Method classname="org.apache.commons.lang.StringUtils" name="indexOfDifference" signature="(Ljava/lang/String;Ljava/lang/String;)I" isStatic="true">
+ <SourceLine classname="org.apache.commons.lang.StringUtils" start="4919" end="4934" startBytecode="0" endBytecode="42" sourcefile="StringUtils.java" sourcepath="org/apache/commons/lang/StringUtils.java"/>
+ <Message>In method org.apache.commons.lang.StringUtils.indexOfDifference(String,String)</Message>
+ </Method>
+ <Type descriptor="Ljava/lang/String;">
+ <Message>Type java.lang.String</Message>
+ </Type>
+ <SourceLine classname="org.apache.commons.lang.StringUtils" start="4919" end="4919" startBytecode="2" endBytecode="2" sourcefile="StringUtils.java" sourcepath="org/apache/commons/lang/StringUtils.java">
+ <Message>At StringUtils.java:[line 4919]</Message>
+ </SourceLine>
+ </BugInstance>
+ <BugInstance type="EI_EXPOSE_REP" priority="2" abbrev="EI" category="MALICIOUS_CODE" uid="6" instanceHash="b568f7ecb19164e4763a1f598eb942c7" instanceOccurrenceNum="0" instanceOccurrenceMax="0">
+ <ShortMessage>Method may expose internal representation by returning reference to mutable object</ShortMessage>
+ <LongMessage>org.apache.commons.lang.builder.ReflectionToStringBuilder.getExcludeFieldNames() may expose internal representation by returning org.apache.commons.lang.builder.ReflectionToStringBuilder.excludeFieldNames</LongMessage>
+ <Class classname="org.apache.commons.lang.builder.ReflectionToStringBuilder">
+ <SourceLine classname="org.apache.commons.lang.builder.ReflectionToStringBuilder" sourcefile="ReflectionToStringBuilder.java" sourcepath="org/apache/commons/lang/builder/ReflectionToStringBuilder.java">
+ <Message>In ReflectionToStringBuilder.java</Message>
+ </SourceLine>
+ <Message>In class org.apache.commons.lang.builder.ReflectionToStringBuilder</Message>
+ </Class>
+ <Method classname="org.apache.commons.lang.builder.ReflectionToStringBuilder" name="getExcludeFieldNames" signature="()[Ljava/lang/String;" isStatic="false">
+ <SourceLine classname="org.apache.commons.lang.builder.ReflectionToStringBuilder" start="621" end="621" startBytecode="0" endBytecode="4" sourcefile="ReflectionToStringBuilder.java" sourcepath="org/apache/commons/lang/builder/ReflectionToStringBuilder.java"/>
+ <Message>In method org.apache.commons.lang.builder.ReflectionToStringBuilder.getExcludeFieldNames()</Message>
+ </Method>
+ <Field classname="org.apache.commons.lang.builder.ReflectionToStringBuilder" name="excludeFieldNames" signature="[Ljava/lang/String;" isStatic="false">
+ <SourceLine classname="org.apache.commons.lang.builder.ReflectionToStringBuilder" sourcefile="ReflectionToStringBuilder.java" sourcepath="org/apache/commons/lang/builder/ReflectionToStringBuilder.java">
+ <Message>In ReflectionToStringBuilder.java</Message>
+ </SourceLine>
+ <Message>Field org.apache.commons.lang.builder.ReflectionToStringBuilder.excludeFieldNames</Message>
+ </Field>
+ <SourceLine classname="org.apache.commons.lang.builder.ReflectionToStringBuilder" start="621" end="621" startBytecode="4" endBytecode="4" sourcefile="ReflectionToStringBuilder.java" sourcepath="org/apache/commons/lang/builder/ReflectionToStringBuilder.java">
+ <Message>At ReflectionToStringBuilder.java:[line 621]</Message>
+ </SourceLine>
+ </BugInstance>
+ <BugInstance type="REC_CATCH_EXCEPTION" priority="2" abbrev="REC" category="STYLE" uid="7" instanceHash="62b7e7cbf09a28f981c09f262b56ec06" instanceOccurrenceNum="0" instanceOccurrenceMax="0">
+ <ShortMessage>java.lang.Exception is caught when Exception is not thrown</ShortMessage>
+ <LongMessage>Method org.apache.commons.lang.exception.ExceptionUtils.<static initializer>() catches Exception, but Exception is not thrown in the try block and RuntimeException is not explicitly caught</LongMessage>
+ <Class classname="org.apache.commons.lang.exception.ExceptionUtils">
+ <SourceLine classname="org.apache.commons.lang.exception.ExceptionUtils" sourcefile="ExceptionUtils.java" sourcepath="org/apache/commons/lang/exception/ExceptionUtils.java">
+ <Message>In ExceptionUtils.java</Message>
+ </SourceLine>
+ <Message>In class org.apache.commons.lang.exception.ExceptionUtils</Message>
+ </Class>
+ <Method classname="org.apache.commons.lang.exception.ExceptionUtils" name="<clinit>" signature="()V" isStatic="true">
+ <SourceLine classname="org.apache.commons.lang.exception.ExceptionUtils" start="62" end="101" startBytecode="0" endBytecode="177" sourcefile="ExceptionUtils.java" sourcepath="org/apache/commons/lang/exception/ExceptionUtils.java"/>
+ <Message>In method org.apache.commons.lang.exception.ExceptionUtils.<static initializer>()</Message>
+ </Method>
+ <SourceLine classname="org.apache.commons.lang.exception.ExceptionUtils" start="97" end="97" startBytecode="170" endBytecode="170" sourcefile="ExceptionUtils.java" sourcepath="org/apache/commons/lang/exception/ExceptionUtils.java">
+ <Message>At ExceptionUtils.java:[line 97]</Message>
+ </SourceLine>
+ </BugInstance>
+ <BugInstance type="MS_SHOULD_BE_FINAL" priority="2" abbrev="MS" category="MALICIOUS_CODE" uid="22" instanceHash="7c8e307e76a7c516c1331291ee83c4c7" instanceOccurrenceNum="0" instanceOccurrenceMax="0">
+ <ShortMessage>Field isn't final but should be</ShortMessage>
+ <LongMessage>org.apache.commons.lang.exception.NestableDelegate.matchSubclasses isn't final but should be</LongMessage>
+ <Class classname="org.apache.commons.lang.exception.NestableDelegate">
+ <SourceLine classname="org.apache.commons.lang.exception.NestableDelegate" sourcefile="NestableDelegate.java" sourcepath="org/apache/commons/lang/exception/NestableDelegate.java">
+ <Message>In NestableDelegate.java</Message>
+ </SourceLine>
+ <Message>In class org.apache.commons.lang.exception.NestableDelegate</Message>
+ </Class>
+ <Field classname="org.apache.commons.lang.exception.NestableDelegate" name="matchSubclasses" signature="Z" isStatic="true">
+ <SourceLine classname="org.apache.commons.lang.exception.NestableDelegate" sourcefile="NestableDelegate.java" sourcepath="org/apache/commons/lang/exception/NestableDelegate.java">
+ <Message>In NestableDelegate.java</Message>
+ </SourceLine>
+ <Message>Field org.apache.commons.lang.exception.NestableDelegate.matchSubclasses</Message>
+ </Field>
+ <SourceLine classname="org.apache.commons.lang.exception.NestableDelegate" start="98" end="98" startBytecode="9" endBytecode="9" sourcefile="NestableDelegate.java" sourcepath="org/apache/commons/lang/exception/NestableDelegate.java">
+ <Message>At NestableDelegate.java:[line 98]</Message>
+ </SourceLine>
+ </BugInstance>
+ <BugInstance type="MS_SHOULD_BE_FINAL" priority="2" abbrev="MS" category="MALICIOUS_CODE" uid="20" instanceHash="870a95bb2bfff85358364dfa6c7d85b2" instanceOccurrenceNum="0" instanceOccurrenceMax="0">
+ <ShortMessage>Field isn't final but should be</ShortMessage>
+ <LongMessage>org.apache.commons.lang.exception.NestableDelegate.topDown isn't final but should be</LongMessage>
+ <Class classname="org.apache.commons.lang.exception.NestableDelegate">
+ <SourceLine classname="org.apache.commons.lang.exception.NestableDelegate" sourcefile="NestableDelegate.java" sourcepath="org/apache/commons/lang/exception/NestableDelegate.java">
+ <Message>In NestableDelegate.java</Message>
+ </SourceLine>
+ <Message>In class org.apache.commons.lang.exception.NestableDelegate</Message>
+ </Class>
+ <Field classname="org.apache.commons.lang.exception.NestableDelegate" name="topDown" signature="Z" isStatic="true">
+ <SourceLine classname="org.apache.commons.lang.exception.NestableDelegate" sourcefile="NestableDelegate.java" sourcepath="org/apache/commons/lang/exception/NestableDelegate.java">
+ <Message>In NestableDelegate.java</Message>
+ </SourceLine>
+ <Message>Field org.apache.commons.lang.exception.NestableDelegate.topDown</Message>
+ </Field>
+ <SourceLine classname="org.apache.commons.lang.exception.NestableDelegate" start="78" end="78" startBytecode="1" endBytecode="1" sourcefile="NestableDelegate.java" sourcepath="org/apache/commons/lang/exception/NestableDelegate.java">
+ <Message>At NestableDelegate.java:[line 78]</Message>
+ </SourceLine>
+ </BugInstance>
+ <BugInstance type="MS_SHOULD_BE_FINAL" priority="2" abbrev="MS" category="MALICIOUS_CODE" uid="21" instanceHash="2e19f3feca807b3ff0f06d9b003b49eb" instanceOccurrenceNum="0" instanceOccurrenceMax="0">
+ <ShortMessage>Field isn't final but should be</ShortMessage>
+ <LongMessage>org.apache.commons.lang.exception.NestableDelegate.trimStackFrames isn't final but should be</LongMessage>
+ <Class classname="org.apache.commons.lang.exception.NestableDelegate">
+ <SourceLine classname="org.apache.commons.lang.exception.NestableDelegate" sourcefile="NestableDelegate.java" sourcepath="org/apache/commons/lang/exception/NestableDelegate.java">
+ <Message>In NestableDelegate.java</Message>
+ </SourceLine>
+ <Message>In class org.apache.commons.lang.exception.NestableDelegate</Message>
+ </Class>
+ <Field classname="org.apache.commons.lang.exception.NestableDelegate" name="trimStackFrames" signature="Z" isStatic="true">
+ <SourceLine classname="org.apache.commons.lang.exception.NestableDelegate" sourcefile="NestableDelegate.java" sourcepath="org/apache/commons/lang/exception/NestableDelegate.java">
+ <Message>In NestableDelegate.java</Message>
+ </SourceLine>
+ <Message>Field org.apache.commons.lang.exception.NestableDelegate.trimStackFrames</Message>
+ </Field>
+ <SourceLine classname="org.apache.commons.lang.exception.NestableDelegate" start="88" end="88" startBytecode="5" endBytecode="5" sourcefile="NestableDelegate.java" sourcepath="org/apache/commons/lang/exception/NestableDelegate.java">
+ <Message>At NestableDelegate.java:[line 88]</Message>
+ </SourceLine>
+ </BugInstance>
+ <BugInstance type="SE_TRANSIENT_FIELD_NOT_RESTORED" priority="2" abbrev="Se" category="BAD_PRACTICE" uid="8" instanceHash="1a61f9983361dae667e940441a1b66f5" instanceOccurrenceNum="0" instanceOccurrenceMax="0">
+ <ShortMessage>Transient field that isn't set by deserialization. </ShortMessage>
+ <LongMessage>The field org.apache.commons.lang.math.DoubleRange.hashCode is transient but isn't set by deserialization</LongMessage>
+ <Class classname="org.apache.commons.lang.math.DoubleRange">
+ <SourceLine classname="org.apache.commons.lang.math.DoubleRange" sourcefile="DoubleRange.java" sourcepath="org/apache/commons/lang/math/DoubleRange.java">
+ <Message>In DoubleRange.java</Message>
+ </SourceLine>
+ <Message>In class org.apache.commons.lang.math.DoubleRange</Message>
+ </Class>
+ <Field classname="org.apache.commons.lang.math.DoubleRange" name="hashCode" signature="I" isStatic="false">
+ <SourceLine classname="org.apache.commons.lang.math.DoubleRange" sourcefile="DoubleRange.java" sourcepath="org/apache/commons/lang/math/DoubleRange.java">
+ <Message>In DoubleRange.java</Message>
+ </SourceLine>
+ <Message>Field org.apache.commons.lang.math.DoubleRange.hashCode</Message>
+ </Field>
+ <SourceLine classname="org.apache.commons.lang.math.DoubleRange" sourcefile="DoubleRange.java" sourcepath="org/apache/commons/lang/math/DoubleRange.java" synthetic="true">
+ <Message>In DoubleRange.java</Message>
+ </SourceLine>
+ </BugInstance>
+ <BugInstance type="SE_TRANSIENT_FIELD_NOT_RESTORED" priority="2" abbrev="Se" category="BAD_PRACTICE" uid="9" instanceHash="8480bcf2d98f41ddfc8fff30bc634a2a" instanceOccurrenceNum="0" instanceOccurrenceMax="0">
+ <ShortMessage>Transient field that isn't set by deserialization. </ShortMessage>
+ <LongMessage>The field org.apache.commons.lang.math.FloatRange.hashCode is transient but isn't set by deserialization</LongMessage>
+ <Class classname="org.apache.commons.lang.math.FloatRange">
+ <SourceLine classname="org.apache.commons.lang.math.FloatRange" sourcefile="FloatRange.java" sourcepath="org/apache/commons/lang/math/FloatRange.java">
+ <Message>In FloatRange.java</Message>
+ </SourceLine>
+ <Message>In class org.apache.commons.lang.math.FloatRange</Message>
+ </Class>
+ <Field classname="org.apache.commons.lang.math.FloatRange" name="hashCode" signature="I" isStatic="false">
+ <SourceLine classname="org.apache.commons.lang.math.FloatRange" sourcefile="FloatRange.java" sourcepath="org/apache/commons/lang/math/FloatRange.java">
+ <Message>In FloatRange.java</Message>
+ </SourceLine>
+ <Message>Field org.apache.commons.lang.math.FloatRange.hashCode</Message>
+ </Field>
+ <SourceLine classname="org.apache.commons.lang.math.FloatRange" sourcefile="FloatRange.java" sourcepath="org/apache/commons/lang/math/FloatRange.java" synthetic="true">
+ <Message>In FloatRange.java</Message>
+ </SourceLine>
+ </BugInstance>
+ <BugInstance type="SE_TRANSIENT_FIELD_NOT_RESTORED" priority="2" abbrev="Se" category="BAD_PRACTICE" uid="10" instanceHash="2999cc4fea6ac1281e7861acf3905fbd" instanceOccurrenceNum="0" instanceOccurrenceMax="0">
+ <ShortMessage>Transient field that isn't set by deserialization. </ShortMessage>
+ <LongMessage>The field org.apache.commons.lang.math.Fraction.toProperString is transient but isn't set by deserialization</LongMessage>
+ <Class classname="org.apache.commons.lang.math.Fraction">
+ <SourceLine classname="org.apache.commons.lang.math.Fraction" sourcefile="Fraction.java" sourcepath="org/apache/commons/lang/math/Fraction.java">
+ <Message>In Fraction.java</Message>
+ </SourceLine>
+ <Message>In class org.apache.commons.lang.math.Fraction</Message>
+ </Class>
+ <Field classname="org.apache.commons.lang.math.Fraction" name="toProperString" signature="Ljava/lang/String;" isStatic="false">
+ <SourceLine classname="org.apache.commons.lang.math.Fraction" sourcefile="Fraction.java" sourcepath="org/apache/commons/lang/math/Fraction.java">
+ <Message>In Fraction.java</Message>
+ </SourceLine>
+ <Message>Field org.apache.commons.lang.math.Fraction.toProperString</Message>
+ </Field>
+ <SourceLine classname="org.apache.commons.lang.math.Fraction" sourcefile="Fraction.java" sourcepath="org/apache/commons/lang/math/Fraction.java" synthetic="true">
+ <Message>In Fraction.java</Message>
+ </SourceLine>
+ </BugInstance>
+ <BugInstance type="SE_TRANSIENT_FIELD_NOT_RESTORED" priority="2" abbrev="Se" category="BAD_PRACTICE" uid="11" instanceHash="683a84a9b38bf2452ec4c7559423ddfd" instanceOccurrenceNum="0" instanceOccurrenceMax="0">
+ <ShortMessage>Transient field that isn't set by deserialization. </ShortMessage>
+ <LongMessage>The field org.apache.commons.lang.math.IntRange.hashCode is transient but isn't set by deserialization</LongMessage>
+ <Class classname="org.apache.commons.lang.math.IntRange">
+ <SourceLine classname="org.apache.commons.lang.math.IntRange" sourcefile="IntRange.java" sourcepath="org/apache/commons/lang/math/IntRange.java">
+ <Message>In IntRange.java</Message>
+ </SourceLine>
+ <Message>In class org.apache.commons.lang.math.IntRange</Message>
+ </Class>
+ <Field classname="org.apache.commons.lang.math.IntRange" name="hashCode" signature="I" isStatic="false">
+ <SourceLine classname="org.apache.commons.lang.math.IntRange" sourcefile="IntRange.java" sourcepath="org/apache/commons/lang/math/IntRange.java">
+ <Message>In IntRange.java</Message>
+ </SourceLine>
+ <Message>Field org.apache.commons.lang.math.IntRange.hashCode</Message>
+ </Field>
+ <SourceLine classname="org.apache.commons.lang.math.IntRange" sourcefile="IntRange.java" sourcepath="org/apache/commons/lang/math/IntRange.java" synthetic="true">
+ <Message>In IntRange.java</Message>
+ </SourceLine>
+ </BugInstance>
+ <BugInstance type="DM_NEXTINT_VIA_NEXTDOUBLE" priority="2" abbrev="Dm" category="PERFORMANCE" uid="12" instanceHash="28620addb336a6b034a9f9d287cc032f" instanceOccurrenceNum="0" instanceOccurrenceMax="0">
+ <ShortMessage>Use the nextInt method of Random rather than nextDouble to generate a random integer</ShortMessage>
+ <LongMessage>Method org.apache.commons.lang.math.JVMRandom.nextInt(int) uses the nextDouble method of Random to generate a random integer; using nextInt is more efficient</LongMessage>
+ <Class classname="org.apache.commons.lang.math.JVMRandom">
+ <SourceLine classname="org.apache.commons.lang.math.JVMRandom" sourcefile="JVMRandom.java" sourcepath="org/apache/commons/lang/math/JVMRandom.java">
+ <Message>In JVMRandom.java</Message>
+ </SourceLine>
+ <Message>In class org.apache.commons.lang.math.JVMRandom</Message>
+ </Class>
+ <Method classname="org.apache.commons.lang.math.JVMRandom" name="nextInt" signature="(I)I" isStatic="false">
+ <SourceLine classname="org.apache.commons.lang.math.JVMRandom" start="103" end="109" startBytecode="0" endBytecode="21" sourcefile="JVMRandom.java" sourcepath="org/apache/commons/lang/math/JVMRandom.java"/>
+ <Message>In method org.apache.commons.lang.math.JVMRandom.nextInt(int)</Message>
+ </Method>
+ <SourceLine classname="org.apache.commons.lang.math.JVMRandom" start="109" end="109" startBytecode="20" endBytecode="20" sourcefile="JVMRandom.java" sourcepath="org/apache/commons/lang/math/JVMRandom.java">
+ <Message>At JVMRandom.java:[line 109]</Message>
+ </SourceLine>
+ </BugInstance>
+ <BugInstance type="SE_TRANSIENT_FIELD_NOT_RESTORED" priority="2" abbrev="Se" category="BAD_PRACTICE" uid="13" instanceHash="205dc7013294bf33495ec0803c1acdaf" instanceOccurrenceNum="0" instanceOccurrenceMax="0">
+ <ShortMessage>Transient field that isn't set by deserialization. </ShortMessage>
+ <LongMessage>The field org.apache.commons.lang.math.LongRange.hashCode is transient but isn't set by deserialization</LongMessage>
+ <Class classname="org.apache.commons.lang.math.LongRange">
+ <SourceLine classname="org.apache.commons.lang.math.LongRange" sourcefile="LongRange.java" sourcepath="org/apache/commons/lang/math/LongRange.java">
+ <Message>In LongRange.java</Message>
+ </SourceLine>
+ <Message>In class org.apache.commons.lang.math.LongRange</Message>
+ </Class>
+ <Field classname="org.apache.commons.lang.math.LongRange" name="hashCode" signature="I" isStatic="false">
+ <SourceLine classname="org.apache.commons.lang.math.LongRange" sourcefile="LongRange.java" sourcepath="org/apache/commons/lang/math/LongRange.java">
+ <Message>In LongRange.java</Message>
+ </SourceLine>
+ <Message>Field org.apache.commons.lang.math.LongRange.hashCode</Message>
+ </Field>
+ <SourceLine classname="org.apache.commons.lang.math.LongRange" sourcefile="LongRange.java" sourcepath="org/apache/commons/lang/math/LongRange.java" synthetic="true">
+ <Message>In LongRange.java</Message>
+ </SourceLine>
+ </BugInstance>
+ <BugInstance type="SE_TRANSIENT_FIELD_NOT_RESTORED" priority="2" abbrev="Se" category="BAD_PRACTICE" uid="14" instanceHash="e741d6aaa3a88b809af17016b9d1746c" instanceOccurrenceNum="0" instanceOccurrenceMax="0">
+ <ShortMessage>Transient field that isn't set by deserialization. </ShortMessage>
+ <LongMessage>The field org.apache.commons.lang.math.NumberRange.hashCode is transient but isn't set by deserialization</LongMessage>
+ <Class classname="org.apache.commons.lang.math.NumberRange">
+ <SourceLine classname="org.apache.commons.lang.math.NumberRange" sourcefile="NumberRange.java" sourcepath="org/apache/commons/lang/math/NumberRange.java">
+ <Message>In NumberRange.java</Message>
+ </SourceLine>
+ <Message>In class org.apache.commons.lang.math.NumberRange</Message>
+ </Class>
+ <Field classname="org.apache.commons.lang.math.NumberRange" name="hashCode" signature="I" isStatic="false">
+ <SourceLine classname="org.apache.commons.lang.math.NumberRange" sourcefile="NumberRange.java" sourcepath="org/apache/commons/lang/math/NumberRange.java">
+ <Message>In NumberRange.java</Message>
+ </SourceLine>
+ <Message>Field org.apache.commons.lang.math.NumberRange.hashCode</Message>
+ </Field>
+ <SourceLine classname="org.apache.commons.lang.math.NumberRange" sourcefile="NumberRange.java" sourcepath="org/apache/commons/lang/math/NumberRange.java" synthetic="true">
+ <Message>In NumberRange.java</Message>
+ </SourceLine>
+ </BugInstance>
+ <BugInstance type="SF_SWITCH_FALLTHROUGH" priority="2" abbrev="SF" category="STYLE" uid="15" instanceHash="8527c0b774e556fa87ba919bbb97a36c" instanceOccurrenceNum="0" instanceOccurrenceMax="0">
+ <ShortMessage>Switch statement found where one case falls through to the next case</ShortMessage>
+ <LongMessage>Switch statement found in org.apache.commons.lang.math.NumberUtils.createNumber(String) where one case falls through to the next case</LongMessage>
+ <Class classname="org.apache.commons.lang.math.NumberUtils">
+ <SourceLine classname="org.apache.commons.lang.math.NumberUtils" sourcefile="NumberUtils.java" sourcepath="org/apache/commons/lang/math/NumberUtils.java">
+ <Message>In NumberUtils.java</Message>
+ </SourceLine>
+ <Message>In class org.apache.commons.lang.math.NumberUtils</Message>
+ </Class>
+ <Method classname="org.apache.commons.lang.math.NumberUtils" name="createNumber" signature="(Ljava/lang/String;)Ljava/lang/Number;" isStatic="true">
+ <SourceLine classname="org.apache.commons.lang.math.NumberUtils" start="398" end="540" startBytecode="0" endBytecode="694" sourcefile="NumberUtils.java" sourcepath="org/apache/commons/lang/math/NumberUtils.java"/>
+ <Message>In method org.apache.commons.lang.math.NumberUtils.createNumber(String)</Message>
+ </Method>
+ <SourceLine classname="org.apache.commons.lang.math.NumberUtils" start="474" end="481" startBytecode="453" endBytecode="455" sourcefile="NumberUtils.java" sourcepath="org/apache/commons/lang/math/NumberUtils.java">
+ <Message>At NumberUtils.java:[lines 474-481]</Message>
+ </SourceLine>
+ </BugInstance>
+ <BugInstance type="CN_IDIOM" priority="2" abbrev="CN" category="BAD_PRACTICE" uid="16" instanceHash="cd68aab6a251bb55df4ea04e61fdd9f2" instanceOccurrenceNum="0" instanceOccurrenceMax="0">
+ <ShortMessage>Class implements Cloneable but does not define or use clone method</ShortMessage>
+ <LongMessage>Class org.apache.commons.lang.text.StrBuilder implements Cloneable but does not define or use clone method</LongMessage>
+ <Class classname="org.apache.commons.lang.text.StrBuilder">
+ <SourceLine classname="org.apache.commons.lang.text.StrBuilder" sourcefile="StrBuilder.java" sourcepath="org/apache/commons/lang/text/StrBuilder.java">
+ <Message>In StrBuilder.java</Message>
+ </SourceLine>
+ <Message>In class org.apache.commons.lang.text.StrBuilder</Message>
+ </Class>
+ <SourceLine classname="org.apache.commons.lang.text.StrBuilder" sourcefile="StrBuilder.java" sourcepath="org/apache/commons/lang/text/StrBuilder.java" synthetic="true">
+ <Message>In StrBuilder.java</Message>
+ </SourceLine>
+ </BugInstance>
+ <BugInstance type="CN_IDIOM_NO_SUPER_CALL" priority="2" abbrev="CN" category="BAD_PRACTICE" uid="17" instanceHash="66463aa7dadfe8083de29859e28c31e7" instanceOccurrenceNum="0" instanceOccurrenceMax="0">
+ <ShortMessage>clone method does not call super.clone()</ShortMessage>
+ <LongMessage>clone method org.apache.commons.lang.text.StrTokenizer.clone() does not call super.clone()</LongMessage>
+ <Class classname="org.apache.commons.lang.text.StrTokenizer">
+ <SourceLine classname="org.apache.commons.lang.text.StrTokenizer" sourcefile="StrTokenizer.java" sourcepath="org/apache/commons/lang/text/StrTokenizer.java">
+ <Message>In StrTokenizer.java</Message>
+ </SourceLine>
+ <Message>In class org.apache.commons.lang.text.StrTokenizer</Message>
+ </Class>
+ <Method classname="org.apache.commons.lang.text.StrTokenizer" name="clone" signature="()Ljava/lang/Object;" isStatic="false">
+ <SourceLine classname="org.apache.commons.lang.text.StrTokenizer" start="1088" end="1090" startBytecode="0" endBytecode="7" sourcefile="StrTokenizer.java" sourcepath="org/apache/commons/lang/text/StrTokenizer.java"/>
+ <Message>In method org.apache.commons.lang.text.StrTokenizer.clone()</Message>
+ </Method>
+ <SourceLine classname="org.apache.commons.lang.text.StrTokenizer" start="1088" end="1090" startBytecode="0" endBytecode="7" sourcefile="StrTokenizer.java" sourcepath="org/apache/commons/lang/text/StrTokenizer.java" synthetic="true">
+ <Message>At StrTokenizer.java:[lines 1088-1090]</Message>
+ </SourceLine>
+ </BugInstance>
+ <BugInstance type="EI_EXPOSE_REP2" priority="2" abbrev="EI2" category="MALICIOUS_CODE" uid="18" instanceHash="b9cb064695d6174c612f67c76b09ca38" instanceOccurrenceNum="0" instanceOccurrenceMax="0">
+ <ShortMessage>Method may expose internal representation by incorporating reference to mutable object</ShortMessage>
+ <LongMessage>org.apache.commons.lang.text.StrTokenizer.StrTokenizer(char[]) may expose internal representation by storing an externally mutable object into org.apache.commons.lang.text.StrTokenizer.chars</LongMessage>
+ <Class classname="org.apache.commons.lang.text.StrTokenizer">
+ <SourceLine classname="org.apache.commons.lang.text.StrTokenizer" sourcefile="StrTokenizer.java" sourcepath="org/apache/commons/lang/text/StrTokenizer.java">
+ <Message>In StrTokenizer.java</Message>
+ </SourceLine>
+ <Message>In class org.apache.commons.lang.text.StrTokenizer</Message>
+ </Class>
+ <Method classname="org.apache.commons.lang.text.StrTokenizer" name="<init>" signature="([C)V" isStatic="false">
+ <SourceLine classname="org.apache.commons.lang.text.StrTokenizer" start="329" end="331" startBytecode="0" endBytecode="47" sourcefile="StrTokenizer.java" sourcepath="org/apache/commons/lang/text/StrTokenizer.java"/>
+ <Message>In method org.apache.commons.lang.text.StrTokenizer.StrTokenizer(char[])</Message>
+ </Method>
+ <Field classname="org.apache.commons.lang.text.StrTokenizer" name="chars" signature="[C" isStatic="true">
+ <SourceLine classname="org.apache.commons.lang.text.StrTokenizer" sourcefile="StrTokenizer.java" sourcepath="org/apache/commons/lang/text/StrTokenizer.java">
+ <Message>In StrTokenizer.java</Message>
+ </SourceLine>
+ <Message>Field org.apache.commons.lang.text.StrTokenizer.chars</Message>
+ </Field>
+ <SourceLine classname="org.apache.commons.lang.text.StrTokenizer" start="330" end="330" startBytecode="44" endBytecode="44" sourcefile="StrTokenizer.java" sourcepath="org/apache/commons/lang/text/StrTokenizer.java">
+ <Message>At StrTokenizer.java:[line 330]</Message>
+ </SourceLine>
+ </BugInstance>
+ <BugInstance type="EI_EXPOSE_REP2" priority="2" abbrev="EI2" category="MALICIOUS_CODE" uid="19" instanceHash="c5990f4b3b81318fc9d95e0608e64345" instanceOccurrenceNum="0" instanceOccurrenceMax="0">
+ <ShortMessage>Method may expose internal representation by incorporating reference to mutable object</ShortMessage>
+ <LongMessage>org.apache.commons.lang.text.StrTokenizer.reset(char[]) may expose internal representation by storing an externally mutable object into org.apache.commons.lang.text.StrTokenizer.chars</LongMessage>
+ <Class classname="org.apache.commons.lang.text.StrTokenizer">
+ <SourceLine classname="org.apache.commons.lang.text.StrTokenizer" sourcefile="StrTokenizer.java" sourcepath="org/apache/commons/lang/text/StrTokenizer.java">
+ <Message>In StrTokenizer.java</Message>
+ </SourceLine>
+ <Message>In class org.apache.commons.lang.text.StrTokenizer</Message>
+ </Class>
+ <Method classname="org.apache.commons.lang.text.StrTokenizer" name="reset" signature="([C)Lorg/apache/commons/lang/text/StrTokenizer;" isStatic="false">
+ <SourceLine classname="org.apache.commons.lang.text.StrTokenizer" start="510" end="512" startBytecode="0" endBytecode="11" sourcefile="StrTokenizer.java" sourcepath="org/apache/commons/lang/text/StrTokenizer.java"/>
+ <Message>In method org.apache.commons.lang.text.StrTokenizer.reset(char[])</Message>
+ </Method>
+ <Field classname="org.apache.commons.lang.text.StrTokenizer" name="chars" signature="[C" isStatic="true">
+ <SourceLine classname="org.apache.commons.lang.text.StrTokenizer" sourcefile="StrTokenizer.java" sourcepath="org/apache/commons/lang/text/StrTokenizer.java">
+ <Message>In StrTokenizer.java</Message>
+ </SourceLine>
+ <Message>Field org.apache.commons.lang.text.StrTokenizer.chars</Message>
+ </Field>
+ <SourceLine classname="org.apache.commons.lang.text.StrTokenizer" start="511" end="511" startBytecode="7" endBytecode="7" sourcefile="StrTokenizer.java" sourcepath="org/apache/commons/lang/text/StrTokenizer.java">
+ <Message>At StrTokenizer.java:[line 511]</Message>
+ </SourceLine>
+ </BugInstance>
+ <BugCategory category="PERFORMANCE">
+ <Description>Performance</Description>
+ </BugCategory>
+ <BugCategory category="BAD_PRACTICE">
+ <Description>Bad practice</Description>
+ </BugCategory>
+ <BugCategory category="MALICIOUS_CODE">
+ <Description>Malicious code vulnerability</Description>
+ </BugCategory>
+ <BugCategory category="STYLE">
+ <Description>Dodgy</Description>
+ </BugCategory>
+ <BugPattern type="CN_IDIOM" abbrev="CN" category="BAD_PRACTICE">
+ <ShortDescription>Class implements Cloneable but does not define or use clone method</ShortDescription>
+ <Details><![CDATA[
+
+<p>
+ Class implements Cloneable but does not define or
+ use the clone method.</p>
+
+ ]]></Details>
+ </BugPattern>
+ <BugPattern type="EI_EXPOSE_REP2" abbrev="EI2" category="MALICIOUS_CODE">
+ <ShortDescription>Method may expose internal representation by incorporating reference to mutable object</ShortDescription>
+ <Details><![CDATA[
+
+ <p> This code stores a reference to an externally mutable object into the
+ internal representation of the object.
+ If instances
+ are accessed by untrusted code, and unchecked changes to
+ the mutable object would compromise security or other
+ important properties, you will need to do something different.
+ Storing a copy of the object is better approach in many situations.</p>
+
+ ]]></Details>
+ </BugPattern>
+ <BugPattern type="SE_TRANSIENT_FIELD_OF_NONSERIALIZABLE_CLASS" abbrev="Se" category="STYLE">
+ <ShortDescription>Transient field of class that isn't Serializable. </ShortDescription>
+ <Details><![CDATA[
+
+ <p> The field is marked as transient, but the class isn't Serializable, so marking it as transient
+has absolutely no effect.
+This may be leftover marking from a previous version of the code in which the class was transient, or
+it may indicate a misunderstanding of how serialization works.
+</p>
+
+ ]]></Details>
+ </BugPattern>
+ <BugPattern type="CN_IDIOM_NO_SUPER_CALL" abbrev="CN" category="BAD_PRACTICE">
+ <ShortDescription>clone method does not call super.clone()</ShortDescription>
+ <Details><![CDATA[
+
+<p> This non-final class defines a clone() method that does not call super.clone().
+If this class ("<i>A</i>") is extended by a subclass ("<i>B</i>"),
+and the subclass <i>B</i> calls super.clone(), then it is likely that
+<i>B</i>'s clone() method will return an object of type <i>A</i>,
+which violates the standard contract for clone().</p>
+
+<p> If all clone() methods call super.clone(), then they are guaranteed
+to use Object.clone(), which always returns an object of the correct type.</p>
+
+ ]]></Details>
+ </BugPattern>
+ <BugPattern type="ES_COMPARING_PARAMETER_STRING_WITH_EQ" abbrev="ES" category="BAD_PRACTICE">
+ <ShortDescription>Comparison of String parameter using == or !=</ShortDescription>
+ <Details><![CDATA[
+
+ <p>This code compares a <code>java.lang.String</code> parameter for reference
+equality using the == or != operators. Requiring callers to
+pass only String constants or interned strings to a method is unnecessarily
+fragile, and rarely leads to measurable performance gains. Consider
+using the <code>equals(Object)</code> method instead.</p>
+
+ ]]></Details>
+ </BugPattern>
+ <BugPattern type="IM_AVERAGE_COMPUTATION_COULD_OVERFLOW" abbrev="IM" category="STYLE">
+ <ShortDescription>Computation of average could overflow</ShortDescription>
+ <Details><![CDATA[
+
+<p>The code computes the average of two integers using either division or signed right shift,
+and then uses the result as the index of an array.
+If the values being averaged are very large, this can overflow (resulting in the computation
+of a negative average). Assuming that the result is intended to be nonnegative, you
+can use an unsigned right shift instead. In other words, rather that using <code>(low+high)/2</code>,
+use <code>(low+high) >>> 1</code>
+</p>
+<p>This bug exists in many earlier implementations of binary search and merge sort.
+Martin Buchholz <a href="http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6412541">found and fixed it</a>
+in the JDK libraries, and Joshua Bloch
+<a href="http://googleresearch.blogspot.com/2006/06/extra-extra-read-all-about-it-nearly.html">widely
+publicized the bug pattern</a>.
+</p>
+
+ ]]></Details>
+ </BugPattern>
+ <BugPattern type="SF_SWITCH_FALLTHROUGH" abbrev="SF" category="STYLE">
+ <ShortDescription>Switch statement found where one case falls through to the next case</ShortDescription>
+ <Details><![CDATA[
+
+ <p> This method contains a switch statement where one case branch will fall through to the next case.
+ Usually you need to end this case with a break or return.</p>
+
+ ]]></Details>
+ </BugPattern>
+ <BugPattern type="MS_SHOULD_BE_FINAL" abbrev="MS" category="MALICIOUS_CODE">
+ <ShortDescription>Field isn't final but should be</ShortDescription>
+ <Details><![CDATA[
+
+ <p>
+ A mutable static field could be changed by malicious code or
+ by accident from another package.
+ The field could be made final to avoid
+ this vulnerability.</p>
+
+ ]]></Details>
+ </BugPattern>
+ <BugPattern type="URF_UNREAD_FIELD" abbrev="UrF" category="PERFORMANCE">
+ <ShortDescription>Unread field</ShortDescription>
+ <Details><![CDATA[
+
+ <p> This field is never read. Consider removing it from the class.</p>
+
+ ]]></Details>
+ </BugPattern>
+ <BugPattern type="EI_EXPOSE_REP" abbrev="EI" category="MALICIOUS_CODE">
+ <ShortDescription>Method may expose internal representation by returning reference to mutable object</ShortDescription>
+ <Details><![CDATA[
+
+ <p> Returning a reference to a mutable object value stored in one of the object's fields
+ exposes the internal representation of the object.
+ If instances
+ are accessed by untrusted code, and unchecked changes to
+ the mutable object would compromise security or other
+ important properties, you will need to do something different.
+ Returning a new copy of the object is better approach in many situations.</p>
+
+ ]]></Details>
+ </BugPattern>
+ <BugPattern type="SE_TRANSIENT_FIELD_NOT_RESTORED" abbrev="Se" category="BAD_PRACTICE">
+ <ShortDescription>Transient field that isn't set by deserialization. </ShortDescription>
+ <Details><![CDATA[
+
+ <p> This class contains a field that is updated at multiple places in the class, thus it seems to be part of the start of the class. However, since the field is marked as transient and not set in readObject or readResolve, it will contain the default value in any
+deserialized instance of the class.
+</p>
+
+ ]]></Details>
+ </BugPattern>
+ <BugPattern type="DM_NEXTINT_VIA_NEXTDOUBLE" abbrev="Dm" category="PERFORMANCE">
+ <ShortDescription>Use the nextInt method of Random rather than nextDouble to generate a random integer</ShortDescription>
+ <Details><![CDATA[
+
+ <p>If r is a java.util.Random, you can generate a random number from 0 to n-1
+using r.nextInt(n) Rather than using (int)(r.nextDouble() * n).
+</p>
+
+ ]]></Details>
+ </BugPattern>
+ <BugPattern type="REC_CATCH_EXCEPTION" abbrev="REC" category="STYLE">
+ <ShortDescription>java.lang.Exception is caught when Exception is not thrown</ShortDescription>
+ <Details><![CDATA[
+
+ <p>
+ This method uses a try-catch block that catches Exception objects, but Exception is not
+ thrown within the try block, and RuntimeException is not explicitly caught. It is a common bug pattern to
+ say try { ... } catch (Exception e) { something } as a shorthand for catching a number of types of exception
+ each of whose catch blocks is identical, but this construct also accidentally catches RuntimeException as well,
+ masking potential bugs.
+ </p>
+
+ ]]></Details>
+ </BugPattern>
+ <BugCode abbrev="MS">
+ <Description>Mutable static field</Description>
+ </BugCode>
+ <BugCode abbrev="EI2">
+ <Description>Storing reference to mutable object</Description>
+ </BugCode>
+ <BugCode abbrev="REC">
+ <Description>RuntimeException capture</Description>
+ </BugCode>
+ <BugCode abbrev="UrF">
+ <Description>Unread field</Description>
+ </BugCode>
+ <BugCode abbrev="IM">
+ <Description>Questionable integer math</Description>
+ </BugCode>
+ <BugCode abbrev="CN">
+ <Description>Bad implementation of cloneable idiom</Description>
+ </BugCode>
+ <BugCode abbrev="SF">
+ <Description>Switch case falls through</Description>
+ </BugCode>
+ <BugCode abbrev="ES">
+ <Description>Checking String equality using == or !=</Description>
+ </BugCode>
+ <BugCode abbrev="Dm">
+ <Description>Dubious method used</Description>
+ </BugCode>
+ <BugCode abbrev="EI">
+ <Description>Method returning array may expose internal representation</Description>
+ </BugCode>
+ <BugCode abbrev="Se">
+ <Description>Incorrect definition of Serializable class</Description>
+ </BugCode>
+ <Errors></Errors>
+ <FindBugsSummary timestamp="Tue, 17 Apr 2007 23:08:29 -0500" total_classes="124" total_bugs="24" total_size="12466" num_packages="9" cpu_seconds="68.43" clock_seconds="82.34" peak_mbytes="58.43" gc_seconds="19.66" priority_2="22" priority_1="2">
+ <PackageStats package="org.apache.commons.lang" total_bugs="7" total_types="38" total_size="4778" priority_2="5" priority_1="2">
+ <ClassStats class="org.apache.commons.lang.ArrayUtils" interface="false" size="1161" bugs="0"/>
+ <ClassStats class="org.apache.commons.lang.BitField" interface="false" size="49" bugs="0"/>
+ <ClassStats class="org.apache.commons.lang.BooleanUtils" interface="false" size="200" bugs="1" priority_1="1"/>
+ <ClassStats class="org.apache.commons.lang.CharEncoding" interface="false" size="17" bugs="0"/>
+ <ClassStats class="org.apache.commons.lang.CharRange" interface="false" size="63" bugs="0"/>
+ <ClassStats class="org.apache.commons.lang.CharSet" interface="false" size="81" bugs="0"/>
+ <ClassStats class="org.apache.commons.lang.CharSetUtils" interface="false" size="98" bugs="0"/>
+ <ClassStats class="org.apache.commons.lang.CharUtils" interface="false" size="92" bugs="0"/>
+ <ClassStats class="org.apache.commons.lang.ClassUtils" interface="false" size="239" bugs="0"/>
+ <ClassStats class="org.apache.commons.lang.Entities" interface="false" size="128" bugs="0"/>
+ <ClassStats class="org.apache.commons.lang.Entities$ArrayEntityMap" interface="false" size="44" bugs="0"/>
+ <ClassStats class="org.apache.commons.lang.Entities$BinaryEntityMap" interface="false" size="38" bugs="1" priority_2="1"/>
+ <ClassStats class="org.apache.commons.lang.Entities$EntityMap" interface="true" size="4" bugs="0"/>
+ <ClassStats class="org.apache.commons.lang.Entities$HashEntityMap" interface="false" size="6" bugs="0"/>
+ <ClassStats class="org.apache.commons.lang.Entities$LookupEntityMap" interface="false" size="19" bugs="0"/>
+ <ClassStats class="org.apache.commons.lang.Entities$MapIntMap" interface="false" size="16" bugs="0"/>
+ <ClassStats class="org.apache.commons.lang.Entities$PrimitiveEntityMap" interface="false" size="18" bugs="0"/>
+ <ClassStats class="org.apache.commons.lang.Entities$TreeEntityMap" interface="false" size="6" bugs="0"/>
+ <ClassStats class="org.apache.commons.lang.IllegalClassException" interface="false" size="13" bugs="0"/>
+ <ClassStats class="org.apache.commons.lang.IncompleteArgumentException" interface="false" size="10" bugs="0"/>
+ <ClassStats class="org.apache.commons.lang.IntHashMap" interface="false" size="111" bugs="2" priority_2="2"/>
+ <ClassStats class="org.apache.commons.lang.IntHashMap$Entry" interface="false" size="12" bugs="1" priority_2="1"/>
+ <ClassStats class="org.apache.commons.lang.LocaleUtils" interface="false" size="91" bugs="0"/>
+ <ClassStats class="org.apache.commons.lang.NotImplementedException" interface="false" size="59" bugs="0"/>
+ <ClassStats class="org.apache.commons.lang.NullArgumentException" interface="false" size="5" bugs="0"/>
+ <ClassStats class="org.apache.commons.lang.NumberRange" interface="false" size="62" bugs="0"/>
+ <ClassStats class="org.apache.commons.lang.NumberUtils" interface="false" size="216" bugs="1" priority_2="1"/>
+ <ClassStats class="org.apache.commons.lang.ObjectUtils" interface="false" size="39" bugs="0"/>
+ <ClassStats class="org.apache.commons.lang.ObjectUtils$Null" interface="false" s...
[truncated message content] |