0
IntelliJ IDEA에 대한 사용자 정의 코드 검사 규칙을 생성하려고합니다. 이 규칙은 메소드 호출의 특수 주석 인자 유형이 메소드 서명의 매개 변수 유형과 동일한 지 여부를 확인해야합니다.메소드 서명에 대한 코드 검사
예 :
[...]
protected static class visitor extends JavaElementVisitor {
@Override
public void visitMethodCallExpression(PsiMethodCallExpression expression) {
PsiMethod method = expression.resolveMethod();
//returns no annotations
PsiAnnotation[] annotations = method.getModifierList().getAnnotations();
//returns also no annotations
MethodSignatureBackedByPsiMethod methodSignature = MethodSignatureBackedByPsiMethod.create(method, PsiSubstitutor.EMPTY);
PsiType[] types = methodSignature.getParameterTypes();
for (PsiType psiType : types){
TypeAnnotationProvider provider = psiType.getAnnotationProvider();
PsiAnnotation[] annotations = provider.getAnnotations();
}
super.visitMethodCallExpression(expression);
}
[...]
}
가 어떻게 메서드의 매개 변수 형식의 주석 인수 형식의 주석을 비교할 수 있습니다 내가 뭘하려
public void method(@MyAnnotation String input){
}
public void method2(){
String invalid = "";
method(invalid); // error
@MyAnnotation String valid = (@MyAnnotation String) "";
method(valid); // no error
}
?
감사합니다.
감사합니다! 이것은 메소드의 매개 변수에 적용됩니다. 메소드 호출의 인수에 대해서는'expression.getArgumentList()'를 먼저 수행합니다. 특수 효과를 어디서 얻을 수 있습니까? – Stefan
메소드 인수의 주석을 가져 오기 위해 예제로 내 대답을 확장했습니다. –