특정 코드에 대해 소나 끄기


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) 용입니다. pmdcheckstyle다른 규칙 저장소에 있습니다.
Daniel C. Sobral
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.