Skip to content

Latest commit

 

History

History
729 lines (518 loc) · 43.1 KB

CHANGELOG.md

File metadata and controls

729 lines (518 loc) · 43.1 KB

Changelog

This is the changelog for SpotBugs. This follows Keep a Changelog v1.0.0.

Currently the versioning policy of this project follows Semantic Versioning v2.0.0.

Unreleased - 2023-??-??

Changed

  • Bump up Apache Commons BCEL to the version 6.6.1 (#2223)
  • Bump up slf4j-api to 2.0.3 (#2220)
  • Bump up gson to 2.10 (#2235)

Fixed

  • Fixed missing classes not in report if using IErrorLogger.reportMissingClass(ClassDescriptor) (#219)
  • Stop exposing junit-bom to consumers (#2255)
  • Fixed AbstractBugReporter emits wrong non-sensical debug output during filtering (#184)
  • Added support for jakarta namespace (#2289)
  • Report a low priority bug for an unread field in reflective classes (#2325)
  • Fixed "Unhandled event loop exception" opening Bug Filter Configuration dialog in Eclipse (#2327)

Security

  • Disable access to external entities when processing XML (#2217)

Build

  • Bump Eclipse from 4.6.3 to 4.14 (#2314)
  • Use jakarta annotation 1.3.5 instead of legacy javax annotation 1.3.2 (#2315)
  • Change hamcrest-all to hamcrest-core as that is what was actually used and then update to 2.2 (#2316)
  • Only run release action on 'spotbugs' and use Eclipse 4.14 (#2317)

4.7.3 - 2022-10-15

Fixed

  • Fixed detector DontUseFloatsAsLoopCounters to prevent false positives. (#2126)
  • Fixed regression in 4.7.2 caused by (#2141)
  • improve compatibility with later version of jdk (>= 13). (#2188)
  • Fixed detector UncallableMethodOfAnonymousClass to not report unused methods of method-local enumerations and records (#2120)
  • Fixed detector FindSqlInjection to detect bug SQL_NONCONSTANT_STRING_PASSED_TO_EXECUTE SQL with high priority in case of unsafe appends also in Java 11 and above (#2183)
  • Fixed detector StringConcatenation to detect bug SBSC_USE_STRINGBUFFER_CONCATENATION also in Java 11 and above (#2182)
  • Fixed OpcodeStackDetector to to handle propagation of taints properly in case of string concatenation in Java 9 and above (#2195)
  • Bump up log4j2 binding to 2.19.0
  • Bump ObjectWeb ASM from 9.3 to 9.4 supporting JDK 20 (#2200)
  • Bump up commons-text to 1.10.0 (#2197)
  • Fixed debug detector ViewCFG to generate file names that are also valid on Windows (#2209)

4.7.2 - 2022-09-02

Fixed

  • Bumped gson from 2.9.0 to 2.9.1 (#2136)
  • Bump up SLF4J API to 2.0.0
  • Bump up logback to 1.4.0
  • Bump up log4j2 binding to 2.18.0
  • Bump up Saxon-HE to 11.4 (#2160)
  • Fixed InvalidInputException in Eclipse while bug reporting (#2134)
  • Bug SA_FIELD_SELF_ASSIGNMENT is now reported from nested classes as well (#2142)
  • Avoid warning on use of security manager on Java 17 and newer. (#1579)
  • Fixed false positives EI_EXPOSE_REP thrown in case of fields initialized by the of or copyOf method of a List, Map or Set (#1771)
  • Fixed CFGBuilderException thrown when dup_x2 is used to swap the reference and wide-value (double, long) in the stack (#2146)

4.7.1 - 2022-06-26

Fixed

  • Fixed False positives for RCN_REDUNDANT_NULLCHECK_OF_NONNULL_VALUE on try-with-resources with interface references (#1931)
  • Fixed NullPointerException thrown by detector FindPotentialSecurityCheckBasedOnUntrustedSource on Kotlin files. (#2041)
  • Disabled detector ThrowingExceptions by default to avoid many false positives (#2040)
  • Fixed False positives for THROWS_METHOD_THROWS_CLAUSE_BASIC_EXCEPTION and THROWS_METHOD_THROWS_CLAUSE_THROWABLE on evaluating synthetic classes (#2040)
  • Fixed False positive for SSD_DO_NOT_USE_INSTANCE_LOCK_ON_SHARED_STATIC_DATA on proper protection by using static lock for synchronized block, but inside an unsecured (synchronized and not static) method (#2089)

4.7.0 - 2022-04-14

Changed

  • Updated documentation by adding parenthesis () to the negative odd check message (#1995)
  • Let the Plugin class implement AutoCloseable so we can release the .jar file (#2024)

Fixed

  • Fixed reports to truncate existing files before writing new content (#1950)
  • Bumped Saxon-HE from 10.6 to 11.3 (#1955, #1999)
  • Fixed traversal of nested archives governed by -nested:true (#1930)
  • Warnings of deprecated System::setSecurityManager calls on Java 17 (#1983)
  • Fixed false positive SSD bug for locking on java.lang.Class objects (#1978)
  • FindReturnRef throws an IllegalArgumentException unexpectedly (#2019)
  • Bump ObjectWeb ASM from 9.2 to 9.3 supporting JDK 19 (#2004)

Added

  • New detector ThrowingExceptions and introduced new bug types:
    • THROWS_METHOD_THROWS_RUNTIMEEXCEPTION is reported in case of a method throwing RuntimeException,
    • THROWS_METHOD_THROWS_CLAUSE_BASIC_EXCEPTION is reported when a method has Exception in its throws clause and
    • THROWS_METHOD_THROWS_CLAUSE_THROWABLE is reported when a method has Throwable in its throws clause (See SEI CERT ERR07-J)
  • New rule PERM_SUPER_NOT_CALLED_IN_GETPERMISSIONS to warn for custom class loaders who do not call their superclasses' getPermissions() in their getPermissions() method. This rule based on the SEI CERT rule SEC07-J Call the superclass's getPermissions() method when writing a custom class loader. (#SEC07-J)
  • New rule USC_POTENTIAL_SECURITY_CHECK_BASED_ON_UNTRUSTED_SOURCE to detect cases where a non-final method of a non-final class is called from public methods of public classes and then the same method is called on the same object inside a doPrivileged block. Since the called method may have been overridden to behave differently on the first and second invocations this is a possible security check based on an unreliable source. This rule is based on SEC02-J. Do not base security checks on untrusted sources. (#SEC02-J)
  • New detector DontUseFloatsAsLoopCounters to detect usage of floating-point variables as loop counters (FL_FLOATS_AS_LOOP_COUNTERS), according to SEI CERT rules NUM09-J. Do not use floating-point variables as loop counters
  • New test detector ViewCFG to visualize the control-flow graph for SpotBugs developers

4.6.0 - 2022-03-08

Fixed

  • Fixed spotbugs build with ecj compiler (#1903)
  • Moved tests from spotbugs project to spotbugs-tests project (#1914)
  • Fixed UI freezes in Eclipse on bug count decorations update (#285)
  • Bumped log4j from 2.17.1 to 2.17.2 (#1960)
  • Bumped gson from 2.8.9 to 2.9.0 (#1960)

Added

  • New detector FindInstanceLockOnSharedStaticData for new bug type SSD_DO_NOT_USE_INSTANCE_LOCK_ON_SHARED_STATIC_DATA. This detector reports a bug if an instance level lock is used to modify a shared static data. (See SEI CERT rule LCK06-J)

4.5.3 - 2022-01-04

Security

Fixed

  • Remove duplicated logging frameworks from the Eclipse plugin distribution (#1868)
  • Corrected class name validation to no longer fail for Kotlin classes on class path containing special characters. (#1883)

4.5.2 - 2021-12-13

Security

  • Bumped log4j from 2.14.1 to 2.16.0 to address CVE-2021-44228

Fixed

  • False negative about the rule RV_DONT_JUST_NULL_CHECK_READLINE (#1821#1820#1819#1818)
  • Updated RV_01_TO_INT to handle float and long checks (#1518)

4.5.1 - 2021-12-08

Fixed

  • Ant task does not produce XML anymore (#1827)
  • Do not emit false positives of MC_OVERRIDABLE_METHOD_CALL_IN_CONSTRUCTOR and MC_OVERRIDABLE_METHOD_CALL_IN_CLONE for final classes (#1812).
  • Reports cannot be created on Windows platform (#1842)

4.5.0 - 2021-11-05

Changed

  • Replace "分析" with "解析" in Japanese document (#1573)
  • Add a section to document how to integrate find-sec-bugs into spotbugs-maven-plugin (#540)
  • Bump gson from 2.8.8 to 2.8.9 (#1784)
  • Changes related to dominators analysis in package edu.umd.cs.findbugs.classfile.engine.bcel (#1741):
    • DominatorsAnalysisFactory renamed to NonExceptionDominatorsAnalysisFactory (clarification)
    • NonExceptionPostdominatorsAnalysisFactory renamed to NonExceptionPostDominatorsAnalysisFactory (spelling)
    • NonImplicitExceptionDominatorsAnalysis introduced (API consistency)

Added

Fixed

  • False negative about the rule ES_COMPARING_STRINGS_WITH_EQ (#1764)
  • False negative about the rule IM_MULTIPLYING_RESULT_OF_IREM ([#1498])(spotbugs#1498)

Deprecated

  • -output commandline option is deprecated. Use commandline options for report configuration like -xml=spotbugs.xml instead.

4.4.2 - 2021-10-08

Changed

  • Add bug code to report in fancy-hist.xsl (#1688)
  • Bump Saxon-HE from 10.5 to 10.6 (#1715)

Fixed

  • Fixed immutable java.lang.Class as being flagged as EI (#1695)
  • Agree verb with plural subject in the description of SW_SWING_METHODS_INVOKED_IN_SWING_THREAD (#1664)
  • Wrong description of the SE_TRANSIENT_FIELD_OF_NONSERIALIZABLE_CLASS (#1664)
  • Fixed java.util.Locale as being flagged as EI (#1702)
  • Fixed reference to java.awt.Cursor which caused it to be flagged as EI (#1702)
  • Treat types with @com.google.errorprone.annotations.Immutable as immutable (#1705)
  • Fix annotation check for jdk.internal.ValueBased (#1706)
  • DMI_RANDOM_USED_ONLY_ONCE false positive (#1539)
  • NP_NONNULL_FIELD_NOT_INITIALIZED_IN_CONSTRUCTOR false negative (#1642)
  • Immutable java.util.regex.Pattern as being flagged as EI (#1695)
  • Resource leak in the JrtfsCodeBase (#1732)

4.4.1 - 2021-09-07

Changed

  • Bump gson from 2.8.7 to 2.8.8 (#1658)
  • Lower ExitCodes logger to debug level (#1661)
  • Fixed SARIF format to be compatible with Github code scanning API requirements (#1630)

Fixed

  • Fixed immutable classes in java.net.* as being flagged as EI (#1653
  • Classes containing only static methods with setter-like names are no longer considered as mutable (#1601)
  • Handle all immutable collections in the Guava library as immutable (#1601)
  • Classes annotated with @Immutable or @jdk.internal.ValueBased are considered as immutable (#1601)
  • All classes in packages java.time and java.math are now correctly handled as immutable (#1601)

4.4.0 - 2021-08-12

Fixed

  • Fixed False positives for RCN_REDUNDANT_NULLCHECK_OF_NONNULL_VALUE (#600 and #1338)
  • Inconsistent bug description on EQ_COMPARING_CLASS_NAMES (#1523)
  • Add a declaration of charset encoding in generated reports (#1623)
  • Fixed regression in Bug Info view for Eclipse 2021-03+ (#1477)

Added

  • New detector FindBadEndOfStreamCheck for new bug type EOS_BAD_END_OF_STREAM_CHECK. This bug is reported whenever the return value of java.io.FileInputStream.read() or java.io.FileReader.read() is first converted to byte/int and only thereafter checked against -1. (See SEI CERT rule FIO08-J)

4.3.0 - 2021-07-01

Fixed

  • MS_EXPOSE_REP and EI_EXPOSE_REP are now reported for code returning a reference to a mutable object indirectly (e.g. via a local variable)

Changed

  • Bump ObjectWeb ASM from 9.1 to 9.2 supporting JDK 18 (#1591)
  • Bump Saxon-HE from 10.3 to 10.5 (#1513)
  • Bump gson from 2.8.6 to 2.8.7 (#1556)
  • Function mutableSignature() improved and factored out from the MutableStaticFields detector

Added

  • New bugs MS_EXPOSE_BUF, EI_EXPOSE_BUF, EI_EXPOSE_STATIC_BUF2 and EI_EXPOSE_BUF2 by the FindReturnRef detector to detect cases where buffers or their backing arrays are exposed (see SEI CERT rule FIO05-J)
  • MS_EXPOSE_REP, EI_EXPOSE_REP, EI_EXPOSE_STATIC_REP2 and EI_EXPOSE_REP2 now report for shallowly copied arrays (using clone()) of mutable objects

4.2.3 - 2021-04-12

Fixed

  • Inconsistency in the description of DLS_DEAD_LOCAL_INCREMENT_IN_RETURN, VO_VOLATILE_INCREMENT and QF_QUESTIONABLE_FOR_LOOP (#1470)
  • Should issue warning for SecureRandom object created and used only once (#1464)
  • False positive OBL_UNSATIFIED_OBLIGATION with try with resources (#79)
  • SA_LOCAL_SELF_COMPUTATION bug (#1472)
  • False positive EQ_UNUSUAL with record classes (#1367)

4.2.2 - 2021-03-03

Fixed

  • UWF_NULL_FIELD doesn't report line number (#1368)
  • UnsupportedOperationException in BugRanker.trimToMaxRank (#1161)

Changed

  • Bump ASM from 9.0 to 9.1 supporting JDK17
  • Bump commons-lang from 3.11 to 3.12.0
  • Replace org.json:json:20201115 with com.google.code.gson:gson:2.8.6

4.2.1 - 2021-02-04

Fixed

  • Invalid HTML in the description of LI_LAZY_INIT_UPDATE_STATIC bug pattern (#1383)
  • NP_NONNULL_PARAM_VIOLATION false-positive in CompletableFuture.completedStage(value) (#1397)

Changed

  • Bump json from 20200518 to 20201115 (#1384)

4.2.0 - 2020-11-28

Fixed

  • spotbugs reports VO_VOLATILE_REFERENCE_TO_ARRAY in synthetic code generated by Eclipse 4.17+ Java compiler (#1313)
  • spotbugs reports DM_BOXED_PRIMITIVE_FOR_PARSING for Double and Float (previously only reported for Integer and Long) (#744)
  • sarif report not showing correctly the physical and logical location (#1281)

Added

  • The class search (in the GUI's class name filter) is now case-insensitive and forgives typos (part of (#749))

Changed

  • Bump Saxon-HE from 10.2 to 10.3

4.1.4 - 2020-10-15

Fixed

  • IllegalArgumentException during XML report generation (#1272)
  • Error dialog on cancelling SpotBugs job in Eclipse (#1314)
  • IllegalArgumentException in OpcodeStack.constantToInt (#893)
  • Typos in description, documentation and so on
  • spotbugs reports VR_UNRESOLVABLE_REFERENCE and UPM_UNCALLED_PRIVATE_METHOD when code is compiled with Java 11 (#1254)

Changed

  • Bump jaxen from 1.1.6 to 1.2.0 supporting Java 11 compilation (#1316)
  • Bump ASM from 8.0.1 to 9.0 supporting JDK16 (sealed classes)
  • Bump Saxon-HE from 10.1 to 10.2
  • The dependency from test-harness to spotbugs is now testImplementation (#1317)
  • The dependency from test-harness-core to spotbugs is now api (#1317)

4.1.3 - 2020-09-25

Fixed

  • False positive RCN_REDUNDANT_NULLCHECK_OF_NONNULL_VALUE on try-with-resources (#259)
  • Misconfiguration which makes ASM not supporting Java 14 (#1276)
  • Resolved fatal exception in html report if BugInstance contains multiple Class elements and use the plain.xsl XSLT stylesheet to generate the HTML (#1025)

4.1.2 - 2020-08-18

Fixed

Added

  • Implement issue 390 as a detector, DontAssertInstanceofInTests, which reports bugs of type JUA_DONT_ASSERT_INSTANCEOF_IN_TESTS.

4.1.1 - 2020-07-31

Fixed

  • Missing the version of commons-lang3 for Maven (#1239)

4.1.0 - 2020-07-30

Added

  • Support custom bug annotation
  • Experimental support for the SARIF 2.1.0 report (discuss#95)

Fixed

  • Fixed not working detector 'CbeckMustOverrideSuperAnnotation' and renamed to 'OverridingMethodsMustInvokeSuperDetector'

Changed

  • Bump commons-lang3 from 3.10 to 3.11 (#1231)
  • Bump commons-text from 1.8 to 1.9

4.0.6 - 2020-06-23

Fixed

  • Use method call instead of reflection to get BCEL frame type (#1176)

4.0.5 - 2020-06-20

Fixed

  • dependency conflict around apache-commons-lang3 (#1135)
  • plain.xsl declares it is a 2.0 stylesheet, but it appears to have issues with a 2.0 processor
  • eclipse plugin does not contain lib/spotbugs.jar (#1158)

Changed

  • Bump up Apache Commons BCEL to the version 6.5.0

4.0.4 - 2020-06-09

Security

  • Update dom4j to 2.1.3 to fix security vulnerability. (#1122)

4.0.3 - 2020-05-13

Fixed

  • Avoid changing the SecurityManager when launched as an IntelliJ IDEA plugin.

4.0.2 - 2020-04-15

Fixed

  • GUI was using older version of jdom2 compared to spotbugs in general, bumped it to match at 2.1.1
  • Numerous places in manifest, jnlp files, and sample analysis xml were indicating older asm that was already upgraded to 7.3.1, fixed
  • Added commons-text 1.8 which treats λ properly in xml as it is allowed as λ. Associated test was corrected to use proper junit and λ was changed to λ. The escape only was applicable to html. Commons-lang original treatment was incorrect.
  • Resolved fatal exception in html report if BugInstance contains multiple Class elements (#1025)

Changed

  • Upgrade ASM to 8.0.1 which supports Java14
  • Upgraded junit4 to 4.13
  • Upgraded ant to 1.10.7
  • Upgraded log4j2 to 2.13.1
  • Upgraded from commons-lang2 to commons-lang3 3.10
  • Added commons-text 1.8 due to items deprecated in commons-lang3 and moved to this project
  • replaced usage of org.xml.sax.helpers.XMLReaderFactory (deprecated since jdk9) with javax.xml.parsers.SAXParserFactory

4.0.1 - 2020-03-19

Fixed

  • Resolved Saxon warning (#1077)
  • Unclear message of SE_NO_SUITABLE_CONSTRUCTOR_FOR_EXTERNALIZATION (#1091)

4.0.0 - 2020-02-15

Fixed

4.0.0-RC3 - 2020-02-04

This version contains no change, except for the solution for a deployment problem.

4.0.0-RC2 - 2020-01-29

Fixed

  • Latest 4.0.0 Eclipse plugin is not functional (#1067)

4.0.0-RC1 - 2020-01-17

Changed

  • change the dependency on jaxen to runtime scope
  • change the dependency on saxon to runtime scope

4.0.0-beta5 - 2020-01-14

Fixed

  • Suppress Error resolving Real SourcePath (only relative source path will be available) warning. #1009

Changed

  • Bump up Apache Commons BCEL to the version 6.4.1
  • update ASM to 7.3.1 that supports Java 14 and 15

4.0.0-beta4 - 2019-08-20

Fixed

  • default.xsl declares it is a 2.0 stylesheet, but it appears to have issues with a 2.0 processor (#958)

4.0.0-beta3 - 2019-06-24

Added

  • Provide support for CheckerFramework @NonNull annotation
  • Recognize CheckerFramework type annotations on method return values (#960)
  • The feature toggle spotbugs.experimental.multiThread for experimental multi-thread analysis
  • Add management for source filter using full source path, if available and simple filename does not already match (#694)

4.0.0-beta2 - 2019-05-21

Fixed

  • HTML report cannot be generated with fancy-hist.xsl (#944)

Added

  • Depend on XSLT 2 engine explicitly (#944)

Changed

  • Replace to try-with-resources
  • Reset DataAnalysis.DEBUG back when analysis reaches MAX_ITER
  • Remove unused methods in BCELUtil
  • Remove unused methods and deperecated methods in edu.umd.cs.findbugs.util.Util
  • Change to removeIf from Iterator and Iterator.remove
  • Use Map.computeIfAbsent instead of Map.get and Map.put
  • Use for-each instead of for-loop and while-loop
  • Bump up SLF4J API to 1.8.0-beta4

4.0.0-beta1 - 2019-03-27

Added

  • update ASM to 7.1 that supports Java 13

Removed

  • non thread-safe implementation in OpcodeStack.Item (#28)

Changed

  • Start migrating STDOUT/STDERR usage to a logging framework
  • Improvements and bug-fixes for fancy-hist.xsl
  • Bump up Apache Commons BCEL to the version 6.3.1

Deprecated

  • SQL files
  • JNLP files
  • speed attribute of Detector element in findbugs.xml

Fixed

  • Fixed bug priority calculation logic in FindNonShortCircuit#reportBug

3.1.12 - 2019-02-28

Added

  • Make TypeQualifierResolver recognize androidx.annotation.NonNull and Nullable (#880)

Changed

Security

  • Update dom4j to 2.1.1 to fix security vulnerability. (#864)

3.1.11 - 2019-01-18

Fixed

  • False positive: parameter must be non-null in inner class constructor (#772)

3.1.10 - 2018-12-19

Fixed

  • Fix bug that enhanced xml options not recognized as textui mode
  • Dataflow generates too much log (#601)
  • Delete redundant put plugin (#720)

Added

  • Add new detector IRA_INEFFICIENT_REPLACEALL for detecting usage of String.replaceAll where no regex is being used (#705)

Changed

  • Eclipse plugin is now signed to establish validity (#779)
  • edu.umd.cs.findbugs.util.ClassName#assertIsDotted return type is changed to void
  • edu.umd.cs.findbugs.util.ClassName#assertIsSlashed return type is changed to void

Deprecated

  • edu.umd.cs.findbugs.classfile.ClassDescriptor#toDottedClassName() is depricated and getDottedClassName() can be used instead.

3.1.9 - 2018-11-20

Fixed

  • Fix some out-of-bounds reports from LGTM
  • Update asm to 7.0 for better Java 11 support (#785)
  • Ignore @FXML annotated fields in UR_UNIT_READ (#702)

CHANGED

  • Allow parallel workspace builds in Eclipse with Spotbugs installed
  • Detect method parameter type annotations (#743)

3.1.8 - 2018-10-16

Fixed

  • Update asm to 6.2.1 for better Java 12 support (#741)
  • Fix hash code collision (#751)
  • Partially revert #688 because of the error in specific case with checkcast opcode (#760)

3.1.7 - 2018-09-12

Fixed

  • Don't print exit code related output if '-quiet' is passed (#714)
  • Don't underflow the stack at INVOKEDYNAMIC when modeling stack frame types (#500)

CHANGED

  • ASM_VERSION=ASM7_EXPERIMENTAL by default to support Java 11
  • Removed dependency to jFormatString (GPL) code (#725)
  • Read User Preferences exported from SpotBugs Eclipse Plugin (#728)

ADDED

  • Set ASM_VERSION=ASM6 if system property spotbugs.experimental=false

3.1.6 - 2018-07-18

Fixed

  • Potential NPE in test-harness-core (#671)
  • Support project path with spaces in test-harness-core (#683)
  • Processing of "J" (long value constants) was not processed in OpcodeStack.Item(OpcodeStack.Item, String)
  • Processing of "Z" (boolean value constants) was not processed in OpcodeStack.Item(OpcodeStack.Item, String)
  • Processing of Box classes like java.lang.Integer was not processed in OpcodeStack.Item(OpcodeStack.Item, String)

3.1.5 - 2018-06-15

Fixed

  • Keep IO.close(Closeable) that was deleted by 3.1.4 (#661)

3.1.4 - 2018-06-11 [YANKED]

Fixed

  • RANGE_ARRAY_LENGTH and RANGE_ARRAY_OFFSET false negative (#595)
  • Close source file after analysis (#591)
  • Inconsistent reporting for EI_EXPOSE_REP2 (#603)
  • Update asm to 6.2 for better Java 11 support (#648)
  • False positive: 'return value ignored' on Guavas Preconditions.checkNotNull() (#578)
  • spotbugs-ant Ant dependency in wrong scope (#655)

3.1.3 - 2018-04-18

Added

  • Support for errorprone @CheckReturnValue annotation (#592)

Fixed

  • Handle annotation on package-info.class properly (#592)
  • Update asm to 6.1.1 to support Java 10
  • Update Apache BCEL to 6.2 to support Java 9 package & module reference

3.1.2 - 2018-02-24

Added

  • Support for errorprone @CanIgnoreReturnValue annotation (#463)
  • Added support for Checker Framework's Nullable annotations.

Fixed

  • Error on lambda analysis: "Constant pool at index 0 is null." (#547)
  • Lambda methods reported as missing classes (#527)
  • Unused variable reported with wrong name (#516)
  • Require gradle 4.2.1 to fix gradle build failures on Java 9.0.1
  • Do not print exceptions for unsupported classpath files (#497)
  • Update dom4j to 2.1.0 to fix Illegal reflective access on Java 9

3.1.1 - 2017-11-29

Fixed

  • NP_NONNULL_PARAM_VIOLATION false positive (#484)
  • Add missing package exports to plugin manifest (#478)

3.1.0 - 2017-10-25

Fixed

  • Do not try to parse module-info.class (#408)

3.1.0-RC7 - 2017-10-14

Changed

  • SpotBugs annotation is recommended instead of JSR305 annotation (#130)
  • Improve color in HTML output (#433)

Fixed

  • Wrong Class-Path in MANIFEST.MF (#407)
  • Avoid ArithmeticExceptions while interpreting ldiv/lrem values (#413)
  • Parse @CheckReturnValue even in package-info from aux classpath (#429)

3.1.0-RC6 - 2017-09-25

Removed

  • Delete needless bundled libraries from Eclipse plugin (#330)

Changed

  • Upgrade BCEL from 6.1 SNAPSHOT to 6.1 STABLE (#388)
  • Upgrade ASM from 6.0 BETA to 6.0 STABLE (#373)

Added

  • Add plugin/README into the distribution (#331)

Fixed

  • Fix broken command line script (#323)
  • Fix broken Eclipse classpath variables (#379)
  • Fix errors on processing INVOKEDYNAMIC instructions (#371)
  • Fix errors on processing i2f, i2d and i2l instructions if the lhs is a character (#389)

3.1.0-RC5 - 2017-08-16

Removed

  • The YourKitProfiler class has been removed and the findbugs.yourkit.enabled system property is no longer supported (#289)

Changed

  • SpotBugs now consumes ASM 6.0 beta rather than alpha (#268)

3.1.0-RC4 - 2017-07-21

Added

  • The Eclipse SpotBugs plugin is eligible as an update for FindBugs 3.0.2 and earlier (#209)
  • <EarlierSubtypes> and <LaterSubtypes> can now refer to supertypes from custom plug-ins (#215)

Removed

  • The AbstractIntegrationTest.containsExactly and SpotBugsRule.containsExactly methods have been replaced by CountMatcher.containsExactly (#269)

Changed

  • jdepend:jdepend:2.9.1 is no longer a compile-scoped dependency but only test-scoped. (#242)
  • ICodeBase, IClassPath, and URLClassPath now implement AutoCloseable (#258)

Deprecated

  • In future versions of SpotBugs, classes currently implementing the deprecated org.apache.bcel.Constants interface may no longer do so. Subclasses should either implement this interface themselves or, preferably, use the constants defined in the (non-deprecated) org.apache.bcel.Const class instead. (#262)

3.1.0-RC3 - 2017-06-10

Added

  • Make TypeQualifierResolver recognize android.support.annotation.NonNull and Nullable (#182)

Fixed

  • Fix wrong version in Eclipse Plugin (#173)
  • When AnalysisRunner has findbugs.xml in jar, don't create temp jar (#183)

3.1.0-RC2 - 2017-05-16

Added

  • First release for SpotBugs Gradle Plugin (#142)
  • Support plugin development by test harness (#140)

Changed

  • Change Eclipse Plugin ID to avoid conflict with FindBugs Eclipse Plugin (#157)

Fixed

  • Enhance performance of Eclipse Plugin (#159)
  • Fix HTML format in messages.xml and others (#166)
  • Fix Japanese message in messages_ja.xml (#164)

3.1.0-RC1 - 2017-02-21

Added

  • Make TypeQualifierResolver recognize JetBrains NotNull annotations (Patch #248)
  • excludePath and includePath in AntTask (6668a9)
  • Cancellation of queueing FindBugsJob in Eclipse plugin (bceec81)
  • Artifact which contains only SpotBugs annotations (Bug#1341)
  • Warn if excludeFilter is empty (4b7e93f)
  • Partial Java9 support (FindBugs#105)
  • spotbugs.home is available like findbugs.home (#33)

Changed

  • Support user preferences exported by the Export->Preferences wizard in Eclipse (01b7df7)
  • No more dependency in annotations on BugRanker and Priorities (2f9d672, 725be6e)
  • Several classes are now not Serializable (#85)

Deprecated

  • OpcodeStack.Item.defineNewSpecialKind(String) (#27)
  • Version.RELEASE (#125)
  • DescriptorFactory.canonicalizeString(String) (#128)

Removed

  • Java7 Support (Issue #19)
  • WebCloud and other plugins
  • BlueJ Support
  • Artifact which packages not only SpotBugs annotations but also JSR305 annotations

Fixed

  • Typos in description, documentation and so on
  • StackOverflowError in ValueRangeAnalysisFactory (Bug#1369)
  • Command line "@" feature (Bug#1375)
  • SOAPMessage.getSOAPHeader() can and does return null (Bug#1368)
  • False positive in UC_USELESS_OBJECT (Bug#1373)
  • False positive in NP_LOAD_OF_KNOWN_NULL_VALUE (Bug#1372)
  • Missing java.nio.file.Files support in OS_OPEN_STREAM (Bugs#1399])
  • False negative in GC_UNRELATED_TYPES (Bug#1387)
  • Not reliable BIT_SIGNED_CHECK (Bug#1408)
  • Annotation of SIC_INNER_SHOULD_BE_STATIC_ANON (Bug#1418)
  • Bug in ClassName.isAnonymous (dcfb934)
  • long/double arguments handling in BuildStringPassthruGraph (370808a)
  • long/double arguments handling in FindSqlInjection (32a20db)
  • getEntryValueForParameter in ValueNumberAnalysis (fb11839)
  • Do not generate non-constant SQL warnings for passthru methods (Bug#1416)
  • Too eager "may expose internal representation by storing an externally mutable object" (Bug#1397)
  • Do not report WrongMapIterator for EnumMap (Bug#1422)
  • Default Case is Missing With Alias Enum Constants (Bug#1392)
  • NPE when launched using IBM JDK on Linux (Bug#1383)
  • Serializable should be out of target for RI_REDUNDANT_INTERFACES (FindBugs#49)
  • nonnull annotations database for java.util.concurrent.ForkJoinPool ((fb8a953)[https://github.com/spotbugs/spotbugs/commit/fb8a953])
  • Better handling for JDT illegal signatures(#55)
  • StaticCalendarDetector is constantly throwing ClassNotFoundExceptions (#76)
  • ClassFormatException when analyze class with lambda (INVOKEDYNAMIC) (#60)

FindBugs 3.0.1 or older

Check changelog at SourceForge.