특정 코드에 대해 소나 끄기


164

측정하고 싶지 않은 특정 코드 블록에 대해 소나 ( www.sonarsource.org ) 측정을 해제 할 수 있습니까?

예를 들어 Findbugs가 출력하는 "스택 추적 유지"경고가 있습니다. 서버를 떠날 때 클라이언트에게 예외를 알 수없는 경우 (클라이언트에 해당 JAR이 없기 때문에 방금 잡은 실제 예외는 포함하지 않고 메시지를 클라이언트로 다시 전달하고 싶을 수도 있습니다. 예를 들어 예외가 포함되었습니다.

답변:


71

이것은 FAQ 입니다. //NOSONAR경고를 발생시키는 라인에 놓을 수 있습니다 . 그래도 @SuppressFBWarnings 주석을 추가하는 FindBugs 메커니즘을 선호합니다.

@edu.umd.cs.findbugs.annotations.SuppressFBWarnings(
    value = "NAME_OF_THE_FINDBUGS_RULE_TO_IGNORE",
    justification = "Why you choose to ignore it")

2
동의했다. 그러나 Sonar가 @SuppressFBWarnings(와의 충돌을 피하기 위해 추가) 올바르게 해석 java.lang.SuppressWarnings하고 무시 하는지 확실하지 않습니다 .
— Marcel Stör

AFAIK, Sonar는 FindBugs를 사용합니다. 따라서 FindBugs가 이러한 주석을 처리하면 Sonar를 통해 FindBugs를 실행할 때 왜 주석이 작동하지 않는지 알 수 없습니다. 어쨌든 테스트하기 어려워서는 안됩니다.
— JB 니 제트

4
FAQ 링크가 오래되었습니다. 다음은 새로운 FAQ입니다.
— wiredniko

11
SonarQube FAQ에 대한 다른 링크를 제공해 주시겠습니까? FAQ 대신 로그인 양식이 표시됩니다
— Win4ster

233

SuppressWarnings로 클래스 나 메소드에 주석을 달 수 있습니다

@java.lang.SuppressWarnings("squid:S00112")

이 경우 squid : S00112 는 Sonar 문제 ID입니다. Sonar UI에서이 ID를 찾을 수 있습니다. 이슈 드릴 다운으로 이동합니다. 경고를 표시하지 않으려는 문제를 찾으십시오. 코드의 빨간색 문제 상자에는 주어진 문제의 정의가 포함 된 규칙 링크가 있습니다. 클릭하면 페이지 상단에 ID가 표시됩니다.


8
이것이 특정 FindBugs 규칙 ID 와도 작동 함을 확인할 수 있습니다 (예 :) @SuppressWarnings("findbugs:UI_INHERITANCE_UNSAFE_GETRESOURCE").
— bcody

19
문제는 Eclipse가 경고를 표시한다는 것 Unsupported @SuppressWarnings("squid:S00112")입니다. 이를 무시하도록 Eclipse를 구성 할 수 있지만 in과 같은 오타 @SuppressWarnings("uncheckedd")가 감지되지 않습니다.
— Ortomala Lokni

1
@SuppressWarnings 및 Sonar에 대한 문서는 docs.codescan.io/hc/en-us/articles/… 를 참조하십시오 .
— Rich Dougherty

89

를 사용하여 특정 경고를 표시하지 않는 것이 좋습니다 @SuppressWarnings("squid:S2078").

여러 경고를 억제하려면 다음과 같이하십시오. @SuppressWarnings({"squid:S2078", "squid:S2076"})

//NOSONARSonarQube에게 특정 행에 대한 모든 오류를 무시하도록 지시 하는 주석 도 있습니다 .

마지막으로 사용자 인터페이스에 대한 올바른 권한이 있으면 인터페이스에서 직접 오 탐지로 플래그를 발행 할 수 있습니다.

특정 경고를 억제하는 것이 좋습니다 이유는 //NOSONAR실수로 코드에서 소나가 발생하는 대신 Sonar 문제 를 사용하는 대신 특정 문제를 차단하는 것이 좋습니다 .

FAQ 에서 자세한 내용을 읽을 수 있습니다

참고 : Gábor Bakos는 현재 404 인 이전 FAQ를 가리키고 있습니다. 이것은 첫 번째 Google 검색 결과이므로 동일한 질문이있는 다른 사람을 돕고 싶습니다.

편집 : 6/30/16 SonarQube는 이제 SonarLint라고합니다.

오징어 번호를 찾는 방법이 궁금한 경우. Sonar 메시지 (예 :)를 클릭 Remove this method to simply inherit it.하면 Sonar 문제가 확장됩니다.

왼쪽 하단에는 오징어 번호가 있습니다 (예 : squid:S1185유지 관리 성> 이해성).

그럼 당신은 그것을 억제 할 수 있습니다 @SuppressWarnings("squid:S1185")


2
다수의 소나 큐브 경고를 무시하는 힌트에 감사드립니다
— AlexWien

1
인터페이스에서 오 탐지로 표시하는 다른 문제는 어떤 이유로 든 프로젝트를 삭제하고 다시 추가하면 설정 한 모든 플래그가 사라진다는 것입니다.
— annedroiid

@annedroiid-pom.xml 파일에서 동일한 작업을 수행 할 수있는 방법이 있습니까? 나는 여기에 질문을 제기했다 : stackoverflow.com/questions/57789832/…
— Pra_A

8

코드에 도움이되지 않는 경우 경고가 표시되는 줄에 // NOSONAR을 사용하십시오. 효과가있다!


4

소나 5.6에서 오징어 번호를 찾을 수 없으며이 주석도 작동합니다.

@SuppressWarnings({"pmd:AvoidCatchingGenericException", "checkstyle:com.puppycrawl.tools.checkstyle.checks.coding.IllegalCatchCheck"})

1
squidSonar 소스 Java 데이터베이스 (SonarAnalyzer Java) 용입니다. pmd및 checkstyle다른 규칙 저장소에 있습니다.
— Daniel C. Sobral
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.