Voor mijn zomerproject ben ik bezig om PHP-scripts statisch te analyseren. Het eindproduct moet uiteindelijk aangeven of er 'un-safe'-variabelen gebruikt worden in functies waarin dit gevaar kan opleveren. Klein voorbeeldje:
Het volgen van 'un-safe'-variabelen door assignments, functies en classes heen is vrij complex. Het gaat ook nog wel even duren voordat dit helemaal af is. Mijn mentor gaf mij daarom de tip om ook andere dingen te rapporteren die statisch te detecteren zijn. Hierdoor kan het project een soort PHP equivalent van FindBugs worden.
Enkele voorbeelden van dingen die opgemerkt kunnen worden:
1: Variabelen gebruiken zonder ze eerst te declareren
2: Het gebruik van haakjes bij include en require (zie ook de PEAR-coding style)
3: Bij elke conditie in lange "if-elseif" telkens 1 variabele vergelijken met een waarde, hier is een switch voor bedoeld.
Nu is het laatste voorbeeld al iets waarover je kan discussieren. Bad practices bedenken die altijd gelden is dan ook niet triviaal. Dat kan misschien ook de reden zijn waarom er niet veel te vinden is over bad practices specifiek voor PHP. Sommige van de dingen die in FindBugs gerapporteerd worden zijn wel nuttig en er zijn ook een aantal algemene code smells die ik kan gebruiken. Maar deze zijn allemaal niet specifiek voor PHP. En er moeten toch specifieke code smells voor PHP zijn lijkt me.
Na dit lange verhaal komt dan eindelijk de vraag:
Wat vinden jullie bad practices in PHP? Waar moeten (beginnende) programmeurs op gewezen worden om hun code te verbeteren?
Mocht je iets weten probeer dan alstublieft ook te onderbouwen waarom iets niet netjes is of gevaar op levert. Nuttige 'bad practices' zullen worden opgenomen in het project als blijkt dat ze inderdaad statisch te detecteren zijn.
PHP:
1
2
3
4
5
6
7
8
9
| <?php echo $_GET['foo']; // gevaarlijk $bar = $_GET['bar']; echo $bar; // ook gevaarlijk $fred = htmlentities(stripslashes($bar)); echo $fred; // ongevaarlijk ?> |
Het volgen van 'un-safe'-variabelen door assignments, functies en classes heen is vrij complex. Het gaat ook nog wel even duren voordat dit helemaal af is. Mijn mentor gaf mij daarom de tip om ook andere dingen te rapporteren die statisch te detecteren zijn. Hierdoor kan het project een soort PHP equivalent van FindBugs worden.
Enkele voorbeelden van dingen die opgemerkt kunnen worden:
1: Variabelen gebruiken zonder ze eerst te declareren
2: Het gebruik van haakjes bij include en require (zie ook de PEAR-coding style)
3: Bij elke conditie in lange "if-elseif" telkens 1 variabele vergelijken met een waarde, hier is een switch voor bedoeld.
Nu is het laatste voorbeeld al iets waarover je kan discussieren. Bad practices bedenken die altijd gelden is dan ook niet triviaal. Dat kan misschien ook de reden zijn waarom er niet veel te vinden is over bad practices specifiek voor PHP. Sommige van de dingen die in FindBugs gerapporteerd worden zijn wel nuttig en er zijn ook een aantal algemene code smells die ik kan gebruiken. Maar deze zijn allemaal niet specifiek voor PHP. En er moeten toch specifieke code smells voor PHP zijn lijkt me.
Na dit lange verhaal komt dan eindelijk de vraag:
Wat vinden jullie bad practices in PHP? Waar moeten (beginnende) programmeurs op gewezen worden om hun code te verbeteren?
Mocht je iets weten probeer dan alstublieft ook te onderbouwen waarom iets niet netjes is of gevaar op levert. Nuttige 'bad practices' zullen worden opgenomen in het project als blijkt dat ze inderdaad statisch te detecteren zijn.