사용자 정의 검사 스타일을 설치하고 실행하는 방법에 대해 다른 StackOverflow question이 있습니다. 이 작업을 수행하는 방법을 배웠고 자세한 지침으로 곧 답변을 업데이트하겠습니다. 이제 수표를 맞춤 설정하는 데 문제가 있습니다. 아래는 제 코드입니다. 문제는 정규화 된 패키지를 문자열 (예 : com.amir.foo
)로보고 싶습니다. 대신 getText()
또는 toString()
을 실행하면 모호한 결과 ([checkstyle] 패키지가 : ANNOTATIONS)로 설정됩니다. 누구든지이 작업을 통해 원하는 결과를 얻는 방법을 알고 있습니까? PackageNameCheck의 소스 코드를 참조하시기 바랍니다 자세한 내용은사용자 지정 검사 스타일 만들기
@Override
public void visitToken(DetailAST aAST)
{
final DetailAST nameAST = aAST.getLastChild().getPreviousSibling();
final FullIdent full = FullIdent.createFullIdent(nameAST);
final String package = full.getText();
// do some fancy stuff with package name
}
: 당신은 다음과 유사한 코드를 사용한다 무엇 당신의 패키지 이름에 대한 수표로 사용을 찾고
import com.puppycrawl.tools.checkstyle.api.*;
public class MyCheck extends Check
{
FullIdent packageDeclaration;
public int[] getDefaultTokens() {
return new int[]{TokenTypes.PACKAGE_DEF};
}
public void visitToken(DetailAST ast)
{
switch(ast.getType()) {
case TokenTypes.PACKAGE_DEF:
System.out.println("got package!");
visitPackage(ast);
break;
default:
System.out.println("naughty!");
}
}
private void visitPackage(DetailAST pack) {
packageDeclaration = FullIdent.createFullIdentBelow(pack);
System.out.println("package set to : " +packageDeclaration);
}
}
빠른 응답 감사합니다. 이 코드가 무엇을하고 있는지 설명 할 수 있습니까? 왜 우리는 GetLastChild를 가져 와서 getPreviousSibling을 얻는가? –
참고로 코드에서 package 키워드를 사용하고 있기 때문에이 코드는 컴파일되지 않습니다. –