Pregunta

¿Existen herramientas disponibles que calculen métricas de código (por ejemplo, número de líneas de código, complejidad ciclomática, acoplamiento, cohesión) para su proyecto y, con el tiempo, produzcan un gráfico que muestre las tendencias?

¿Fue útil?

Solución

En mi último proyecto utilicé Monitor de fuente.Es una buena herramienta gratuita para el análisis de métricas de código.
Aquí hay un extracto del sitio oficial de SourceMonitor:

  • Recopila métricas en un solo paso rápido a través de archivos fuente.
  • Mide las métricas para el código fuente escrito en C ++, C, C#, VB.NET, Java, Delphi, Visual Basic (VB6) o HTML.
  • Incluye métricas de método y nivel de función para C ++, C, C#, VB.NET, Java y Delphi.
  • Guarda métricas en los puntos de control para comparación durante los proyectos de desarrollo de software.
  • Muestra e imprime métricas en tablas y gráficos.
  • Funciona dentro de una GUI estándar de Windows o dentro de sus scripts usando archivos de comando XML.
  • Exporta métricas a archivos XML o CSV (valor-separado por comas) para su posterior procesamiento con otras herramientas.

Para .NET al lado NDepende cuál es simplemente la mejor herramienta que puedo recomendar vil.

Las siguientes herramientas pueden realizar análisis de tendencias:

Otros consejos

Sonar Es definitivamente una herramienta que debes considerar, especialmente para proyectos Java.Sin embargo, también manejará código PHP o C/C++, Flex y Cobol.

Aquí hay una captura de pantalla que muestra algunas métricas de un proyecto:

texto alternativo http://sonar.codehaus.org/wp-content/uploads/2009/05/squid-metrics.png

Tenga en cuenta que puede probar la herramienta utilizando su sitio de demostración en http://nemo.sonarsource.org

NDepende para .net

También estaba buscando una herramienta/complemento de métricas de código para mi IDE, pero hasta donde yo sé, no hay ninguno (para eclipse) que también muestre un gráfico de la complejidad durante un período de tiempo específico.Sin embargo, encontré el complemento de métricas de eclipse, puede manejar:

  • La complejidad ciclomática de McCabe
  • Acoplamientos eferentes
  • Falta de cohesión en los métodos
  • Líneas de código en el método
  • Numero de campos
  • Número de niveles
  • Número de locales dentro del alcance
  • Número de parámetros
  • Número de declaraciones
  • Métodos ponderados por clase

Y mientras lo usaba, no me perdí la opción de gráficos que buscas también.
Creo que, si no encuentras ningún complemento/herramienta que pueda manejar los gráficos con el tiempo, deberías buscar la herramienta que más te convenga y que te ofrezca toda la información que necesitas;incluso si la información proporcionada es solo para la versión actual de su proyecto.

Como nota al margen, el complemento de métricas de eclipse Te permite exportar los datos a un archivo externo (el enlace va a un ejemplo), por lo que si usa una herramienta de control de código fuente, ¡y debería hacerlo!, siempre puede exportar los datos para la compilación específica y almacenar el archivo junto con el código fuente, de esa manera aún tendrá un (básico ) forma de retroceder en el tiempo y comprobar las diferencias.

Tenga en cuenta que lo que mide es lo que obtiene.loc no dice nada sobre productividad o eficiencia.

califica a un programador por líneas de código y obtendrás...líneas de código.El mismo argumento se aplica a otras métricas.

oto.. http://www.crap4j.org/ Es una métrica muy conservadora y útil.establece la complejidad en relación con la cobertura.

NDepend, lo estoy usando y es mejor para este propósito.Mira esto :http://www.codeproject.com/KB/dotnet/NDepend.aspx

En cuanto a la herramienta NDepende Viene con 82 métricas de código diferentes, desde número de líneas de código hasta rango de método (popularidad), complejidad ciclomática, falta de cohesión de métodos, cobertura porcentual (extraída de NCover o VSTS), profundidad de herencia...

