2012-06-10 53 views
85

¿Es posible desactivar las mediciones de sonar (www.sonarsource.org) para bloques específicos de código, que no se quiere medir?Apagar Sonar para cierto código

Un ejemplo es la advertencia "Conservar el seguimiento de pila" que arroja Findbugs. Al abandonar el servidor, es posible que desee solo devolver el mensaje al cliente, sin incluir la excepción real que acabo de capturar, si esa excepción es desconocida para el cliente (porque el cliente no tiene el JAR en el que ese excepción fue contenido por ejemplo).

Respuesta

48

Esto es FAQ. Puede poner //NOSONAR en la línea que activa la advertencia. Yo prefiero usar el mecanismo FindBugs sin embargo, que consiste en añadir el @SuppressFBWarnings anotación:

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

De acuerdo.Sin embargo, no estoy seguro de si Sonar interpreta correctamente '@ SuppressFBWarnings' (añadido para evitar conflictos con' java.lang.SuppressWarnings') y también lo ignora. –

+0

AFAIK, Sonar usa FindBugs. Entonces, si FindBugs maneja estas anotaciones, no veo por qué no funcionarían al ejecutar FindBugs a través de Sonar. No debería ser difícil de probar de todos modos. –

+4

El enlace de Preguntas frecuentes no está actualizado. Aquí está la nueva [FAQ] (http://docs.sonarqube.org/display/HOME/Frequently+Asked+Questions#FrequentlyAskedQuestions-Howtoremovefalsepositiveissues?) – wiredniko

116

Puede anotar una clase o un método con SuppressWarnings

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

calamar: S00112 en este caso es una ID de problema de Sonar. Puede encontrar esta identificación en la interfaz de usuario de Sonar. Vaya a Edición de problemas. Encuentre un problema sobre el que quiera suprimir las advertencias. En el cuadro de problema rojo de su código, hay un enlace de Regla con una definición de un problema determinado. Una vez que haga clic en él, verá la identificación en la parte superior de la página.

+6

Puedo confirmar que esto también funciona con una ID de regla de FindBugs específica, p. '@SuppressWarnings (" findbugs: UI_INHERITANCE_UNSAFE_GETRESOURCE ")'. – bcody

+5

El problema es que Eclipse muestra una advertencia 'Unsupported @SuppressWarnings (" squid: S00112 ")'. Puede configurar Eclipse para ignorar esto, pero luego no se detectará un error tipográfico como '@SuppressWarnings (" uncheckedd ")'. –

40

Te recomiendo que trates de suprimir advertencias específicas usando @SuppressWarnings("squid:S2078").

En la supresión de múltiples advertencias, que pueden hacerlo de esta manera @SuppressWarnings({"squid:S2078", "squid:S2076"})

También está el comentario que le dice //NOSONAR sonarqube hacer caso omiso de todos los errores para una línea específica.

Finalmente, si tiene los derechos adecuados para la interfaz de usuario, puede emitir una marca como un falso positivo directamente desde la interfaz.

La razón por la que recomiendo la supresión de advertencias específicas es que es una mejor práctica bloquear un problema específico en lugar de usar //NOSONAR y arriesgarse a que un problema de Sonar se ralentice en su código por accidente.

Puede leer más sobre esto en el FAQ

Nota: Gábor Bakos está apuntando a las preguntas más frecuentes que los más viejos ahora 404s. Este es el primer resultado de Google para que yo quiero ayudar a cualquier cosa que pueda contener la misma pregunta

edición: 30/06/16 sonarqube ahora se llama SonarLint

En caso de que usted se está preguntando cómo encontrar el número de calamar Simplemente haga clic en el mensaje Sonar (por ejemplo, Remove this method to simply inherit it.) y se ampliará el problema de Sonar.

Por la parte inferior izquierda que tendrá el número de calamar (ex. squid:S1185 de mantenimiento> Comprensibilidad)

De manera que se puede suprimir por @SuppressWarnings("squid:S1185")

+2

Gracias por la sugerencia de incluir múltiples advertencias de cubo de sonar – AlexWien

+1

El otro problema con marcarlo como falso positivo en la interfaz es que si por alguna razón el proyecto se elimina y se vuelve a agregar, todas las banderas que ha establecido desaparecerán. – annedroiid

3

No voy a ser capaz de encontrar el número de calamar en el sonar 5.6, con esta anotación también funciona:

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