How Crappy Is Your Java Source Code? Crappy ¿Cómo es su código fuente Java?
Crap4J claims to be able to quantify crappiness in Java code with a simple formula (applicable to a method): asegura ser capaz de cuantificar crappiness en código Java con una fórmula simple (aplicable a un método):
CRAP(m) = comp(m)^2 * (1 – cov(m)/100)^3 + comp(m) Crap (m) = comp (m) ^ 2 * (1 - cov (m) / 100) ^ 3 + comp (m)
Where comp(m) is the cyclomatic complexity of method m, and cov(m) is the test code coverage provided by automated tests (eg JUnit tests, not manual QA). En caso de que comp (m) es la complejidad de cyclomatic método m, y cov (m) es el código de prueba de la cobertura proporcionada por los ensayos automatizados (por ejemplo, JUnit pruebas, no manual de control de calidad). Cyclomatic complexity is a well-known and widely used metric and it’s calculated as one plus the number of unique decisions in the method. Cyclomatic complejidad es un conocido y ampliamente utilizado métricas y es calculado como uno más el número único de decisiones en el método. For code coverage we use basis path coverage. Para la cobertura de código base que usamos camino cobertura. Low CRAP numbers indicate code with relatively low change and maintenance risk – because it’s not too complex and/or it’s well-protected by automated and repeatable tests. Baja crap números indican el código con el cambio relativamente bajo riesgo y mantenimiento - porque no es demasiado complejo y / o es bien protegidos de forma automatizada y repetible pruebas. High CRAP numbers indicate code that’s risky to change because of a hazardous combination of high complexity and low, or no, automated test coverage. Alto crap números indican que el código de riesgo a cambio debido a la peligrosa combinación de alta complejidad y baja, o si no, la cobertura de pruebas automatizadas.
Generally speaking, you can lower your CRAP score either by adding automated tests or by refactoring to reduce complexity. En términos generales, usted puede bajar su puntuación de idioteces ya sea mediante la adición de pruebas automatizadas o de refactoring para reducir la complejidad.
Now you can go to your boss and quantitatively show him that your code is less crappier than your colleague*. Ahora puedes ir a tu jefe y cuantitativamente le muestran que su código es menos crappier que su colega *. After all managers like numbers, even if they have crappy & dubious validity. Después de todo el personal directivo como los números, aun cuando hayan crappy y dudosa validez.
*Remember to forget that Crap4J even exists, or discount it heavily at any mention, if your code turns out to be crappier than your competitor. * Recuerde que olvidar que Crap4J aún existe, o el descuento que en gran medida a cualquier mención, si su código resulta ser crappier que su competidor.
Note: CRAP stands for Change Risk Anti-Patterns according to their definition. Nota: crap está de riesgo para el Cambio Anti-Patrones de acuerdo con su definición.
Crap4J comes as an Eclipse plugin and can also be integrated with Ant. Crap4J viene como un plugin de Eclipse y también puede ser integrado con Ant. Check the video for a nice demonstration. Compruebe el vídeo para una buena demostración. The authors decided to use 30 as a threshold for crappiness. Los autores decidieron utilizar 30 como un umbral para crappiness.
I partially agree with the idea but I am not comfortable with the formula. I parcialmente de acuerdo con la idea pero no estoy a gusto con la fórmula. Also it ignores cross-method complexity introduced and complexity of a class as a whole which may not always be the sum of the complexity of the methods. También ignora la cruz de complejidad presenta el método y la complejidad de una clase como un todo que puede no ser siempre la suma de la complejidad de los métodos.
Filed under Filed under Enterprise Software Enterprise Software , Headline News Headline News , How To Cómo , Humor Revistas , Java Software El software de Java , Open Source Software Open Source Software , Programming Programación | |
| |
RSS 2.0 RSS 2,0 | |
Trackback this Article | este artículo |
Email this Article Enviar artículo
You may also like to read También puede leer |




