• Copy and Paste Detection

    von am 9. April 2009

    Copy and Paste ist meiner Meinung nach eines der schlimmsten verbrechen, die man einem objekt-orientierten Code antun kann. Natürlich gibt es fälle, bei denen es schwer oder sogar unmöglich ist duplizierten Code zu vermeiden, aber in 99,9% kann es durch geschickte Vererbung oder Delegation umgangen werden.

    Ich möchte euch heute gar keine Techniken vorstellen, die ihr anwenden könnt um C&P auszulösen, sondern euch ein Werkzeug an die Hand geben, mit dem ihr den doppelten Code findet. Das Tool, das ich meine nennt sich phpcpd (PHP Copy Paste Detection) und stammt aus der Feder (bzw. Keyboard) von Sebastian Bergmann. Ich glaube früher konnte PHPUnit dies nativ selbst, sollte aber in einer der nächsten Versionen verschwinden. Was macht dieses Tool also? Ganz einfach, ich gebe ihm mein Projekt und er schaut nach, welche Zeilen Code er wiederholt findet (und das erstaunlich schnell). Dabei könnt ihr per Kommandozeilen-Parameter einstellen, ab welcher Zeilenanzahl ihr Alarm schlagen wollt. Ich denke hier ist so etwas wie 3-5 Zeilen sinnvoll.

    Bei dem Begriff Kommandozeile sind bestimmt die ein oder anderen von euch hellhörig geworden. Das Tool ist natürlich in PHP geschrieben und kann so ohne Probleme in euern Bauprozess mit eingebaut werden. So könnt ihr ohne Probleme euern Continuous Prozess dazu nutzen doppelten Code zu finden und ihn für immer zu verbannen.

    Noch eine kleine Information für unsere Stammleser. Da wir Samstag und Sonntag keine Artikel mehr haben und an Feiertagen ja auch nicht, wird es erst wieder am nächsten Dienstag etwas zum Lesen geben.

    Nils Langner

    Auch wenn Ihr es mir nicht glauben werdet, aber ich habe nichts gegen PHP. Ich rege mich einfach nur gerne auf. Ok so schlimm ist es auch nicht. Eigentlich wollte ich schon immer einen Blog haben und da ...

    Zum Profil von Nils Langner

    7 Kommentare »


    • Timo
      am 9. April 2009 um 08:39 Uhr

      Puh, 4 Tage ohne phphatesme? Das wird hart! :)
      Liebe Ostergrüße nach Hamburg!


    • Nils Langner
      am 9. April 2009 um 08:44 Uhr

      @Timo: Kannst es ja ändern. Hast doch ‘nen Admin Account :P Aber natürlich auch osterliche Grüße an dich und N*** Jungs


    • Matthias
      am 9. April 2009 um 09:44 Uhr

      Hallo Nils,

      danke für die interessanten Tipps und Ausführungen auf phphatesme.com.

      Kleine Info zu einem Typo: “und stimmt aus der Feder”. Ob das wirklich stimmt? ;-)

      Viele Grüße, schöne Ostern.

      Matthias


    • Sven
      am 13. April 2009 um 09:56 Uhr

      Ich finde der Artikel auch sehr interessant.Danke für die Tipp.


    • PHP hates me - Der PHP Blog » PHPUnit verliert an Funktionalität
      am 14. April 2009 um 08:01 Uhr

      [...] werden jetzt voll und ganz phpDepend überlassen und für die Copy and Paste Detection hat Sebastian Bergmann ja bereits sein phpcpd Kommandozeilentool veröffentlicht. Das einige was [...]


    • Ira Baxter
      am 30. Januar 2010 um 05:48 Uhr

      See http://www.semanticdesigns.com/Products/Clone/PHPCloneDR.html for a clone detector that works on huge systems of code, find copy/paste/*edited* clones, even if the code has been reformatted, variables renamed, and comments inserted/deleted.


    • ragtek
      am 1. Juli 2010 um 11:59 Uhr

      Wie sieht es hier eigentlich aus?

      Gibt es hier irgendwelche Richtwerte?
      Ich habe hier zB einen Projektteil der aus 1.45% duplicated lines out of 57970 total lines of code besteht.

    RSS Feed für Kommentare zu diesem Artikel. TrackBack URL

    Hinterlasse einen Kommentar

    Werbung
    PHP Magazin
    Ausgabe 02/2010

    Dieses Mal mit Artikeln zu den Themen OpenSocial und Apache Shindig, Graphentheorie, Smarty3

    t3n
    Ausgabe 19

    Social Media (R)evolution. Weitere Themen sind noSQL, Crowdsourcing ...

    PHP Journal
    Ausgabe 2/2010

    PHP & Windows optimal nutzen, die besten PHP-CMS im Überblick, Google-API mit Zend Framework nutzen.

    Wir wurden schon öfters gefragt, ob man uns nicht irgendwie unterstützen kann. Die Antwort war immer einfach: Klar! Am einfachsten ist es eure nächsten Einkäufe bei Amazon über unsere Link abzuwickeln. Damit würdet ihr uns schon sehr helfen. Über Co-Autoren freuen wir uns aber noch mehr.