)
at
com.puppycrawl.tools.checkstyle.PackageObjectFactory.createModule(PackageObjectFactory.java:149)
... 26 more
[INFO]
[INFO] Total time: 33 seconds
[INFO] Finished at: Sat Sep 08 10:06:30 EDT 2007
[INFO] Final Memory: 6M/12M
[INFO]
maven file:
...
build
extensions
extension
groupIdcom.monetizeit/groupId
artifactIdcheckstyle/artifactId
version1.0-SNAPSHOT/version
/extension
/extensions
...
reporting
plugins
plugin
groupIdorg.apache.maven.plugins/groupId
artifactIdmaven-checkstyle-plugin/artifactId
configuration
configLocationsrc/main/config/checkstyle.xml/configLocation
packageNamesLocationsrc/main/config/checkstyle-packages.xml/packageNamesLocation
/configuration
/plugin
/plugins
/reporting
...
checkstyle.xml:
?xml version=1.0 ?
!DOCTYPE module PUBLIC -//Puppy Crawl//DTD Check Configuration
1.2//EN http://www.puppycrawl.com/dtds/configuration_1_2.dtd;
module name=Checker
module name=NewlineAtEndOfFile /
module name=Translation /
module name=TreeWalker
property name=cacheFile value=${checkstyle.cache.file} /
module name=com.monetizeit.checkstyle.BlanklineCheck /
module name=JavadocType /
...
module name=UpperEll /
/module
/module
checkstyle-packages.xml
?xml version=1.0 encoding=UTF-8?
!DOCTYPE checkstyle-packages PUBLIC
-//Puppy Crawl//DTD Package Names 1.0//EN
http://www.puppycrawl.com/dtds/packages_1_0.dtd;
checkstyle-packages
package name=com.monetizeit
package name=checkstyle/
/package
package name=com.puppycrawl.tools.checkstyle
package name=checks
package name=blocks/
package name=coding/
package name=design/
package name=duplicates/
package name=header/
package name=imports/
package name=indentation/
package name=javadoc/
package name=metrics/
package name=modifier/
package name=naming/
package name=sizes/
package name=whitespace/
/package
package name=filters/
/package
/checkstyle-packages
BlankLineCheck.class
package com.monetizeit.checkstyle;
import com.puppycrawl.tools.checkstyle.api.*;
/**
*
* @author Michael Fortin
* @version $Id$
*/
public class BlanklineCheck extends Check
{
private static final int[] ints = new int[]{
TokenTypes.LITERAL_CASE,
TokenTypes.LITERAL_CONTINUE,
TokenTypes.LITERAL_DO,
TokenTypes.LITERAL_FOR,
TokenTypes.LITERAL_IF,
TokenTypes.LITERAL_RETURN,
TokenTypes.LITERAL_SWITCH,
TokenTypes.LITERAL_TRY,
TokenTypes.LITERAL_WHILE
};
public int[] getDefaultTokens()
{
return ints;
}
@Override
public int[] getRequiredTokens()
{
return getDefaultTokens();
}
@Override
public void visitToken(DetailAST ast)
{
switch (ast.getType()) {
case TokenTypes.LITERAL_CASE:
startsLine(ast);
blankLineRequired(ast);
break;
case TokenTypes.LITERAL_CONTINUE:
startsLine(ast);
blankLineRequired(ast);
break;
case TokenTypes.LITERAL_DO:
startsLine(ast);
blankLineRequired(ast);
break;
case TokenTypes.LITERAL_FOR:
startsLine(ast);
blankLineRequired(ast);
break;
case TokenTypes.LITERAL_IF:
startsLine(ast);
blankLineRequired(ast);
break;
case TokenTypes.LITERAL_RETURN:
startsLine(ast);
blankLineRequired(ast);
break;
case TokenTypes.LITERAL_SWITCH:
startsLine(ast);
blankLineRequired(ast);
break;
case TokenTypes.LITERAL_TRY:
startsLine(ast);
blankLineRequired(ast);
break;
case TokenTypes.LITERAL_WHILE:
startsLine(ast);
blankLineOptional(ast);
break;
}
log(ast.getLineNo(),ast.getText());
}
void startsLine(DetailAST ast) {
int line = ast.getLineNo();
DetailAST previous = ast.getPreviousSibling();
int previousLine = previous.getLineNo();
if(line == previousLine)
log(line,Must start the line);
}
void blankLineRequired(DetailAST ast) {
int line = ast.getLineNo();
DetailAST previous = ast.getPreviousSibling();
int previousLine = previous.getLineNo();
if(line == previousLine)
log(line,Must be preceded by a blank line);
}
void blankLineOptional(DetailAST ast) {
int line = ast.getLineNo();
DetailAST previous = ast.getPreviousSibling