Estamos considerando la creación de un analizador estático para recopilar métricas de software para el código de Clojure. Por supuesto, manejará las cosas obvias como el número de archivos, funciones, parámetros por función, etc. Me pregunto si hay alguna métrica que sea específica para el código de Clojure. ¿Algunas ideas?Métricas de software específicas para los programas de Clojure
15
A
Respuesta
13
En promedio, creo que las métricas de software son una idea dudosa, generalmente te distraen de la pregunta realmente importante que es "¿cuánto valor le estamos entregando al cliente?".
Habiendo dicho eso, reconozco que pueden ser un mal necesario en algunos contextos y ocasionalmente pueden proporcionarle algunas ideas útiles sobre su código base.
Así que aquí hay algunos que pueden ser específicos de Clojure.
- Número de define de nivel superior (tal vez expresada como una relación a símbolo recuento total?)
- acoplamiento Java: (. Nuevo, NombredeClase, .someMethod etc.)% de símbolos relacionados con interoperabilidad Java - idealmente mantener el acoplamiento confinado a módulos específicos responsables de la interoperabilidad de Java, es decir, debe ser muy bajo en todas partes, excepto en las bibliotecas que administran la interoperabilidad.
- Nivel medio de anidación máximo de defns de función (supongo buena 5ish, 10+ mal ??)
- Macro densidad:% de formas que requieren expansión macro
- % de funciones con docstrings
- % de símbolos o parámetros de la función definida con el tipo insinúa
- tamaño medio de funciones anónimas (que probablemente debería ser pequeño!)
- % de funciones en clojure.core utilizados (da una idea de la "gama vocabulario" y la sofisticación del código)
- (Gracias s nickik!) número de ref-types creados (vars dinámicos, átomo, ref y agente) - ¡esencial si quieres mantener un control cuidadoso de tu estado mutable!
p.s. ¡Si funciona así, sería muy interesante ver la variación en los resultados en algunos de los proyectos de clojure de código abierto!
Cuestiones relacionadas
- 1. Métricas de la calidad del software
- 2. Métricas de software en Metodologías ágiles
- 3. forma típica de ejecutar los programas de Clojure
- 4. ¿Cómo funcionan realmente los programas/compiladores/intérpretes de clojure?
- 5. ¿Qué hace un arquitecto de software y qué programas utilizan?
- 6. ¿Funcionará valgrind para los programas de Daemon?
- 7. Crítica de software: software de código abierto
- 8. ¿Cuál es la forma más sencilla para que los programas Clojure y Python compartan información?
- 9. Métricas de rendimiento en rutinas específicas: ¿cuales son las mejores prácticas?
- 10. ¿Cómo los pequeños parches de software corrigen el gran software?
- 11. Métricas de código
- 12. Métricas y advertencias de código para C++
- 13. ¿Hay algún recopilador de métricas automatizado para mi proyecto Java?
- 14. Calcular métricas de código
- 15. prueba de los programas de python interactivos
- 16. ¿Por qué los programas de estilo rápido son más cortos que los programas de estilo defensivo?
- 17. ¿Dónde está Ubuntu almacenando los programas instalados?
- 18. Programas de ejemplo de Wiimote
- 19. Jugar! Métricas de rendimiento 2.0
- 20. Software de grabación de pantalla para capturar defectos de software
- 21. Entender las métricas de código
- 22. Teoría de gráficos útil para los desarrolladores de software?
- 23. ¿Cómo acelerar los programas WPF?
- 24. SVG y métricas de fuentes
- 25. PyQT ¿Quitar los programas Barra de título?
- 26. ¿Cómo interactúo con los programas de Windows
- 27. ¿Cómo funcionan los programas de reconocimiento facial?
- 28. Complemento de métricas de código de Visual Studio para C++
- 29. Métricas para medir la refactorización exitosa
- 30. Eclipse Plugin métricas
Entiendo el sentimiento anti-métrica. Creo que las métricas solo son útiles para ampliar áreas problemáticas. Buena respuesta por cierto. –
Countig ref-types es realmente importante. Contando ref/atom/agent y vars dinámicos (en 1.3). – nickik
@nickik - totalmente de acuerdo los tipos de ref son muy importantes. ¿Aunque es complicado averiguar qué medida usarías en un analizador estático? El problema que preveo es que estos a menudo se asignan dinámicamente, por lo que no es necesariamente útil contar los símbolos ref/atom/agent, por ejemplo ... de todos modos se han agregado a la lista – mikera