ObjectifDétecter tout ce qui pourrait être des fautes de codage dans un ensemble de fichiers source. JustificationTous les langages proposent des constructions qui sont propices à l'introduction d'erreurs de programmation et qui sont, généralement, très difficiles à détecter, même lors de revues de code. Avec les langage C, C++ et Java, par exemple, l'exemple le plus connu est l'utilisation du signe d'affectation au lieu du signe de comparaison. if (var = 0) { // code jamais exécuté } Toujours avec les mêmes langages, voici un autre exemple de piège : if (var == 0); { // code toujours exécuté } Saurez-vous trouver pourquoi le code est toujours exécuté ? La vérification automatisée de règles de programmation permet de localiser ces constructions et de vérifier si ce sont de réelles erreurs. Dans les exemples ci-dessus, la règle "il n'est pas autorisé d'avoir une affectation dans un test" détecte la première erreur et la règle "il faut des instructions à exécuter dans la partie "then" d'un test" détecte la seconde erreur. Langages concernésC, C++ Contrôles effectués• Recherche des défauts suivants : • Présence d’instructions sans effet • Présence de code inaccessible • Bloc vide dans un test • Absence de « break » dans une branche de « switch » • Absence de « default » dans un « switch » • Utilisation du retour d’une procédure • Confusion entre affectation et test • Comparaisons de réels pour égalité ou différence Outils utilisésIBM®Rational®Logiscope RuleChecker. FournituresRapport identifiant tout ce qui peut, potentiellement, être une erreur de codage. |