Codebox Software
Custom Checkstyle Rule Helper
Published:
AbstractImportChecker.java simplifies the process of writing custom CheckStyle rules that examine class imports.
Note that Checkstyle contains a number of quite flexible built-in rules for managing imports, you should obviously use these if they meet your needs.
To implement your own custom import checker just sub-class AbstractImportChecker and provide an implementation for onImport():
public class ImportChecker extends AbstractImportChecker {
@Override
public void onImport(String packageName, String importName) {
if (! isImportAllowedInPackage(packageName, importName)) {
logError(String.format("Import %s not allowed in package %s", importName, packageName));
}
}
private boolean isImportAllowedInPackage(String packageName, String importName) {
return true; // custom logic here
}
}
The DottedPath helper class can be used to check for sub-packages and package membership:
private boolean isImportAllowedInPackage(String packageName, String importName){
DottedPath packagePath = new DottedPath(packageName);
DottedPath importPath = new DottedPath(importName);
return importPath.isChildOf(packagePath);
}