FindBugs Changelog

What's new in FindBugs 3.0.1

Mar 7, 2015
  • A number of changes described in the changes document, including new bug patterns:
  • BSHIFT_WRONG_ADD_PRIORITY,
  • CO_COMPARETO_INCORRECT_FLOATING,
  • DC_PARTIALLY_CONSTRUCTED,
  • DM_BOXED_PRIMITIVE_FOR_COMPARE,
  • DM_INVALID_MIN_MAX,
  • ME_MUTABLE_ENUM_FIELD,
  • ME_ENUM_FIELD_SETTER,
  • MS_MUTABLE_COLLECTION,
  • MS_MUTABLE_COLLECTION_PKGPROTECT,
  • RANGE_ARRAY_INDEX,
  • RANGE_ARRAY_OFFSET,
  • RANGE_ARRAY_LENGTH,
  • RANGE_STRING_INDEX,
  • RV_RETURN_VALUE_IGNORED_NO_SIDE_EFFECT,
  • UC_USELESS_CONDITION,
  • UC_USELESS_CONDITION_TYPE,
  • UC_USELESS_OBJECT,
  • UC_USELESS_OBJECT_STACK,
  • UC_USELESS_VOID_METHOD

New in FindBugs 3.0.0 (Jul 7, 2014)

  • Includes all the changes featured in the previous Beta versions

New in FindBugs 3.0.0-RC1 (Jun 27, 2014)

  • FindBugs supports Java 8 now (both as runtime and target platform).
  • FindBugs requires minimum Java 7 as runtime environment
  • FindBugs uses ASM 5 now which means that some 3rd party detectors based on FindBugs 2.x/ASM 3 has to be upgraded. See details in ASM documentation.
  • New Bug patterns: NP_OPTIONAL_RETURN_NULL, IIO_INEFFICIENT_INDEX_OF, IIO_INEFFICIENT_LAST_INDEX_OF CNT_ROUGH_CONSTANT_VALUE
  • New "Source" filter which can be used to filter out classes generated from other languages
  • New "-auxclasspathFromFile" and "-analyzeFromFile" command line options.
  • New "nested" ant task attribute.

