Toon posts:

[JAVA/APP] Programma voor code inspection

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hallo allemaal,

Ik ben al een tijdje op zoek naar een inspection programma voor java code waarmee ik de volgende twee situaties kan opzoeken in mijn code:

[1] meerdere keren dezelfde functie oproepen binnen eenzelfde method

Soms betrap ik mijzelf erop dat ik meerdere keren dezelfde method oproep. Meestal (als de functieoproepen onder alle omstandigheden hetzelfde resultaat opleveren) is het een goed idee om het resultaat van de eerste call in een tijdelijke variable op te slaan.
Java:
1
2
3
4
public void test() {
        int j = 10 + eenObject.getEenGetal();
        int j = 60 + eenObject.getEenGetal();
    }

Hier is het dus niet onverstandig om het resultaat van de getEenGetal-oproep even in een tijdelijke variabele op te slaan.

[2] tijdelijke variabele die maar op 1 plaats gebruikt wordt

Het gebruik van tijdelijke variabelen is mooi, tenzij ze maar 1 keer gebruikt worden. Ik wil dus variabelen vermijden die ik maar op één plaats gebruik (tenzij ik natuurlijk meterslange, onleesbare code-lijnen krijg).

Ik heb al heel wat gegoogled, maar heb niets hiervoor gevonden. Checkstyle (http://checkstyle.sourceforge.net) komt in de buurt, maar volgens mij kan het hier niet mee.

Iemand een idee? Ik gebruik Intellij IDEA.

In ieder geval bedankt.

PS: Ik hoop dat dit op de juiste plaats is. Ik vermoedde dat de software-sectie door niet veel java-experten gelezen wordt.

edit: ik wil niet dat code automatisch aangepast wordt. In het tweede geval zou dit misschien nog zonder problemen lukken, maar een checker kan in het eerste geval nooit weten of methods steeds hetzelfde resultaat opleveren.

[ Voor 10% gewijzigd door Verwijderd op 23-07-2005 23:30 ]


  • momania
  • Registratie: Mei 2000
  • Laatst online: 19:41

momania

iPhone 30! Bam!

Checkstyle komt wel een heel eind volgens mij hoor.
Heb je wel goed gekeken naar de settings van de verschillende checks?

Vaak kan je bij de checks ook een soort van regex opgeven. Die zou voor je eerste punt handig kunnen zijn. Ik weet idd dat de normale check van dubbele code alleen naar complete regels kijkt, maar misschien is dat wel aan te passen.

Anders kan je altijd nog je eigen check schrijven :)
Of een feature request indienen bij checkstyle.

[edit]
Je zou eens kunnen kijken naar de source van de check UnusedLocalVariable

Die zou je volgens mij makkelijke moeten kunnen aanpassen naar een check die kijk naar hoe vaak een local variable wordt gebruikt en dat je die dan kan configureren met een minimum. :)

[ Voor 29% gewijzigd door momania op 23-07-2005 23:42 ]

Neem je whisky mee, is het te weinig... *zucht*


Verwijderd

Waarom zou het een slecht idee zijn om iets in een tijdelijke variabele op te slaan? Ook als je de variabele bijvoorbeeld meteen, en maar één keer gebruikt? Er is altijd nog een compiler die wellicht het een en ander optimaliseert.

Die tijdelijke variabele zou er dus best weleens alleen kunnen zijn voor de duidelijkheid van de code. Je zou dus eigenlijk alleen even moeten nagaan of het niet weggeoptimaliseerd wordt. En of het nu echt zoveel tijd of geheugen kost.

Verwijderd

ik gebruik IDEA als ide, deze heeft standaard een codechecker

Verwijderd

Topicstarter
Bedankt voor de tips, ik zal checkstyle inderdaad wat beter moeten bekijken, want zo te zien kan het meer dan en is het meer uitbreidbaar dan ik dacht.

Cheetah: het is vooral om een idee te krijgen. Zoals ik zei, mag de duidelijkheid en logica van de code er natuurlijk niet onder lijden.

  • misfire
  • Registratie: Maart 2001
  • Laatst online: 12-10-2024
Er zijn best veel code inspection tools voor Java. Ga maar eens googlen op static code analysis of code checking, dat zijn ook veelgebruikte termen voor de tools die je zoekt. Op Java Source is een handig overzicht te vinden van alle open source varianten: http://www.java-source.net/open-source/code-analyzers

De check waar je naar op zoek bent zal je waarschijnlijk echter nergens tegen komen. Het is namelijk niet valide om te veronderstellen dat twee methode-aanroepen hetzelfde is als het eenmalig aanroepen en cachen van het resultaat. De methode kan namelijk allerlei gedrag hebben die de rest van de applicatie beïnvloedt, en een ander resultaat hebben als je hem op een ander moment aanroept. Code analyzers kunnen daarom nooit dit soort situaties vlaggen, omdat hierdoor veel geldige constructies met dubbele methode-aanroepen onterecht zouden worden afgevlagd.
Pagina: 1