Sven Rautenberg: Guter Code-Analysator

Beitrag lesen

Moin!

ich suche ein gutes Tool, um PHP Code auf Fehler zu überprüfen.

Auf Denkfehler. Und da Computer nicht denken können, kann es so ein Tool nicht geben.

Zwar bringt error_reporting(E_ALL); schon viel, aber man erhält nicht immer den besten Code.

Den erhält man sowieso nur durch schlaues Programmieren. Denn die Phrase "bester Code" ist sehr variabel. Für einen Husch-Husch-Formmailer mag man mal eben HTML und PHP mischen können - für einen großen Shop dürfte das nicht mehr realisierbar sein, sondern man greift sinnvollerweise auf Templates und eine vernünftige objektorientierte Programmierung zurück.

Wie soll ein Programm sowas hinkriegen?

Mit der Code-Analyse von Zend bin ich nicht zufrieden, denn:

Du hast schräge Erwartungen.

$erg = mysql_query("SELECT * FROM tb");
while($row = $erg) { } //Bug: Zuweisung in Bedingung

Das ist absolut so gewollt, würde ich meinen. Zuweisungen in while-Bedingungen sind jedenfalls häufiger, als du glaubst, und sie gehören dort auch absolut hin.

//Und vor allem:
if($_GET['pw'] == "geheim")
   $log = 1;

if($log == 1)
   echo "Geheimer Bereich";

Dagegen, dass du deine Variablen nicht ordentlich und immer initialisierst, kann ein Programm kaum was unternehmen, aber PHP würde sich zumindest mit einer Notice melden, wenn man ohne gültiges Passwort versucht, das Skript ablaufen zu lassen, weil $log dann benutzt wird, ohne definiert zu sein. Und wenn das keine Alarmglocken klingeln läßt, ist dir nicht zu helfen.

Dies wird nicht als Bug erkannt, obwohl man in den geheimen Bereich gelangen kann, wenn register globals auf Off steht.

Man kann nur in den geheimen Bereich, wenn register_globals auf on steht und man weiß, dass die Variable, die man beeinflussen muß, $log heißt.

Wie gesagt: Das, was du willst, ist ein Intelligenzprogramm, und künstliche Intelligenz gibts noch nicht.

- Sven Rautenberg

--
My sssignature, my preciousssss!