Xdebug und toter Code
Kommentare

Der PHP-Experte Derick Rethans behandelt in seinem Blog ein Thema, das wohl jedes Projekt – ob PHP oder nicht – umtreibt, sobald es eine gewisse Größe überschritten hat: Toter Code. Da er von Lesern

Der PHP-Experte Derick Rethans behandelt in seinem Blog ein Thema, das wohl jedes Projekt – ob PHP oder nicht – umtreibt, sobald es eine gewisse Größe überschritten hat: Toter Code. Da er von Lesern bereits häufiger darauf angesprochen wurde, beschäftigt er sich insbesondere mit der Frage, warum sein Tool Xdebug häufig toten Code an Stellen findet, an denen die Nutzer dies nicht erwarteten.

Die Antwort auf diese Frage ist Rethans zufolge recht einfach: Xdebug checkt die Code Coverage, indem es Hooks in bestimmte Opcodes einfügt. Opcodes sind die Bausteine für Opparays. PHP konvertiert beim Parsen jedes Element eines Skripts (z.B. main body, method, function) in Oparrays. Die PHP-Engine führt diese Opparrays dann aus, indem für jeden Opcode etwas Code ausgeführt wird. Dabei werden Opcodes generiert, aber nicht optimiert, d.h. Opcodes, die nicht ausgeführt werden können, werden nicht entfernt.

Auf Grundlage eines vld-Outputs zeigt Rethans auf der Opcode-Ebene, wie dort etwas ausgeführt (oder eben nicht ausgeführt) wird. Am Beispiel einer einfachen „foo“-Funktion zeigt er den Ausführungsablauf sowie die Art und Weise, wie die verschiedenen Ausführungszweige arbeiten. In seinem Beispiel ist eine Codezeile mit der schließenden Klammer eines „if“-Statements für die „toter Code“-Markierung verantwortlich – es hängt also  gänzlich von den ausgeführten Codezeilen ab, was als „toter Code“ markiert wird.

Aufmacherbild: <a href="http://www.shutterstock.com/pic.mhtml?id=204512776&src=id" title="social concept: computer keyboard with word dead von Shutterstock / Uhrheberrecht: fotoscool “ class=“elf-external elf-icon elf-external elf-icon“ rel=“nofollow nofollow“>social concept: computer keyboard with word dead von Shutterstock / Urheberrecht: fotoscool

Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -