2011-07-06 7 views
0

사용자 정의 검사 스타일을 설치하고 실행하는 방법에 대해 다른 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); 
    } 
} 

답변

2
+0

빠른 응답 감사합니다. 이 코드가 무엇을하고 있는지 설명 할 수 있습니까? 왜 우리는 GetLastChild를 가져 와서 getPreviousSibling을 얻는가? –

+0

참고로 코드에서 package 키워드를 사용하고 있기 때문에이 코드는 컴파일되지 않습니다. –

관련 문제