December 7th, 2007 at 9:19 pm Diciembre 7, 2007 a las 9:19 pm
OHH NO, Another plugin Ohh NO, Otro plugin
Don’t we already have plugins that do that ? No ya tenemos los plugins que hacer eso?
Also, It seem’s to check for two things only (complexity and coverage) Asimismo, parece's para ver si hay sólo dos cosas (la complejidad y cobertura)
Anyway,I don’t know anybody who wants their code to be called crap. De todas formas, no sé que nadie quiere que su código que se llamará idioteces. But it’sa nice way to get our attention for their plugin. Pero es una buena forma para obtener nuestra atención por su plugin.
I use IntelliJ IDE and most of what I do is web developement (JSP,javascript and form handlers). Yo uso IntelliJ IDE y la mayor parte de lo que hago es desarrollo web (JSP, javascript y el formulario de manipuladores).
My experience tells me that spending a little time in the beginning to think through the problem will go a long way in writing quality code and you don’t need as my test cases(especially trivial ones). Mi experiencia me dice que el gasto un poco de tiempo al principio para pensar en el problema va a recorrer un largo camino por escrito la calidad del código y no es necesario como mi prueba de casos (sobre todo trivial).
Coming back to IntelliJ , the IDE has many inspections by default that it can run on your code and I went back to check for this and found it. Volviendo a IntelliJ, el IDE tiene muchos controles por defecto que puede funcionar en su código y me volví para ver si esta y lo encontraron.
The inspection say’s this : La inspección decir es esto:
This inspection reports any instances of methods that have too high a cyclomatic complexity. Esta informes de inspección de todos los casos de métodos que tienen muy altas cyclomatic complejidad. Cyclomatic complexity is basically a measurement of the number of branching points in a method. Cyclomatic complejidad es básicamente una medición del número de puntos de ramificación en un método. Methods with too high a cyclomatic complexity may be confusing and difficult to test. Métodos con muy altas cyclomatic complejidad, pueden resultar confusas y difíciles de probar.
Another reason for me to love it Otra razón para mí es el amor
BTW, your spam guard kicked me out twice when using Opera. BTW, su spam guardia me patearon dos veces cuando se utiliza Opera. Iam trying this with FF.Let’s see Ahora esta tratando con FF.Let 's ver
December 9th, 2007 at 9:42 am 9 de diciembre de 2007, a las 9:42 am
> Anyway,I don’t know anybody who wants their code to be called crap. > De todos modos, no conozco a nadie que quiere que su código que se llamará idioteces.
I have seen code worse than crap. He visto el código peor que idioteces. However as you said nobody would like to Sin embargo, como usted ha dicho que nadie quisiera call their own code crap llaman a su propio código crap .
> My experience tells me that spending a little time in the beginning to think through the problem will go a long way in writing quality code and you don’t need as my test cases(especially trivial ones). > Mi experiencia me dice que el gasto un poco de tiempo al principio para pensar en el problema va a recorrer un largo camino por escrito la calidad del código y no es necesario como mi prueba de casos (sobre todo trivial).
While it may be true for the experienced programmers, even they can benefit from good unit testing. Si bien puede ser cierto para los programadores experimentados, incluso se pueden beneficiar de una buena unidad de pruebas. As for the rest unit tests go a long way in creating reusable quality code. En el resto de pruebas de unidad de recorrer un largo camino en la creación de código reutilizable calidad.
I have sent you an email wrt. He enviado un mensaje de correo electrónico que usted wrt. your problem with our comment protection. su problema con la protección de nuestro comentario.
December 9th, 2007 at 11:48 am 9 de diciembre de 2007, a las 11:48 am
In my first comment I said ‘Not another plugin’. En mi primer comentario que me dijo 'No otro plugin'. I did that because often times I question the motives behind what some of the OSS guys are upto. Que yo lo hice porque muchas veces me pregunto los motivos detrás de lo que algunos de los chicos son OSS hasta.
My suggestion for anyone coming up with an open source product is to provide justification for it by 1) Telling what they are doing. Mi sugerencia para las personas que se planteen con un producto de código abierto es ofrecer la justificación de que por 1) para saber lo que están haciendo.
2) What’s out there in the market (both free and commercial) that does the same thing(or similar). 2) ¿Qué pasa ahí fuera en el mercado (tanto libre y comercial) que hace lo mismo (o similar).
3) If there are any OSS products, why did they choose to create this one instead of contributing to the other. 3) Si hay algún OSS productos, ¿por qué deciden crear este un lugar de contribuir a los demás.
3) Why is their product different. 3) ¿Por qué su producto es diferente.
I think, lot of people , who wasted countless hours evaluating these products can relate to what Iam saying. Yo creo, mucha gente, que desperdiciado innumerables horas la evaluación de estos productos puede referirse a lo que dice ahora.
Another metric I apply to OS products is this: If it costed x dollars would I buy it? Otro indicador que se aplican a los productos OS es la siguiente: En caso de que los costos de dólares x comprar?