¿Hay alguna herramienta disponible que calcule 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 produzca un gráfico que muestre las tendencias?
¿Hay alguna herramienta disponible que calcule 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 produzca un gráfico que muestre las tendencias?
Respuestas:
En mi último proyecto utilicé SourceMonitor . 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 una sola pasada rápida a través de archivos de origen.
- Mide 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 nivel de método y función para C ++, C, C #, VB.NET, Java y Delphi.
- Guarda métricas en puntos de control para compararlas durante proyectos de desarrollo de software.
- Muestra e imprime métricas en tablas y gráficos.
- Opera 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 (valores separados por comas) para su posterior procesamiento con otras herramientas.
Para .NET además de NDepend, que es simplemente la mejor herramienta, puedo recomendar vil .
Las siguientes herramientas pueden realizar análisis de tendencias:
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
NDepend para .net
También estaba buscando una herramienta / complemento de métricas de código para mi IDE, pero hasta donde sé, no hay ninguno (para el 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:
Y mientras lo usaba, no me perdí la opción de gráficos que está buscando.
Creo que, si no encuentra ningún complemento / herramienta que pueda manejar los gráficos a lo largo del tiempo, debería buscar la herramienta que más le convenga y le ofrezca toda la información que necesita; 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 le permite exportar los datos a un archivo externo (el enlace va a un ejemplo), por lo que si usa una herramienta de control de fuente, ¡y debería hacerlo !, siempre puede exportar los datos para el compile y almacene el archivo junto con el código fuente, de esa manera todavía tiene una forma (básica) de retroceder en el tiempo y verificar las diferencias.
tenga en cuenta, lo que mide es lo que obtiene. loc no dice nada sobre productividad o eficiencia.
califique a un programador por líneas de código y obtendrá .. líneas de código. el mismo argumento se aplica a otras métricas.
otoh .. http://www.crap4j.org/ es una métrica muy conservadora y útil. establece complejidad en relación con la cobertura.
Depende, lo estoy usando y es lo mejor para este propósito. Verifique esto: http://www.codeproject.com/KB/dotnet/NDepend.aspx
Con respecto a la herramienta NDepend , 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, Porcentaje de cobertura (extraído de NCover o VSTS), Profundidad de herencia ... .
Con su sistema de reglas, NDepend también puede encontrar problemas y estimar la deuda técnica, que es una métrica de código interesante (cantidad de esfuerzo de desarrollo para solucionar problemas versus cantidad de tiempo de desarrollo desperdiciado por año para dejar que los problemas se solucionen).
Todas estas métricas se detallan aquí .
Si está en el espacio .NET, Developer Express ' CodeRush proporciona LOC, Cyclomatic Complexity y el (bastante excelente, en mi humilde opinión) análisis de complejidad de mantenimiento de código en tiempo real.
(Lo siento por el enlace de complejidad de mantenimiento; va a la caché de Google. El original parece ser un cajero automático sin conexión).
Atlassian FishEye es otra excelente herramienta para el trabajo. Se integra con su sistema de control de fuentes (actualmente es compatible con 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 a un precio muy razonable, en mi opinión).
También puede obtener un complemento llamado Crucible que facilita las revisiones de código entre pares.
Para Visual Studio .NET (al menos C # y VB.NET), considero que las herramientas gratuitas de StudioTools son extremadamente útiles para las métricas. También agrega una serie de características que se encuentran en herramientas comerciales como ReSharper .
Code Analyzer es una herramienta sencilla que genera este tipo de métricas.
(fuente: teel.ws )
Para Python, 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.
Recomendaría Code Metrics Viewer Exention para Visual Studio.
Es muy fácil analizar la solución a la vez, también haz una comparación si progresaste ;-)
Lea más aquí sobre las características
En el frente de PHP, creo que, por ejemplo, phpUnderControl incluye métricas a través de phpUnit (si no me equivoco).
Tenga en cuenta que las métricas a menudo tienen errores. Por ejemplo, un codificador que está trabajando en problemas triviales producirá más código y se verá mejor en sus gráficos que un codificador que resuelve los problemas complejos.
Si busca un análisis de tendencias, ¿realmente significa algo para medir más allá del SLOC?
Incluso si solo está haciendo un grep para arrastrar punto y coma y contar 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 una manera significativa.
Realmente no puedo ver qué daría una tendencia de Complejidad Ciclométrica de McCabe. Creo que CC debería usarse más para una instantánea de calidad para proporcionar comentarios a los desarrolladores.
Editar: Ooh. Pensé en un par de otras medidas que podrían ser útiles. Comentarios como porcentaje de SLOC y cobertura de prueba. Ninguno de los cuales quiere dejar escapar. ¡Volver para adaptar cualquiera de estos nunca es tan bueno como hacerlo "en el calor del momento!"
HTH.
salud,
Robar
Scitools 'Understand tiene la capacidad de generar una gran cantidad de 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 agradables y el precio fue muy razonable. El apoyo fue excelente.
Project Code Meter proporciona un informe de historial de desarrollo diferencial (en formato Excel) que muestra sus 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, puede producir fácilmente el gráfico que desee.
vea este artículo que lo describe paso a paso: http://www.projectcodemeter.com/cost_estimation/help/FN_monsizing.htm
Para Java, puede probar nuestra herramienta, QualityGate , que calcula más de 60 métricas de código fuente, rastrea todos los cambios a lo largo del tiempo y también proporciona una calificación general para la capacidad de mantenimiento del código fuente.