Release 0.9.1 * An XML formatter of the output generated by the Lint4j Ant tasks has been added * Fixed broken ignorePackage element in Ant task * Fixed issue when an inner class was passed via the -classes command line flag * Fixed a major memory leak exposed in the eclipse plugin * Fixed wrong message id for warning about serialization support fields in non-serialzable classes that threw an exception Release 0.9 * Fixed a false positive warning about an abstract class w/o abstract methods, although only partially implementing declared interfaces * Added a warning about empty method implementations in an abstract class * Added a warning about an abstract method shadowing another abstract method in a superclass * Reclassified warning about hardcoded newlines to severity 5 * Reclassified warning about casts of subclasses to severty 3 * Fixed wrong error line numbers for serialVersionUID or serialPersistentFields in Externalizable * Non-static final fields initialized by Unary or Binary operations are now properly detected as constants which should be declared static * Fixed an issue where Java extensions where added to the classpath with a wrong prefix * Don't use the Java VM classpath to resolve dependencies on class files * Fixed a bug where the base package of a package specification such as stuff.* was not checked correctly * Prevent visiting the same package multiple times * Fixed a false positive warning about array types with more than one dimension not being serializable * Fixed a false positive warning about static inner classes needing a serialVersionUID Release 0.8.2 * New warning if a class implements an interfaces that is implemented already by a superclass * New warning if an interfaces declares a method that is declared in one of the extended interfaces * Fixed an Assertion Error that appeared when Lint4j was executed with assertions enabled * Fixed a bug that stopped audit for a complete package if one file contained a parsing error * XML report: Support added for non-commented Lines of Code metric * XML report: Fix for nested interfaces that were not included in interface count Release 0.8.1 * Support for XML reports used by the maven plugin * Fixed a ClassCastException when analyzing files that contain interfaces * New Ant templates in the examples directory to get started quickly Release 0.8: * Lint4j can now audit class files in the -sourcepath argument * Now adds contents of java.ext.dirs property to the classpath * Line numbers of methods from binary files are now used in error messages * Reduced memory usage for binary classes * Fixed an initialization issue that resulted in false positive warning about a class not being Cloneable * Updated and extended examples * Ant task: Added toFile argument for text formatters * Ant task: allow multiple formatters * Added file based checking of source files * Added the capability of scanning source files in jar or zip files * Fixed shell script issue when path names contained spaces * Fixed a parser issue with comments starting with "//:", reported by Bruce Eckel * updated PDF documentation Release 0.7.1: * support for cygwin on Windows * new warning if equals() is called on an array type * new warning if strings are compared using == * new warning if a class overrides clone() but does not implement Cloneable * new warning if clone() contains a constructor call of the enclosing type * new warning if a string contains a hardcoded newline instead of using the system property * new warning if an abstract class does not contain at least one abstract method * new warning if an abstract class does not contain at least one method, and may be replaced by an interface * new warning about methods which introduce operating system dependencies (System.getenv(), Runtime.exec()) * several bug fixes that improve accuracy when types were loaded from binary inner classes * fix for a bug in the type analysis involving inner interfaces * reclassified object type comparison using == as warning level 4 as a result of the special handling of arrays and strings * improved Ant integration examples Release 0.7: * First cut of EJB support: 13 kinds of EJB violations are detected * Windows batch file support * new warnings: assignments without effect, accidental assignment of a boolean value, method/constructor confusion * complete web site overhaul * PDF documentation * new Ant task example * new example checks for PetStore, Smart Ticket, ECPerf, and Adventure Builder * reprioritized and clarified warnings * bug fixes Relase 0.6 : * created an Ant task for lint4j * display the severity of warnings * print warnings for non-existing paths in -sourcepath and -classpath * lint4j launcher: allow checking per class with option -classes * lint4j launcher: added -version flag * lint4j launcher: handle wrong arguments and exceptions gracefully and print usage * lint4j launcher: updated usage information * lint4j launcher: -exact flag displays only warnings with the same severity as specified with -v * lint4j launcher: -J flag to pass VM flags * new check for catching and not rethrowing Throwable, and Error subclasses * handle "//" comments that are terminated with EOF instead of EOL gracefully * removed log4j dependency * reprioritized and clarified warnings * bug fixes Release 0.5.1 (12/22/2003): * fixed a wrongly reported serialization problem that occurred when the first non-serializable class in the inheritance hierarchy had a protected default constructor * fixed several problems in the parsing engine * new check to detect inherited readExternal() and writeExternal() methods when the subclass has additional serializable fields * new check to detect object fields that are constants, and that can be made static * new check to detect an unnecessary return statement at the end of a method returning void * new checks to detect empty blocks in synchronized, while, finally, try, and if constructs * new check to detect confusing "if" statements such as if(!expression) this; else that; * clarified many warning messages * downgraded warning about zero-length arrays to lowest warning level (5) * integrated log4j as logging framework Release 0.5 (08/07/2003): * first public release Work on Lint4j started October 2002