unnecessary_overrides 린트 규칙: 같은 매개변수로 super를 호출만 하는 오버라이드 없애기

unnecessary_overrides 린트 규칙: 같은 매개변수로 super를 호출만 하는 오버라이드 없애기

메서드를 오버라이드했는데 그 안에서 그냥 같은 매개변수로 super 메서드를 부르기만 한다면, 그 오버라이드는 의미가 없어요. 이 린트 규칙은 그런 불필요한 오버라이드를 잡아내서 코드를 정리하도록 도와줘요.

출처: unnecessary_overrides

본문

설명

같은 매개변수로 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

더 알아보기