문제

유효한 목록은 무엇입니까? @SuppressWarnings 자바의 경고 이름?

사이에 들어오는 비트 ("") 안에 @SuppressWarnings("").

도움이 되었습니까?

해결책

IDE 또는 컴파일러에 따라 다릅니다.

여기에 있습니다 목록 Eclipse Galileo의 경우 :

  • 모두 모든 경고를 억제합니다
  • 권투 권투/무 복원 작업 작업에 대한 경고를 억제합니다
  • 깁스 캐스트 작업에 대한 경고를 억제합니다
  • DEP-ANN 더 이상 사용되지 않은 주석에 대한 경고를 억제합니다
  • 천칭 감가 상각에 대한 경고를 억제합니다
  • 실패로 끝나다 스위치 문의 누락 된 휴식에 대한 경고를 억제하려면
  • 마지막으로 돌아 오지 않는 최종 블록에 대한 경고를 억제하려면
  • 숨김 가변을 숨기는 지역 주민에 대한 경고를 억제합니다
  • 불완전한 스위치 스위치 문 (Enum Case)에서 누락 된 항목에 대한 경고를 억제하려면
  • NLS 비 NLS 문자 리터럴에 대한 경고를 억제합니다
  • 없는 널 분석에 대한 경고를 억제합니다
  • 제한 낙담하거나 금지 된 참조의 사용에 대한 경고를 억제하려면
  • 연속물 직렬화 가능한 클래스에 대한 누락 된 SerialversionUid 필드에 대한 경고를 억제하려면
  • 정적 접근 잘못된 정적 액세스에 대한 경고를 억제합니다
  • 합성 접근 내부 클래스에서 최적화되지 않은 액세스에 대한 경고를 억제하려면
  • 확인되지 않았습니다 확인되지 않은 작업에 대한 경고를 억제합니다
  • 자격이없는 필드 액세스 현장 액세스에 대한 경고를 억제합니다
  • 사용되지 않았습니다 사용하지 않은 코드에 대한 경고를 억제합니다

목록 INDIGO 추가 :

  • Javadoc Javadoc 경고에 대한 경고를 억제합니다
  • 원시 원시 유형의 사용에 대한 경고를 억제합니다
  • 정적 방법 정적으로 선언 할 수있는 방법에 대한 경고를 억제하려면
  • 감독자 슈퍼 호출없이 메소드를 재정의하는 것과 관련하여 경고를 억제하려면

목록 Juno는 다음을 추가합니다.

  • 자원 유형 폐쇄 가능한 자원의 사용에 대한 경고를 억제하려면
  • 동기화 동기화 된 방법을 재정의 할 때 동기화가 누락되어 경고를 억제하려면

Kepler와 Luna는 Juno와 동일한 토큰 목록을 사용합니다 (목록).

다른 사람들은 비슷하지만 다양 할 것입니다.

다른 팁

모든 값은 허용됩니다 (인식되지 않은 값은 무시됩니다). 인정 된 것의 목록은 컴파일러에 따라 다릅니다.

~ 안에 Java 튜토리얼 unchecked 그리고 deprecation Java 언어 사양에 필요한 두 가지 경고로 나열되므로 모든 컴파일러와 유효해야합니다.

모든 컴파일러 경고는 범주에 속합니다. Java Language Specification에는 감가 상각과 검사되지 않은 두 가지 범주가 나와 있습니다.

내부의 특정 섹션 자바 언어 사양 그들이 정의되는 곳은 버전에서 일관되지 않습니다. Java SE 8 사양에서 unchecked 그리고 deprecation 섹션에서 컴파일러 경고로 나열됩니다 9.6.4.5. @suppresswarnings 그리고 9.6.4.6 @deprecated, 각각.

Sun의 컴파일러의 경우 실행 중입니다 javac -X 해당 버전에서 인식하는 모든 값의 목록을 제공합니다. 1.5.0_17의 경우 목록은 다음과 같습니다.

  • 모두
  • 천칭
  • 확인되지 않았습니다
  • 실패로 끝나다
  • 연속물
  • 마지막으로

