¿SonarQube un reemplazo para Checkstyle, PMD, FindBugs?


105

Estamos trabajando en un proyecto web desde cero y estamos buscando las siguientes herramientas de análisis de código estático.

  • Convenciones (estilo de verificación)
  • Malas prácticas (PMD)
  • Errores potenciales (FindBugs)

El proyecto se basa en Maven. En lugar de usar varias herramientas para este propósito, estaba buscando una única solución flexible y encontré SonarQube.

¿Es cierto que podemos lograr los resultados de Checkstyle, PMD y Findbugs con SonarQube?

Respuestas:


99

Sonar ejecutará CheckStyle, FindBugs y PMD, así como algunos otros "complementos" como Cobertura (cobertura de código) por defecto para proyectos Java. El principal valor agregado, sin embargo, es que almacena el historial en una base de datos. A continuación, puede ver la tendencia . ¿Está mejorando la base del código o está haciendo lo contrario? Solo una herramienta con memoria puede decirte eso.

Debe ejecutar Sonar en su sistema CI para que se puedan ejecutar incluso las cosas que tardan algún tiempo en ejecutarse (como CPD - detector de copiar y pegar). Y tendrás tu historia. Mientras que con un complemento de Eclipse, por ejemplo, detectará las infracciones antes, lo cual es genial , pero tendrá la tentación de ejecutarlo con menos frecuencia si comienza a demorar demasiado o ejecuta menos "complementos de calidad" (como omitir CPD o omitiendo el análisis de cobertura de código). Y no tendrás historia.

Además, Sonar genera informes visuales , estilo "Panel de control". Lo que lo hace muy fácil de entender. Con Sonar en Jenkins, podrá mostrar a los desarrolladores y a su administración los efectos del trabajo que se realizó en la calidad del código base durante las últimas semanas y meses.


Estoy de acuerdo con estos beneficios en el contexto de los proyectos industriales. Los proyectos greenfield con políticas de cero defectos no necesitan esa memoria. Simplemente mantenga su base de código limpia al 100% todo el tiempo.
Christian Hujer

48

Sonar utiliza estas 3 herramientas como complementos y agrega los datos de las tres dando valor adicional al mostrar gráficos y demás de estas herramientas. Por eso son complementarios al sonar.


1
sí, el sonar usa los tres
frappuccino

27
Si bien esto era cierto hasta la versión 3.x, Sonar 4.x está dejando de usar al menos PMD y CheckStyle en favor de su propio analizador Squid interno, porque les da más libertad para ampliar el conjunto de reglas y solucionar problemas que se han plagando estos proyectos por un tiempo. Por ejemplo, ya han desaprobado más de 150 reglas de PMD y eventualmente las eliminarán por completo.
Haylem

1
Publicación interesante sobre la razón por la que desaprobaron esas reglas: sonarqube.org/… .
Jhack

33

Si y no. Además de las otras respuestas.

SonarQube está actualmente en camino de desaprobar PMD, Checkstyle y Findbugs y usar su propia tecnología para analizar el código Java (llamado SonarJava ). Lo hacen porque no quieren perder su tiempo arreglando, actualizando (o esperando) esas bibliotecas (por ejemplo, para Java 8), que por ejemplo usa bibliotecas desactualizadas.

También obtuvieron un nuevo conjunto de complementos para su IDE personal llamado SonarLint .


8

Sonar es excelente, pero si desea usar las herramientas mencionadas por separado y aún así tener buenos gráficos, puede usar el Complemento de recopilador de análisis como parte de su compilación de Jenkins CI. Una pequeña ventaja de esto es que puede verificar su configuración de PMD / Findbugs / Checkstyle en su SCM e integrarla en su compilación de Maven, en lugar de depender de un servidor Sonar separado.


5

Sonar es mucho más que estas herramientas por sí solas. Los mayores beneficios es la interfaz gráfica de usuario, que le permite configurar cualquier cosa fácilmente. Las estadísticas que ofrece son muy detalladas (líneas de código, etc.). E incluso ofrece un gran soporte para la cobertura de prueba, etc. :)

Aquí puede echar un buen vistazo: http://nemo.sonarsource.org/


3

Todavía usaría estas herramientas además del sonar porque pueden fallar la compilación del experto cuando alguien viola una regla. Donde como sonar es más retrospectivo.


3

... unos años después: ¡no, no lo es! SonarQube supone poder cubrir todas las reglas con su propio analizador, pero aún existen reglas de PMD o CheckStyle no cubiertas por SonarQube. Consulte, por ejemplo: PMD ReturnFromFinallyBlock.


Parece que también falta la infracción de PMD: ¿usar un alcance explícito en lugar del nivel privado del paquete predeterminado?
user7294900

No Las reglas se nombran de manera diferente, pero están presentes: las sentencias de salto no deben ocurrir en bloques "finalmente" y se debe especificar la visibilidad de la variable miembro .
Petr Bodnár

2

Bueno, al menos desde SonarQube 6.3+ parece ser que Findbugs (por el momento) ya no es compatible como complemento. Sonarsource está trabajando en reemplazos de las reglas de Findbugs con su propio complemento Java.

Incluso tienen una lista del estado de reemplazo de cada regla aquí: http://dist.sonarsource.com/reports/coverage/findbugs.html

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.