unnecessary_overrides 린트 규칙: 같은 매개변수로 super를 호출만 하는 오버라이드 없애기
unnecessary_overrides 린트 규칙: 같은 매개변수로 super를 호출만 하는 오버라이드 없애기
메서드를 오버라이드했는데 그 안에서 그냥 같은 매개변수로 super 메서드를 부르기만 한다면, 그 오버라이드는 의미가 없어요. 이 린트 규칙은 그런 불필요한 오버라이드를 잡아내서 코드를 정리하도록 도와줘요.
본문
설명
같은 매개변수로 super 메서드를 호출하기만 하는 오버라이드는 하지 마세요.
BAD:
class A extends B {
@override
void foo() {
super.foo();
}
}
GOOD:
class A extends B {
@override
void foo() {
doSomethingElse();
}
}
다음과 같은 경우에는 멤버를 오버라이드하는 게 유효해요.
- 반환 타입이나 매개변수 타입이 super 멤버와 정확히 같지 않은 경우
- 매개변수 중 하나에
covariant키워드가 붙은 경우 - 멤버에 문서 주석(doc comment)이 있는 경우
- 멤버에
@override외의 다른 애너테이션이 있는 경우 - 멤버가
@protected로 애너테이션되지 않았는데 super 멤버가 그런 경우
noSuchMethod는 특수한 메서드라서 이 규칙의 검사 대상이 아니에요.
활성화 방법
unnecessary_overrides 규칙을 활성화하려면 analysis_options.yaml 파일의 linter > rules 아래에 규칙을 추가하면 돼요.
linter:
rules:
- unnecessary_overrides
대신 YAML 맵 문법을 사용해서 린트 규칙을 설정하고 있다면, linter > rules 아래에 unnecessary_overrides: true를 추가하면 돼요.
linter:
rules:
unnecessary_overrides: true