목록은 컴파일러에 따라 다릅니다. 그러나 여기에 지원되는 값이 있습니다 :

  • 모든 추론 더 이상 사용되지 않은 코드 내부에서도 더 이상 사용되지 않습니다
  • Alljavadoc 유효하지 않거나 누락 된 Javadoc
  • Assertidentifier 식별자로 사용되는 ASSERT의 발생
  • 권투 오토 옥스 변환
  • Charconcat 문자열로 변환되지 않고 문자열 연결에 숯 배열을 사용하는 경우
  • 조건부 우발적 인 부울 과제
  • ConstructorName 생성자 이름이있는 메소드
  • DEP-ANN @deprecated 주석이 없습니다
  • 천칭 더 이상 사용되지 않은 유형 또는 멤버의 사용량 사용
  • 낙담 낙담 한 액세스 규칙과 일치하는 유형의 사용
  • 빈 블록 문서화되지 않은 빈 블록
  • Enumswitch, 불완전한 스위치 불완전한 열거 스위치
  • 실패로 끝나다 가능한 낙상 사례
  • 현장 다른 변수를 숨기는 필드
  • 파이널 바운드 최종 바운드로 매개 변수를 입력하십시오
  • 마지막으로 마지막으로 정상적으로 완료되지 않습니다
  • 금지 된 금지 된 액세스 규칙과 일치하는 유형 사용
  • 숨김 현장을위한 매크로, 로컬 히딩, 타입 가이딩 및 마스크 캐치 블록
  • 간접적 인 정적 멤버에 대한 간접적 인 참조
  • intfannotation 수퍼 인터페이스로 사용되는 주석 유형
  • intfnoninherited 인터페이스가 아닌 메소드 호환성
  • Javadoc 유효하지 않은 Javadoc
  • 로컬 히딩 다른 변수를 숨기는 로컬 변수
  • MaskedCatchBlocks 숨겨진 캐치 블록
  • NLS Non-NLS 문자 리터럴 (태그 부족 // $ non-nls-)
  • NoeffectAssign 효과가없는 과제
  • 없는 잠재적 인 누락 또는 중복 null 점검
  • nulldereference 누락 된 널 확인
  • 과도한 @override 주석이 없습니다
  • Paramassign 매개 변수에 할당
  • pkgdefaultmethod 패키지-방어 메소드를 무시하려고 시도하십시오
  • 날것의 원시 유형의 사용 (매개 변수화 된 유형 대신)
  • 세미콜론 불필요한 세미콜론 또는 빈 진술
  • 연속물 SerialversionUid가 누락되었습니다
  • SpecialParamhiding 다른 필드를 숨기는 생성자 또는 세터 매개 변수
  • 정적 접근 간접주의 및 정적 회복기를위한 매크로
  • 정적 회복기 비 정적 수신기가 정적 필드를 얻거나 정적 메소드를 호출하는 데 사용되는 경우
  • 감독자 슈퍼 호출하지 않고 방법을 무시합니다
  • 막다 @suppresswarnings를 활성화하십시오
  • 합성 액세스, 합성 액세스 내부에 합성 액세스를 수행 할 때
  • 작업 소스 코드에서 작업 태그를 지원합니다
  • 타입 다른 유형을 숨기는 파라미터 유형
  • 확인되지 않았습니다 확인되지 않은 유형 작동
  • 불필요한 불필요한 다른 조항
  • 자격이없는 필드 액세스, 자격이없는 필드 현장에 대한 자격이없는 참조
  • 사용되지 않았습니다 사용되지 않은 비정상, 미사용 임원, 미사용 벨라, 미사용, 미사용 프라이버시 및 미사용 열매를위한 매크로
  • 사용되지 않은 오염 사용하지 않은 방법 인수
  • 사용되지 않은 임의 사용되지 않은 수입 참조
  • 사용되지 않은 사람 사용되지 않은 레이블
  • 사용되지 않는 사용하지 않은 로컬 변수
  • 사용하지 않는 분리 사용하지 않은 개인 회원 선언
  • 사용하지 않은 사용하지 않은 선언 된 예외
  • 쓸모없는시기 불필요한 캐스트/인스턴스 작업
  • varargscast Varargs 논쟁은 명시적인 캐스트가 필요합니다
  • 경고 @suppresswarnings에서 처리되지 않은 경고 토큰

Sun JDK (1.6)는 짧습니다 목록 지원되는 경고 :

  • 천칭 감가 상각 품목 사용을 확인하십시오.
  • 확인되지 않았습니다 Java 언어 사양에 의해 의무화 된 확인되지 않은 전환 경고에 대한 자세한 내용은 자세히 설명하십시오.
  • 연속물 직렬화 가능한 클래스에서 SerialversionUID 정의 누락에 대해 경고합니다.
  • 마지막으로 정상적으로 완성 할 수없는 최종적 조항에 대해 경고합니다.
  • 실패로 끝나다 스위프 스위프 스위치 블록을 확인하고 발견 된 내용에 대한 경고 메시지를 제공하십시오.
  • 환경 경로에서 존재하지 않는 경로를 확인하십시오 (예 : 클래스 경로).

Mac의 최신 사용 가능한 Javac (1.6.0_13)에는 다음과 같은 지원 경고가 있습니다.

  • 모두
  • 깁스
  • 천칭
  • divzero
  • 비어 있는
  • 확인되지 않았습니다
  • 실패로 끝나다
  • 연속물
  • 마지막으로
  • 재정의

나에게 가장 좋아하는 것은 @SuppressWarnings("WeakerAccess") Intellij에서는 사용하는 것보다 약한 액세스 수정자가 있어야한다고 생각할 때 불평하지 않도록합니다. 테스트를 지원하기위한 몇 가지 방법에 대해서는 공개적으로 액세스해야합니다. @VisibleForTesting 주석은 경고를 방해하지 않습니다.

ETA : "익명"은 @mattcampbell 페이지에서 다음과 같은 유용한 참고 사항에 댓글을 달았습니다.

설명하는 목적 으로이 목록을 사용할 필요가 없습니다. Intellij는 귀하가 요청하면 자동으로 귀하를 위해 해당 억제 기능을 추가합니다. 내가 기억하는만큼 많은 릴리스를 위해이 작업을 수행 할 수있었습니다.

경고가있는 위치로 이동하여 Alt-Enter를 입력하거나 검사 목록에서 선택한 경우 선택하십시오. 메뉴가 등장하고 경고를 표시하고이를 수정하겠다는 제안 (예 : 경고가 정적 인 경우 "라면"정적 "은"Enter "를 선택하는 대신 Intellj의 제안입니다), 오른쪽 화살표 버튼을 사용하여 하위 메뉴에 액세스하면 "검사 프로파일 편집"등과 같은 옵션이 있습니다. 이 목록의 맨 아래에는 "클래스에 대한 모든 검사 억제", "클래스 억제", "메소드를위한 억제"및 때때로 "진술을위한 억제"와 같은 옵션이 있습니다. 당신은 아마도이 중 하나가 목록에 마지막으로 나타나는 것을 원할 것입니다. 이 중 하나를 선택하면 해당 경고를 억제하는 코드에 @SuppressWarnings 주석 (또는 경우에 따라 의견)이 추가됩니다. Intellij는 선택한 경고에 따라 선택할 것이기 때문에 어떤 주석을 추가할지 추측 할 필요가 없습니다.

그리고 이것은 훨씬 더 완전한 목록 인 것 같습니다. 다른 곳에서 찾을 수없는 Android-Studio와 관련된 경고를 발견했습니다 (예 : Synchronizeonnonfinalfield).

https://jazzy.id.au/2008/10/30/list_of_suppresswarnings_arguments.html

아, 이제 So의 지침이 모순됩니다. 한편으로는 링크 만 제공하기보다는 목록을 복사해야합니다. 그러나 반면에 이것은 허용 된 최대 문자 수를 초과합니다. 링크가 깨지지 않기를 바랍니다.

JSL 1.7

오라클 문서 언급 :

  • unchecked: 확인되지 않은 경고는 "확인되지 않은"문자열로 식별됩니다.
  • deprecation: Java 컴파일러는 주석이 주석이 달린 유형, 메소드, 필드 또는 생성자가 @DepRecated가 사용될 때 (즉, 이름으로 이름별로 참조)를 사용하는 경우 감가 상각 경고를 생성해야합니다. [...] 사용은 주석이 주석이 달린 엔티티 내에 있습니다. 또는

그런 다음 구현이 자체적으로 추가 및 문서화 될 수 있다고 설명합니다.

컴파일러 공급 업체는이 주석 유형과 함께 지원하는 경고 이름을 문서화해야합니다. 공급 업체는 동일한 이름이 여러 컴파일러에서 작동하는지 확인하기 위해 협력하는 것이 좋습니다.

나는 단지 다음에 intellij suppress 매개 변수의 마스터 목록이 있다고 덧붙이고 싶습니다. https://gist.github.com/vegaasen/157fbc6dce8545b7f12c

상당히 포괄적으로 보입니다. 부분 :

Warning Description - Warning Name

"Magic character" MagicCharacter 
"Magic number" MagicNumber 
'Comparator.compare()' method does not use parameter ComparatorMethodParameterNotUsed 
'Connection.prepare*()' call with non-constant string JDBCPrepareStatementWithNonConstantString 
'Iterator.hasNext()' which calls 'next()' IteratorHasNextCallsIteratorNext 
'Iterator.next()' which can't throw 'NoSuchElementException' IteratorNextCanNotThrowNoSuchElementException 
'Statement.execute()' call with non-constant string JDBCExecuteWithNonConstantString 
'String.equals("")' StringEqualsEmptyString 
'StringBuffer' may be 'StringBuilder' (JDK 5.0 only) StringBufferMayBeStringBuilder 
'StringBuffer.toString()' in concatenation StringBufferToStringInConcatenation 
'assert' statement AssertStatement 
'assertEquals()' between objects of inconvertible types AssertEqualsBetweenInconvertibleTypes 
'await()' not in loop AwaitNotInLoop 
'await()' without corresponding 'signal()' AwaitWithoutCorrespondingSignal 
'break' statement BreakStatement 
'break' statement with label BreakStatementWithLabel 
'catch' generic class CatchGenericClass 
'clone()' does not call 'super.clone()' CloneDoesntCallSuperClone

난 그것을 알아 챘다 //noinspection 자동 생성 할 수 있습니다 지적

  • 아직 계획이 없는지 확인하십시오 @SuppressWarninigs 성명 전에
  • 이제 구체적인 것을 자동 생성 할 수 있습니다 //noinspection 타격으로 Alt+Enter 경고를 선택한 다음 사용하는 경우 오른쪽 화살표 키 보기 위해 억압 ... 옵션

"스위치가 너무 적은 케이스 레이블이있는"경고를 억제하고 싶을 때 여기에 끝났습니다. 나는 Intellij 's에 대한 완전한 목록을 찾지 못했습니다. @SuppressWarning 지원하지만 //noinspection 나를 위해 속임수를 썼다.

Sonarlint를 사용하는 경우 메소드 위 또는 클래스 전체 오징어 문자열 : @SuppressWarnings ( "Squid : S1172")를 시도하십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top