How crappy is your Java code? Comment crappy est votre code Java? Often we find others code crappier than ours, especially if we are given to maintain their code. Souvent, nous trouvons d'autres code crappier que la nôtre, surtout si nous sommes donné pour maintenir leur code. Crappy code authors are almost always happy with their code quality. Crappy code auteurs sont presque toujours satisfaits de leur qualité du code. Can we quantify crappiness? Pouvons-nous quantifier crappiness?

Crap4J claims to be able to quantify crappiness in Java code with a simple formula (applicable to a method): affirme être en mesure de quantifier crappiness dans le code de Java avec une formule simple (applicable à une méthode):
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). Lorsque comp (m) est le «cyclomatic complexité de la méthode m, et cov (m) est le critère de couverture de code fournies par tests automatisés (par exemple, de tests JUnit, pas de manuel d'assurance de la qualité). 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 complexité est bien connu et largement utilisé métrique et il est calculé comme un plus le nombre de décisions unique en son genre dans la méthode. For code coverage we use basis path coverage. Pour de couverture de code que nous utilisons base chemin de couverture. 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. CRAP faible nombre d'indiquer le code de changement relativement faible et l'entretien des risques - car il n'est pas trop complexe et / ou il est bien protégé par des procédés automatisés et reproductibles essais. 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. Haut CRAP indiquer les numéros de code qui risque de changer en raison d'une combinaison dangereuse d'une grande complexité et faible, ou non, la couverture de test automatisés.

Generally speaking, you can lower your CRAP score either by adding automated tests or by refactoring to reduce complexity. De manière générale, vous pouvez réduire votre client CRAP soit en ajoutant les tests automatisés ou par le remanier pour réduire la complexité.

Now you can go to your boss and quantitatively show him that your code is less crappier than your colleague*. Maintenant vous pouvez aller à votre patron quantitativement et lui montrer que votre code est crappier moins que votre collègue *. After all managers like numbers, even if they have crappy & dubious validity. Après tous les gestionnaires comme des numéros, même s'ils ont crappy et validité douteuse.

*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. * N'oubliez pas d'oublier que même Crap4J existe, ou il escompte fortement à toute mention, si votre code s'avère crappier que votre concurrent.

Note: CRAP stands for Change Risk Anti-Patterns according to their definition. Note: Crap est pour le changement des risques anti-patterns en fonction de leur définition.

Crap4J comes as an Eclipse plugin and can also be integrated with Ant. Crap4J vient comme un plugin Eclipse et peut également être intégré avec Ant. Check the video for a nice demonstration. Cochez la vidéo pour une belle démonstration. The authors decided to use 30 as a threshold for crappiness. Les auteurs ont décidé d'utiliser 30 comme un seuil pour crappiness.

I partially agree with the idea but I am not comfortable with the formula. Je partiellement d'accord avec l'idée mais je ne suis pas l'aise avec la formule. 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. En outre, il ignore croix méthode introduit la complexité et la complexité d'une classe comme un ensemble de mai qui n'est pas toujours la somme de la complexité des méthodes.


You may also like to read Vous mai également à lire

3 Responses to “How Crappy Is Your Java Source Code?” 3 réponses à "Comment est-Crappy Votre Code source Java?"

  1. Commenter krishna Says: Krishna dit:

    OHH NO, Another plugin OHH NON, un autre plugin :)
    Don’t we already have plugins that do that ? N'avons-nous pas déjà plugins que faire?
    Also, It seem’s to check for two things only (complexity and coverage) Aussi, il semble la pour vérifier deux choses seulement (la complexité et la couverture)

    Anyway,I don’t know anybody who wants their code to be called crap. Quoi qu'il en soit, je ne connais personne qui veut leur code d'être appelé crap. But it’sa nice way to get our attention for their plugin. Mais c'est une belle façon d'obtenir notre attention pour leur plugin.

    I use IntelliJ IDE and most of what I do is web developement (JSP,javascript and form handlers). IntelliJ-je utiliser la plupart des IDE et de ce que je fais est développement web (JSP, JavaScript et gestionnaires forme).

    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). Mon expérience me dit que les dépenses un peu de temps au début à se pencher sur le problème ira un long chemin en qualité d'écriture du code et vous n'avez pas besoin que mon cas de test (en particulier ceux triviale).

    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. Pour en revenir à IntelliJ, l'IDE a de nombreux contrôles par défaut qu'il peut fonctionner sur votre code et je suis retourné pour vérifier cela et trouvé.

    The inspection say’s this : L'inspection de dire ceci:
    This inspection reports any instances of methods that have too high a cyclomatic complexity. Cette inspection rapports tout cas des méthodes qui ont une trop haute cyclomatic complexité. Cyclomatic complexity is basically a measurement of the number of branching points in a method. Cyclomatic complexité est essentiellement une mesure du nombre de points de branchement dans une méthode. Methods with too high a cyclomatic complexity may be confusing and difficult to test. Méthodes trop élevé avec une complexité mai cyclomatic être source de confusion et difficile à tester.

    Another reason for me to love it Une autre raison pour moi à l'aimer ;)

    BTW, your spam guard kicked me out twice when using Opera. BTW, votre spam garde m'a donné des coups de pied à deux reprises lors de l'utilisation d'Opera. Iam trying this with FF.Let’s see Maintenant essayer cela avec FF.Let l 'voir

  2. Commenter Angsuman Chakraborty Angsuman Chakraborty Says: Indique:

    > Anyway,I don’t know anybody who wants their code to be called crap. > Quoi qu'il en soit, je ne connais personne qui veut leur code d'être appelé crap.

    I have seen code worse than crap. J'ai vu pire que le code de merde. However as you said nobody would like to Mais comme vous l'avez dit personne ne voudrais call their own code crap appeler leur propre code de merde .

    > 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). > Mon expérience me dit que les dépenses un peu de temps au début à se pencher sur le problème ira un long chemin en qualité d'écriture du code et vous n'avez pas besoin que mon cas de test (en particulier ceux triviale).

    While it may be true for the experienced programmers, even they can benefit from good unit testing. S'il mai-être vrai pour les programmeurs expérimentés, ils peuvent même bénéficier de bonnes tests unitaires. As for the rest unit tests go a long way in creating reusable quality code. En ce qui concerne le reste des tests unitaires aller un long chemin dans la création d'réutilisables code de qualité.

    I have sent you an email wrt. J'ai envoyé un e-mail vous wrt. your problem with our comment protection. votre problème avec la protection de notre commentaire.

  3. Commenter krishna Says: Krishna dit:

    In my first comment I said ‘Not another plugin’. Dans mon premier commentaire que je dit: "Pas un plugin. I did that because often times I question the motives behind what some of the OSS guys are upto. Je l'ai fait parce que souvent je m'interroge sur les motifs derrière ce que certains de l'OSS sont jusqu'à gars.

    My suggestion for anyone coming up with an open source product is to provide justification for it by 1) Telling what they are doing. Ma suggestion pour ceux qui viennent avec un produit open source est de fournir une justification pour elle par 1) Dire ce qu'ils font.
    2) What’s out there in the market (both free and commercial) that does the same thing(or similar). 2) Qu'est-ce qui existe sur le marché (à la fois libres et commerciaux) qui fait la même chose (ou similaire).
    3) If there are any OSS products, why did they choose to create this one instead of contributing to the other. 3) S'il existe des produits OSS, pourquoi ont-ils choisir de créer ce un lieu de contribuer à l'autre.
    3) Why is their product different. 3) Pourquoi est leur produit différent.

    I think, lot of people , who wasted countless hours evaluating these products can relate to what Iam saying. Je pense, beaucoup de gens, qui perdu d'innombrables heures évaluation de ces produits est liée à ce que disent maintenant.

    Another metric I apply to OS products is this: If it costed x dollars would I buy it? Une autre métrique-je demander à OS produits est la suivante: S'il x dollars le coût devrais-je acheter?

Looking forward to hear your thoughts. Dans l'attente de connaître votre opinion.



Please enter the code shown below ( to verify that you are human ) before you click Submit Comment . S’il vous plaît entrez le code ci-dessous (pour vérifier que vous êtes humain) avant de cliquer sur Envoyer un commentaire.