Con su sistema de reglas, NDepend también puede encontrar problemas y estimaciones. deuda técnica que es una métrica de código interesante (cantidad de esfuerzo de desarrollo para solucionar problemas vs. cantidad de tiempo de desarrollo que se pierde cada año para dejar que los problemas no se solucionen).

Todas estas métricas están detalladas. aquí.

Si está en el espacio .NET, Developer Express' CódigoRush proporciona LOC, Complejidad ciclomática y (bastante excelente, en mi humilde opinión) Complejidad del mantenimiento Análisis de código en tiempo real.

(Perdón por el enlace Complejidad de mantenimiento;va al caché de Google.El original parece ser un cajero automático fuera de línea).

Atlassian FishEye es otra excelente herramienta para el trabajo.Se integra con su sistema de control de fuente (actualmente admite CVS, SVN y Perforce) y analiza todos sus archivos de esa manera.Sin embargo, el análisis es bastante básico y el producto en sí es comercial (pero tiene un precio muy razonable, en mi opinión).

También puede obtener un complemento llamado Crucible que facilita las revisiones de código por pares.

Para Visual Studio .NET (al menos C# y VB.NET) encuentro el programa gratuito Herramientas de estudio ser extremadamente útil para las métricas.También agrega una serie de características que se encuentran en herramientas comerciales como ReSharper.

Analizador de código Es una herramienta sencilla que genera este tipo de métricas.

alt text
(fuente: teel.ws)

Para pitón, pylint puede proporcionar algunas métricas de calidad del código.

También hay un complemento de métricas de código para reflector, en caso de que esté utilizando .NET.

yo recomendaria Extensión del visor de métricas de código para estudio visual.

Es muy fácil analizar la solución de una vez, también haz una comparación si progresaste ;-)

Leer más aquí acerca de características

En el frente de PHP, creo, por ejemplo phpBajoControl incluye métricas a través de Unidad php (Si no me equivoco).

Tenga en cuenta que las métricas suelen ser erróneas.Por ejemplo, un codificador que trabaja en problemas triviales producirá más código y se verá mejor en sus gráficos, que un codificador que resuelve problemas complejos.

Si busca un análisis de tendencias, ¿realmente significa algo medir más allá de SLOC?

Incluso si solo hace un grep para el punto y coma final y cuenta el número de líneas devueltas, lo que busca es coherencia en la técnica de medición SLOC.De esta manera, la medición de hoy se puede comparar con la medición del mes pasado de manera significativa.

Realmente no puedo ver qué daría una tendencia de McCabe Cyclometric Complexity.Creo que CC debería usarse más para obtener una instantánea de la calidad y brindar comentarios a los desarrolladores.

Editar:Oh.Sólo pensé en un par de medidas más que podrían ser útiles.Comentarios como porcentaje de SLOC y cobertura de prueba.Ninguno de los cuales quieres dejar escapar.Volver a modernizar cualquiera de estos nunca es tan bueno como hacerlo "en el calor del momento".

HTH.

salud,

Robar

La comprensión de Scitools tiene la capacidad de generar muchas métricas de código para usted.No tengo mucha experiencia con las funciones de métricas de código, pero las funciones de análisis estático en general fueron buenas y el precio muy razonable.El apoyo fue excelente.

Medidor de código de proyecto brinda un informe de historial de desarrollo diferencial (en formato Excel) que muestra las métricas de progreso de codificación en SLOC, tiempo y porcentaje de productividad (su estimación de tiempo se basa en la complejidad ciclomática y otras métricas).Luego, en Excel podrás producir fácilmente el gráfico que desees.

Consulte este artículo que lo describe paso a paso:http://www.projectcodemeter.com/cost_estimation/help/FN_monsizing.htm

Para Java puedes probar nuestra herramienta, Puerta de calidad que calcula más de 60 métricas del código fuente, rastrea todos los cambios a lo largo del tiempo y también proporciona una calificación general de la mantenibilidad del código fuente.

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