Plugin Kompatibilitäts-Check von BraveNewCode
codestyling | 07. Juni 2009 | 21:31
Beim Stöbern im Netz stolpert man immer mal wieder über Service Seiten, die sehr brauchbare Informationen enthalten. So auch der Tester für Plugin Kompatibilität von bravenewcode.com, der allerdings nur eine englische Seite bereitstellt.
Das WordPress Repository wird automatisch und scheinbar zyklisch gelesen und die Plugins einer Prüfung unterzogen. Das Ergebnis dieser Prüfung wird für über 5000 Plugins tabellarisch gelistet und kann gezielt pro Plugin interaktiv eingesehen werden.
Prüfungskategorien
Die Plugin werden systematisch mehreren Prüfungen unterzogen um eine grobe Einschätzung geben zu können, für welche WordPress Version sie einzusetzen gehen bzw. mit welchen Problemen man rechnen muß. Die Kategorien im Einzelnen:
Min WP - minimal nötige WordPress Version
Diese Angabe drückt aus, welche Mindestversion man haben muß, um das Plugin erfolgreich betreiben zu können. Diese wird auch von den verwendeten Template Tags abhänigig gemacht, die eine bestimmte Version erzwingen könnten.
Max WP - maximal mögliche WordPress Version
Hiermit wird ausgedrückt, das ein Einsatz nur bis zu dieser Version fehlerfrei zu erwarten ist. Der verbreitetste Grund, warum niedrigere Versionen erscheinen ist die hart codierte Verwendung des wp-content Ordners (wp-content kann ab WP 2.6 verstellt werden). Plugins sollten statt dessen die Konstante WP_CONTENT_DIR benutzen.
MOVE - kann das wp-content Verzeichnis gefahrlos umkonfiguriert werden
siehe vorheriger Punkt.
PHP 4 - kann das Plugin unter PHP 4 eingesetzt werden
Dieser Test prüft unter anderem den Code, ob er Klassen oder Funktionen enthält, die nicht in PHP 4 zur Verfügung stehen. Ist dem so, fällt das Plugin bei dieser Prüfung durch.
DB - umgeht das Plugin die Datenbank Klassen von WordPress
Wenn das Plugin statt den WordPress Datenbank Klassen selbst zu mysql_connect greift und direkt mit der DB kommuniziert, besteht es diese Prüfung u.a. nicht. Es ist sinnvoller und sicherer, immer die DB Klassen von WordPress selbst zu benutzen.
DEPR - benutzt der Plugin veraltete WordPress Funktionen
Mit jeder neuen Version von WordPress werden Funktionen als “veraltet” deklariert, die in späteren Versionen komplett entfernt werden. Sollte das Plugin solche Funktionen noch nutzen, fällt es hier durch.
PREP - sicherer Datenbankzugriff
Wenn das Plugin auf die Datenbank zugreift, wird geprüft, ob dabei mit PREPARE Statements gearbeitet wird. Ist dem nicht so, führt das zum Fehler in diesem Test.
Soweit im Groben die Beschreibung der Testfälle, hier nun ein größerer Screenshot:

Kritikpunkte und Schwachstellen dieser Tests
Grundsätzlich sind diese Tests eine feine Sache, um feststellen zu können, wie es um ein bestimmtes Plugin bestellt ist. Leider sind diese Tests jedoch nur bedingt zu gebrauchen, denn die Menge an Fehleinschätzungen ist ziemlich groß! Auch mein Plugin Codestyling Localization fällt zum Beispiel beim PHP 4 Test durch, obwohl dies glatt gelogen ist !
Hier ein Beispiel, warum ein Plugin PHP 4 kompatibel ist und trotzdem durchfällt:
| PHP | |
1 2 3 4 5 6 7 8 9 10 | if (!function_exists('scandir')) { function scandir($dir) { $dh = opendir($dir); while (false !== ($filename = readdir($dh))) { $files[] = $filename; } closedir($dh); return $files; } } |
| timing: 0.066s | |
Der Tester findet nur die Benutzung der Funktion scandir und weis, dass diese erst ab PHP 5 zu Verfügung steht. Also ist dieses Plugin, das o.g. Code enthält nicht PHP 4 kompatibel. Dem ist aber nicht so, denn es wird explizit geprüft, ob die Funktion zur Verfügung steht und im Falle, sie ist nicht da, wird sie mit verfügbaren Mitteln aus PHP 4 bereitgestellt.
Somit ist dieser Code ohne weiteres auch in PHP 4 lauffähig.
mein abschließendes Fazit
Der Tester vermittelt einen guten und groben Überblick, welche Plugins unter Umständen im Einsatz problematisch sein könnten. Für Plugin-Entwickler ist es zumindest ein Hinweis, nochmal den Code anzusehen, ob der angezeigte Fehler nicht doch drin enthalten sein könnte. Blindes Vertrauen in die dort gemachten Angaben kann man aber leider nicht haben, denn die Fehlerquote in einigen Bereichen ist noch viel zu hoch.
Alles in Allem ein gute Idee, wenn auch noch eine Menge mehr Intelligenz in die Codeprüfung investiert werden muss, um Fehleinschätzungen noch besser zu vermeiden.






Frank
08.06.2009 | 10:16Sehe ich genauso, denn einige meiner Plugins sollen angeblich veraltete Funktionen nutzen, zum Beispiel Adminimize. Was die Prüfung aber nicht weis, dass ich diese nur nutze, wenn es sich um ein altes WordPress handelt und da gab es die neueren Funktionen nun mal nicht. Insofern ja, auch diverse Listen immer kritisch prüfen.
Antworten »