Pregunta

He estado investigando el estilo de control recientemente como parte de una investigación sobre convenciones de codificación estándar. Aunque parece que es perfectamente adecuado para proyectos nuevos, parece tener una gran barrera para la adopción de proyectos ya existentes, ya que no parece proporcionar un método para verificar solo el código nuevo o editado. ¿Quizás estoy equivocado?

Si tiene una base de código que nunca ha tenido un estándar de codificación, podría ser un gran esfuerzo lograr que toda la base de código esté en línea con un estándar de una vez. Permitir que se haga de forma incremental a lo largo del tiempo a medida que el código evoluciona naturalmente parece un enfoque más razonable. Pero no parece una posibilidad con checkstyle.

Supongo que esto tendría que estar relacionado con un sistema de control de fuente para ser posible. ¿Es eso posible con Checkstyle o hay otra herramienta que pueda proporcionar esta funcionalidad?

¿Fue útil?

Solución

Hasta donde yo sé, Checkstyle está destinado a analizar la fuente, sin considerar su historial o revisiones.

Agregar ese tipo de característica significa análisis de estilo de comprobación de script para alimentarlo con el subconjunto exacto de archivos que representan el delta.

Pero entonces, es probable que ciertos tipos de comprobaciones fallen o se pierdan en su análisis, como duplicate verificación de código .

Entonces, para ese tipo de análisis incremental, no solo necesita restringir el conjunto de fuentes, sino también el conjunto de reglas que desea aplicar, ya que algunas de esas reglas solo tienen sentido en todas las fuentes.


  

Entonces, ¿por qué no podría ejecutar una verificación completa de cada archivo y luego filtrar los resultados en función de los cambios administrados por su sistema de control de origen? ¿Algo así existe?

No que yo sepa, especialmente con plugins como eclipse-cs para eclipse: lo analizan un archivo, mostrarán todas las advertencias, aunque el control de origen menciona que el archivo no ha cambiado desde una revisión dada.

Solo un script externo podría hacer esto:
El principio es simple (aunque podría ser un poco lento en el tiempo de ejecución):

  • para cada archivo, haga una diferencia para verificar si se han realizado modificaciones
  • si sí,
    • haga un svn blame para anotar líneas con el número de revisión que contenía el último cambio.
    • Luego analice el archivo con checkstyle.
  • El script puede filtrar la advertencia para la línea que se está modificando actualmente (o para todas las líneas modificadas después de una revisión dada).

Otros consejos

Desarrollamos un Complemento Checkstyle para SCM-Manager , una herramienta para administrar repositorios git, subversión y mercuriales. Si está activado, es posible verificar el código fuente comprometido con sus reglas de Checkstyle. Si la verificación encontró errores, la confirmación se cancela.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top