/asl/lib/checkstyle/config/BlochEffectiveJava.xml
XML | 117 lines | 35 code | 21 blank | 61 comment | 0 complexity | f14936e7bf5d5964e3066d3953dd9ed8 MD5 | raw file
Possible License(s): LGPL-3.0, Apache-2.0, GPL-3.0, GPL-2.0, AGPL-3.0, JSON, BSD-3-Clause
- <?xml version="1.0"?>
- <!DOCTYPE module PUBLIC
- "-//Puppy Crawl//DTD Check Configuration 1.1//EN"
- "http://www.puppycrawl.com/dtds/configuration_1_1.dtd">
- <!--
- 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">
- <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 8 characters -->
- <property name="format" value="^[a-z]+(\.[a-z][a-z0-9]{1,7})*$"/>
- </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 -->
- </module>
- </module>