package org.opendaylight.yangtools.checkstyle;
-import com.puppycrawl.tools.checkstyle.api.Check;
+import com.puppycrawl.tools.checkstyle.api.AbstractCheck;
import com.puppycrawl.tools.checkstyle.api.DetailAST;
import com.puppycrawl.tools.checkstyle.api.TokenTypes;
-public class LoggerFactoryClassParameterCheck extends Check {
+public class LoggerFactoryClassParameterCheck extends AbstractCheck {
private static final String LOG_MESSAGE = "LoggerFactory.getLogger Class argument is incorrect.";
private static final String METHOD_NAME = "LoggerFactory.getLogger";
@Override
public int[] getDefaultTokens() {
- return new int[]{TokenTypes.METHOD_CALL};
+ return new int[] { TokenTypes.METHOD_CALL };
}
@Override
- public void visitToken(DetailAST aAST) {
- final String methodName = CheckLoggingUtil.getMethodName(aAST);
- if(methodName.equals(METHOD_NAME)) {
- final String className = CheckLoggingUtil.getClassName(aAST);
- final String parameter = aAST.findFirstToken(TokenTypes.ELIST).getFirstChild().getFirstChild().getFirstChild().getText();
- if(!parameter.equals(className)) {
- log(aAST.getLineNo(), LOG_MESSAGE);
+ public void visitToken(DetailAST ast) {
+ final String methodName = CheckLoggingUtil.getMethodName(ast);
+ if (methodName.equals(METHOD_NAME)) {
+ final String className = CheckLoggingUtil.getClassName(ast);
+ DetailAST findFirstToken = ast.findFirstToken(TokenTypes.ELIST);
+ if (findFirstToken == null) {
+ logError(ast, className);
+ return;
+ }
+ DetailAST childToken = findFirstToken.getFirstChild();
+ if (childToken == null) {
+ logError(ast, className);
+ return;
+ }
+ childToken = childToken.getFirstChild();
+ if (childToken == null) {
+ logError(ast, className);
+ return;
+ }
+ childToken = childToken.getFirstChild();
+ if (childToken == null) {
+ logError(ast, className);
+ return;
+ }
+ final String token = childToken.getText();
+ if (!token.equals(className)) {
+ log(ast.getLineNo(), LOG_MESSAGE);
}
}
}
+ protected void logError(DetailAST ast, String className) {
+ log(ast.getLineNo(), String.format("Invalid parameter in \"getLogger\" method call in class: %s", className));
+ }
}