New in FindBugs 2.0.3 (Dec 2, 2013)

  • New Bug patterns: DM_BOXED_PRIMITIVE_FOR_PARSING, NP_METHOD_RETURN_RELAXING_ANNOTATION, and NP_METHOD_PARAMETER_TIGHTENS_ANNOTATION
  • Add the ability in the GUI to save the currently viewable/filtered bugs to HTML output.
  • When dataflow does't terminate, make sure we continue with analysis.
  • Fix some problems that resulting in dataflow analysis not terminating
  • Get parameter annotations from default parameters annotations applied to the method.
  • Add subversion change number to eclipse plugin qualifier.
  • Disabled detector for AM_CREATES_EMPTY_JAR_FILE_ENTRY; it complaints inappropriately about code that creates directory entries.
  • Add warnings about incompatible types passed to org.testng.Assert.assertEquals
  • Add logic that understands more of the Google Guava APIs.
  • Disable type qualifier validator execution within Eclipse plugin; too many problems with class loading and security manager (see #1154 Random obscure Eclipse failures)
  • Consistently check both access flags and attributes to see if something is synthetic. Compiler is inconsistent about where synthetic elements are marked.
  • Fixed false positives for the following bug patterns (17 occurrences in findbugsTestCases):
  • BC_IMPOSSIBLE_INSTANCEOF
  • BC_UNCONFIRMED_CAST
  • EC_UNRELATED_TYPES
  • INT_BAD_COMPARISON_WITH_NONNEGATIVE_VALUE
  • IS2_INCONSISTENT_SYNC
  • NP_NULL_PARAM_DEREF_ALL_TARGETS_DANGEROUS
  • OBL_UNSATISFIED_OBLIGATION
  • RCN_REDUNDANT_NULLCHECK_OF_NULL_VALUE
  • SA_FIELD_SELF_COMPARISON
  • TQ_UNKNOWN_VALUE_USED_WHERE_ALWAYS_STRICTLY_REQUIRED
  • Fixed false negatives for the following bug patterns (45 occurrences in findbugsTestCases):
  • BC_UNCONFIRMED_CAST
  • DM_NUMBER_CTOR
  • EC_ARRAY_AND_NONARRAY
  • EC_INCOMPATIBLE_ARRAY_COMPARE
  • EC_UNRELATED_TYPES
  • GC_UNRELATED_TYPES
  • IS_FIELD_NOT_GUARDED
  • IT_NO_SUCH_ELEMENT
  • JCIP_FIELD_ISNT_FINAL_IN_IMMUTABLE_CLASS
  • NP_NULL_ON_SOME_PATH
  • NP_NONNULL_PARAM_VIOLATION
  • NP_NULL_ON_SOME_PATH_FROM_RETURN_VALUE
  • NP_PARAMETER_MUST_BE_NONNULL_BUT_MARKED_AS_NULLABLE
  • NP_STORE_INTO_NONNULL_FIELD
  • RE_POSSIBLE_UNINTENDED_PATTERN
  • SA_FIELD_SELF_COMPARISON

New in FindBugs 2.0.2 RC2 (Dec 5, 2012)

  • Fix false positions for NP_NONNULL_FIELD_NOT_INITIALIZED_IN_CONSTRUCTOR - fixing Bug3547559, Bug3555408, Bug3580266 and Bug3587164.
  • Fix false positives for SF_SWITCH_NO_DEFAULT
  • Type qualifier annotations, including nullness annotations, are now ignored on vararg parameters (including default and inherited annotations), awaiting JSR308.
  • Defined new bug pattern to give better explanations of issues involving strict type qualifiers TQ_UNKNOWN_VALUE_USED_WHERE_ALWAYS_STRICTLY_REQUIRED
  • Adjusted analysis of type qualifiers, now giving warnings where a computed value is used in a place where a value with a strict type qualifier is required.
  • Complain about missing classes only if they are encountered while analyzing application classes; ignore missing classes that are encounted while analyzing classes loaded from the auxclasspath. Fix for Bug3588379
  • Fixed false positive null pointer warning coming from synthetic bridge methods, fixing Bug3589328
  • In general, suppress warnings in synthetic methods.
  • Fix some false positives involving GC_UNRELATED_TYPES on classes that extend generic collection classes.
  • fixed job scheduling errors in 3.8/4.2 Eclipse bug report
  • more realistic progress bar updates for jobs
  • added nullness annotations for some common Eclipse API methods known to usually return null values
  • Added support for org.eclipse.jdt.annotation.Nullable, NonNull and NonNullByDefault annotations (introduced with Eclipse 3.8/4.2)
  • Documentation improvements

New in FindBugs 2.0.0 (Mar 27, 2012)

  • FindBugs Communal cloud
  • checks for updated versions of FindBugs
  • Powerful plugin capabilities
  • new bug patterns, including new/improved support for Guava and JSR-305
  • improved performance

New in FindBugs 1.3.9 (Mar 6, 2010)

  • New bug patterns; in some cases, bugs previous reported as other bug patterns are reported as instances of these new bug patterns in order to make it easier for developers to understand the bug reports
  • BC_IMPOSSIBLE_DOWNCAST
  • BC_IMPOSSIBLE_DOWNCAST_OF_TOARRAY
  • EC_INCOMPATIBLE_ARRAY_COMPARE
  • JLM_JSR166_UTILCONCURRENT_MONITORENTER
  • LG_LOST_LOGGER_DUE_TO_WEAK_REFERENCE
  • NP_CLOSING_NULL
  • RC_REF_COMPARISON_BAD_PRACTICE
  • RC_REF_COMPARISON_BAD_PRACTICE_BOOLEAN
  • RV_RETURN_VALUE_OF_PUTIFABSENT_IGNORED
  • SIC_THREADLOCAL_DEADLY_EMBRACE
  • UR_UNINIT_READ_CALLED_FROM_SUPER_CONSTRUCTOR
  • VA_FORMAT_STRING_EXPECTED_MESSAGE_FORMAT_SUPPLIED
  • Providing a bug rank (1-20), and the ability to filter by bug rank. Eventually, it will be possible to specify your own rules for ranking bugs, but the procedure for doing so hasn't been specified yet.
  • Fixed about 45 bugs filed through SourceForge
  • Various reclassifications and priority tweaks
  • Added more bug annotations to a variety of bug reports. This provides more context for understanding bug reports (e.g., if the value in question was is the return value of a method, the method is described as the source of the value in a bug annotation). This also provide more accurate tracking of issues across versions of the code being analyzed, but has the downside that when comparing results from FindBugs 1.3.8 and FindBugs 1.3.9 on the same version of code being analyzed, FindBugs may think that mistakenly believe that the issue reported by 1.3.8 was fixed and a new issue was introduced that was reported by FindBugs 1.3.9. While annoying, it would be unusual for more than a dozen issues per million lines of codes to be mistracked.
  • Lots of internal changes moving towards FindBugs 2.0, but these features are undocumented, not yet officially supported, and subject to radical changes before FindBugs 2.0 is released.