Code Styling Project

It’s not a bug, it’s always a feature.
  • Deutsch
  • English
  • rss
  • Home
  • Blog
  • Impressum
  • Entwicklungen
  • Fehlerbehebungen
  • Anleitungen

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:
pluginchecked-bravenewcode-full

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.

Kategorien
Deutsch, WordPress (DE)
RSS Kommentare
RSS Kommentare

« WordPress 2.8 ändert das Metabox Modell für Admin Seiten “Page Columnist” - Artikel & Seiten in Spaltenformat »

1 Antwort    Schreib einen Kommentar

Frank

Frank

08.06.2009 | 10:16

Sehe 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 »

Du kannst diese Tags verwenden : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Navigation

  • Allgemein
  • jQuery in WordPress
  • Politik
  • WordPress (DE)

Suche

Neuere Beiträge ...

  • jQuery 1.3.2 verursacht Probleme im IE 8
  • “WP System Health” - wie geht’s meinem WordPress
  • Probleme mit WordPress 2.8 lösen
  • WordPress 2.8 und das jQuery Update
  • “Page Columnist” - Artikel & Seiten in Spaltenformat

Ältere Beiträge ...

  • WordPress 2.8 ändert das Metabox Modell für Admin Seiten
  • PHP Funktion version_compare korrekt verwenden
  • Mathematische Finesse der Abwrack-Prämie
  • WordCamp Vortrag “Lokalisierung” als PDF Download
  • Permalinks mit Umlauten ohne o42-clean-umlauts
rss RSS Kommentare valid xhtml 1.0 design by jide powered by Wordpress get firefox