software - Calcular Complejidad Ciclomática para Javascript
medir complejidad ciclomatica online (8)
¿Hay alguna herramienta disponible para calcular la complejidad de Cyclomatic en Javascript?
He encontrado una medida muy útil en el pasado mientras trabajaba en el código del lado del servidor, y me gustaría poder usarla para el lado del cliente Javascript que escribo.
Dado que la complejidad ciclomática se evalúa contando el número de palabras clave "if, switch, while for break", etc., todas las herramientas que funcionan con C harán el trabajo, como sourcemonitor: http://www.campwoodsw.com/sourcemonitor.html
En realidad, en JavaScript, cuanto más intentes modular tu código, más lo ralentizarás, así que tómalo con un poco de sal;)
EDITAR: Realmente no puedo entender lo que está pasando en esta respuesta, recibo otro voto negativo, cuando en mi respuesta cuento una buena herramienta para calcular la complejidad ciclomática en JavaScript, y esto en particular funciona muy bien.
Para la segunda afirmación, la mía es un comentario que proviene de la experiencia, nunca digo que no modifique tu código js , solo digo que debes prestar atención al hacerlo , porque a menudo hay una compensación con la velocidad, y cuando hablo de velocidad Quiero decir que pueden ocurrir 2 ralentizaciones diferentes: en el tiempo de descarga y en el tiempo de ejecución (y en el dispositivo lento como pda / smartphone esto es importante).
Dado que herramientas como esta a menudo llevan al desarrollador a escribir más código tratando de perseguir el índice más pequeño posible, pero en js más código desafortunadamente significa que pueden ocurrir desaceleraciones, y el uso excesivo de estas herramientas es malo. Seguramente estas herramientas pueden darle pistas de dónde se puede mejorar su código, pero debe dominar cómo usar la herramienta y no confiar ciegamente en ella.
Entonces, si me vuelves a votar, escribe un comentario en el que expliques por qué lo haces, la discusión solo puede beneficiarse de esto, gracias y disculpa por la ventilación.
Puede usar la herramienta ccm de http://www.blunck.info/ccm.html .
Hace java-script, c / c ++ y c #. Es gratis, se ejecuta en Windows (también se puede ejecutar en Linux y Mac OS X, utilizando el framework mono).
Ahora también hay Yardstick: https://github.com/calmh/yardstick
Intenta calcular la complejidad ciclomática para Javascript idiomático, manejando más casos que, por ejemplo, jscheckstyle.
He estado trabajando en una herramienta de análisis de código estático de JavaScript que abarca la complejidad ciclomática de JavaScript. Puede probar una versión en línea de jsmeter aquí: http://jsmeter.info
JSHint recientemente agregó soporte para calcular métricas de código. Puede establecer valores máximos para el número de parámetros formales permitidos ( maxparams ), qué tan profundamente deben ser los bloques de código anidados ( maxdepth ), el número de sentencias permitidas por función ( estados máximos ), así como la complejidad ciclomática máxima ( maxcomplexity ).
Número máximo de parámetros formales permitidos por función
/*jshint maxparams:3 */
function login(request, onSuccess) {
// ...
}
// JSHint: Too many parameters per function (4).
function logout(request, isManual, whereAmI, onSuccess) {
// ...
}
Número máximo de bloques de código anidados permitidos por función
/*jshint maxdepth:2 */
function main(meaning) {
var day = true;
if (meaning === 42) {
while (day) {
shuffle();
if (tired) { // JSHint: Blocks are nested too deeply (3).
sleep();
}
}
}
}
Cantidad máxima de declaraciones permitidas por función
/*jshint maxstatements:4 */
function main() {
var i = 0;
var j = 0;
// Function declarations count as one statement. Their bodies
// don''t get taken into account for the outer function.
function inner() {
var i2 = 1;
var j2 = 1;
return i2 + j2;
}
j = i + j;
return j; // JSHint: Too many statements per function. (5)
}
Para completar las respuestas, estaba buscando la misma herramienta hace algún tiempo y no encontré nada que funcionara bien para la visualización, así que escribí plato
Ejemplos de informes para:
Utiliza el informe de complejidad de phil (mencionado anteriormente) y también agrega datos de jshint (y eventualmente, otros).
La nueva versión de http://jshint.com está fuera y tiene una muy buena calculadora de complejidad ciclomática
Ayudé a escribir una herramienta para realizar análisis de complejidad de software en proyectos de JavaScript:
Reporta un conjunto de diferentes métricas de complejidad: líneas de código, número de parámetros, complejidad ciclomática, densidad ciclomática, medidas de complejidad de Halstead, índice de mantenimiento, densidad de primer orden, costo de cambio y tamaño del núcleo.
Se lanzó bajo la licencia MIT y se compila utilizando Node.js y el analizador Esprima JavaScript. Se puede instalar a través de npm, así:
npm i -g complexity-report