| <?xml version="1.0"?> |
| <!DOCTYPE module PUBLIC |
| "-//Puppy Crawl//DTD Check Configuration 1.1//EN" |
| "http://www.puppycrawl.com/dtds/configuration_1_1.dtd"> |
| |
| |
| <!-- |
| |
| These checks still need to be Voted on for Validator, but |
| at least serve to cut down on some of the noise. |
| |
| |
| A Checkstyle configuration that checks against the recommendations |
| in Joshua Bloch, Effective Java (highliy recommended read!) |
| |
| This file does NOT duplicate the checks for whitespace settings, |
| placement of curly braces, etc. Only the rules that are explicitly |
| mentioned in the book are enforced. |
| |
| Currently the amount of rules that can be automatically checked by |
| Checkstyle is not very large, but adding more checks of this quality |
| is a high priority goal for the development team. |
| |
| --> |
| |
| <module name="Checker"> |
| |
| <module name="TreeWalker"> |
| |
| <!-- Item 4 - Avoid creating duplicate objects --> |
| <module name="IllegalInstantiation"> |
| <property name="classes" value="java.lang.Boolean, java.lang.String"/> |
| </module> |
| |
| <!-- Item 6 - Avoid finalizers --> |
| <!-- this will not find violations that contain linebreaks --> |
| <module name="GenericIllegalRegexp"> |
| <property name="format" |
| value="((public)|(protected))\s+void\s+finalize\(\s*\)"/> |
| </module> |
| |
| <!-- Item 8 - Always override hashCode when you override equals --> |
| <module name="EqualsHashCode"/> |
| |
| <!-- Item 12 - Make all fields private --> |
| <module name="VisibilityModifier"/> |
| |
| <!-- Item 15 - Design and document for inheritance or else prohibit it --> |
| <!-- the module actually implements a very strict rule, it would be |
| interesting to know whether Joshua meant what checkstyle implements. |
| We feel this implementation is well suited as a warning, |
| i.e. if you get error messages from this check you should be |
| able to name a good reason to implement your code the way you do it, |
| especially if you are designing a library and not an application. --> |
| <module name="DesignForExtension"> |
| <property name="severity" value="warning"/> |
| </module> |
| |
| <!-- Item 17 - Use interfaces only to define types --> |
| <module name="InterfaceIsType"/> |
| |
| <!-- Item 25 - Design method signatures carefully --> |
| <!-- Avoid long parameter lists --> |
| <module name="ParameterNumber"> |
| <property name="max" value="3"/> |
| </module> |
| |
| <!-- Item 26 - Use overloading judiciously --> |
| <!-- rfe #659735 --> |
| |
| <!-- Item 27 - Return zero-length array, not nulls --> |
| <!-- no rfe yet --> |
| |
| <!-- Item 28 - Write doc comments for all exposed API elements --> |
| <module name="JavadocType"> |
| <property name="scope" value="protected"/> |
| </module> |
| <module name="JavadocMethod"> <!-- also covers Item 44 --> |
| <property name="scope" value="protected"/> |
| </module> |
| <module name="JavadocVariable"> |
| <property name="scope" value="protected"/> |
| </module> |
| |
| <!-- Item 29 - Minimize the scope of local variables --> |
| <!-- no rfe yet --> |
| |
| |
| <!-- Item 38 - Adhere to generally accepted naming conventions --> |
| <module name="PackageName"> |
| <!-- no uppercase letters, between 2 and 10 characters --> |
| <property name="format" value="^[a-z]+(\.[a-z][a-z0-9]{1,9})*$"/> |
| </module> |
| <module name="TypeName"/> |
| <module name="ConstantName"/> |
| <module name="LocalFinalVariableName"/> |
| <module name="LocalVariableName"/> |
| <module name="MemberName"/> |
| <module name="MethodName"/> |
| <module name="ParameterName"/> |
| <module name="StaticVariableName"/> |
| |
| <!-- Item 47 - Don't ignore exceptions --> |
| <module name="EmptyBlock"> |
| <property name="tokens" value="LITERAL_CATCH"/> |
| <!-- require a comment, change to stmt to require a statement --> |
| <property name="option" value="text"/> |
| </module> |
| |
| <!-- Item 50 - Never invoke wait outside a loop --> |
| <!-- rfe #712798 --> |
| |
| <!-- Item 57 - Provide a readResolve method when necessary --> |
| <!-- no rfe yet --> |
| |
| <!-- don't allow tabs --> |
| <module name="TabCharacter"/> |
| |
| <!-- enforce License Header using a RegExp file to allow some variations |
| like the years in copyrights or values of SVN variables. --> |
| <module name="RegexpHeader"> |
| <property name="headerFile" value="LICENSE.CheckStyle"/> |
| </module> |
| |
| </module> |
| |
| <!-- enforce package documentation --> |
| <module name="PackageHtml"/> |
| |
| </module> |