| <?xml version="1.0"?> |
| <!-- |
| Licensed to the Apache Software Foundation (ASF) under one or more |
| contributor license agreements. See the NOTICE file distributed with |
| this work for additional information regarding copyright ownership. |
| The ASF licenses this file to You under the Apache License, Version 2.0 |
| (the "License"); you may not use this file except in compliance with |
| the License. You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, software |
| distributed under the License is distributed on an "AS IS" BASIS, |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| See the License for the specific language governing permissions and |
| limitations under the License. |
| --> |
| <!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"> |
| |
| <property name="cacheFile" value="${checkstyle.cache.file}"/> |
| |
| <!-- Item 4 - Avoid creating duplicate objects --> |
| <module name="IllegalInstantiation"> |
| <property name="classes" value="java.lang.Boolean, java.lang.String"/> |
| </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="4"/> |
| </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"/> |
| <property name="allowUndeclaredRTE" value="true"/> |
| </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 --> |
| |
| <module name="MagicNumber"/> |
| |
| <!-- This is needed for Suppression Comment Filters --> |
| <module name="FileContentsHolder"/> |
| |
| </module> |
| |
| <!-- enforce package documentation --> |
| <module name="JavadocPackage"> |
| <!-- setting allowLegacy means it will check for package.html instead of just package-info.java --> |
| <property name="allowLegacy" value="true"/> |
| </module> |
| |
| <!-- Item 6 - Avoid finalizers --> |
| <!-- this will not find violations that contain linebreaks --> |
| <module name="RegexpSingleline"> |
| <property name="format" value="((public)|(protected))\s+void\s+finalize\(\s*\)"/> |
| <property name="message" value="Avoid finalizers."/> |
| </module> |
| |
| <!-- don't allow tabs --> |
| <module name="FileTabCharacter"> |
| <property name="fileExtensions" value="java,xml"/> |
| </module> |
| |
| <module name="SuppressionCommentFilter"/> |
| |
| <module name="SuppressionFilter"> |
| <!-- config_loc is used by Eclipse plugin --> |
| <property name="file" value="${config_loc}/checkstyle-suppressions.xml"/> |
| </module> |
| |
| <!-- |
| Allow comment to suppress checkstyle for a single line |
| e.g. // CHECKSTYLE IGNORE MagicNumber |
| --> |
| <module name="SuppressWithNearbyCommentFilter"> |
| <property name="commentFormat" value="CHECKSTYLE IGNORE (\w+)"/> |
| <property name="checkFormat" value="$1"/> |
| </module> |
| |
| </module> |