How Crappy Is Your Java Source Code? Como CRAPPY é o seu código fonte do Java?
Crap4J claims to be able to quantify crappiness in Java code with a simple formula (applicable to a method): afirma ser capaz de quantificar crappiness código em Java com uma fórmula simples (aplicável a um 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). Sempre que comp (m) é a complexidade do método cyclomatic m, e cov (m) é o teste código cobertura fornecida por testes automatizados (por exemplo, testes JUnit, e não manual QA). 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 complexidade é um bem conhecido e amplamente usado métrica e é calculado como uma única acrescido do número de decisões no método. For code coverage we use basis path coverage. Para a cobertura código usamos base caminho 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. Low CRAP números indicam código com a mudança e manutenção relativamente baixo risco - porque não é demasiado complexo e / ou ele é bem-protegidos por testes automatizados e repetitivo. 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 indicam que o código da arriscada, porque a mudança de uma perigosa combinação de baixa e alta complexidade, ou não, teste automatizado cobertura.
Generally speaking, you can lower your CRAP score either by adding automated tests or by refactoring to reduce complexity. De um modo geral, você pode baixar a sua pontuação CRAP quer pela inclusão de testes automatizados ou por refactoring para reduzir a complexidade.
Now you can go to your boss and quantitatively show him that your code is less crappier than your colleague*. Agora você pode ir para o seu chefe e quantitativamente mostrar-lhe que o seu código é menor do que o seu colega crappier *. After all managers like numbers, even if they have crappy & dubious validity. Depois de todos os gestores como números, mesmo que tenham CRAPPY & duvidosa validade.
*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. * Lembre-se de Crap4J esquecer que ainda existe, ou é fortemente desconto em qualquer menção, se o seu código-se de crappier do que seu concorrente.
Note: CRAP stands for Change Risk Anti-Patterns according to their definition. Nota: CRAP stands para a Mudança Risco Anti-Padrões de acordo com a sua definição.
Crap4J comes as an Eclipse plugin and can also be integrated with Ant. Crap4J surge como um plugin Eclipse e também pode ser integrado com o Ant. Check the video for a nice demonstration. Verifique o vídeo para um agradável demonstração. The authors decided to use 30 as a threshold for crappiness. Os autores decidiram usar a 30 como um limiar para crappiness.
I partially agree with the idea but I am not comfortable with the formula. Eu concordo em parte com a ideia, mas não estou satisfeito com a 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. Também ignora a complexidade introduzida método cruzadas e complexidade de uma classe como um todo que não pode ser sempre a soma da complexidade dos métodos.
Filed under Arquivado em Enterprise Software Enterprise Software , De Headline News Headline News , De How To How To , De Humor , De Java Software Java Software , De Open Source Software Open Source Software , De Programming Programação | |
| |
RSS 2.0 RSS 2,0 | |
Trackback this Article | este artigo |
Email this Article E-mail este artigo
You may also like to read Você pode também gosta de ler |




December 7th, 2007 at 9:19 pm 7 de dezembro de 2007 em 9:19 pm
OHH NO, Another plugin OHH NO, Outro plugin
Don’t we already have plugins that do that ? Não temos já plugins que fazer isso?
Also, It seem’s to check for two things only (complexity and coverage) Além disso, parece's para verificar se há apenas duas coisas (complexidade e cobertura)
Anyway,I don’t know anybody who wants their code to be called crap. De qualquer maneira, eu não conheço ninguém que quer que seu código para ser chamado crap. But it’sa nice way to get our attention for their plugin. Mas é uma bela maneira de obter a nossa atenção para o seu plugin.
I use IntelliJ IDE and most of what I do is web developement (JSP,javascript and form handlers). Eu uso IntelliJ IDE e, mais do que eu faço é developement web (JSP, Javascript e de forma 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). A minha experiência diz-me que gastar um pouco de tempo no início de pensar sobre o problema irá percorrer um longo caminho em escrever código qualidade e você não precisa ter as minhas casos de teste (especialmente aqueles 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. Voltando ao IntelliJ, o IDE tem muitas inspecções por padrão que ele pode ser executado em seu código e eu voltei para verificar esta situação e encontrar-lo.
The inspection say’s this : A inspecção dizer é isto:
This inspection reports any instances of methods that have too high a cyclomatic complexity. Esta inspecção relatórios quaisquer casos de métodos que têm um alto demais cyclomatic complexidade. Cyclomatic complexity is basically a measurement of the number of branching points in a method. Cyclomatic complexidade é basicamente uma medição do número de pontos em uma ramificação método. Methods with too high a cyclomatic complexity may be confusing and difficult to test. Métodos com um cyclomatic demasiado elevada complexidade pode ser confusa e difícil de teste.
Another reason for me to love it Outra razão para eu adoro ele
BTW, your spam guard kicked me out twice when using Opera. BTW, seu guarda spam chutado duas vezes quando me out usando Opera. Iam trying this with FF.Let’s see Iam tentando com esta FF.Let 's ver
December 9th, 2007 at 9:42 am 9 de dezembro de 2007 em 9:42 am
> Anyway,I don’t know anybody who wants their code to be called crap. > Seja como for, eu não conheço ninguém que quer que seu código para ser chamado crap.
I have seen code worse than crap. Eu já vi pior do código crap. However as you said nobody would like to No entanto, tal como o senhor disse que ninguém gostaria de call their own code crap chamar seu 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). > A minha experiência diz-me que gastar um pouco de tempo no início de pensar sobre o problema irá percorrer um longo caminho em escrever código qualidade e você não precisa ter as minhas casos de teste (especialmente aqueles trivial).
While it may be true for the experienced programmers, even they can benefit from good unit testing. Embora possa ser verdade para os programadores experientes, eles podem ainda beneficiar de bons testes unitários. As for the rest unit tests go a long way in creating reusable quality code. Quanto ao resto testes unitários ir muito longe na criação de código reutilizável qualidade.
I have sent you an email wrt. Tenho de lhe enviar um e-mail wrt. your problem with our comment protection. o seu problema com o nosso comentário protecção.
December 9th, 2007 at 11:48 am 9 de dezembro de 2007 em 11:48
In my first comment I said ‘Not another plugin’. No meu primeiro comentário eu disse 'Não é outro plugin'. I did that because often times I question the motives behind what some of the OSS guys are upto. Eu fiz isto porque muitas vezes me pergunta quais as motivações por trás de algumas das OSS caras são upto.
My suggestion for anyone coming up with an open source product is to provide justification for it by 1) Telling what they are doing. A minha sugestão para quem esbarra com um produto de fonte aberta é o de fornecer a justificação de que 1) Dizer o que eles estão fazendo.
2) What’s out there in the market (both free and commercial) that does the same thing(or similar). 2) O que há para fazer no mercado (tanto livres e comerciais) que faz a mesma coisa (ou similar).
3) If there are any OSS products, why did they choose to create this one instead of contributing to the other. 3) Se existirem produtos OSS, porque optar por criar um presente ao invés de contribuir para a outra.
3) Why is their product different. 3) Porque é o seu produto diferente.
I think, lot of people , who wasted countless hours evaluating these products can relate to what Iam saying. Penso, muitas pessoas, que desperdiçou inúmeras horas avaliar estes produtos podem dizer respeito ao que Iam dizendo.
Another metric I apply to OS products is this: If it costed x dollars would I buy it? Outra métrica I se aplica aos produtos SO é esta: Se eu teria custos x dólares comprá-lo?