Et là je me suis rendu compte qu'il n'existait aucune règle PMD qui permettait de vérifier si avant d'appeler une méthode d'un objet, un test de nullité de cet objet avait été fait.
En gros est-ce que j'avais des blocs de code comme ca :
Objet obj=getObjectFromAnotherMethod();//potentially null !
obj.doSomething();
Alors qu'il faudrait mieux avoir :
Objet obj=getObjectFromAnotherMethod();//potentially null !
if(obj!=null)
obj.doSomething();
J'ai donc remonté mes manches et suis assez fier de vous présenter la règle PMD XPath qui permet de vérifier cette bonne pratique !
//MethodDeclaration/Block/
/PrimaryPrefix/Name
[substring-before(@Image,".")=
./ancestor::Block/
[not (../VariableInitializer/
and not(../..//PrimitiveType)
and not (../VariableInitializer/
/@Image
and
not( substring-before(@Image,".
./ancestor::BlockStatement/
[../../..//NullLiteral]
/
]
N'hésitez pas à me faire des commentaires si la règle n'est pas satisfaisante, si vous avez des cas où elle marche pas !
Aucun commentaire:
Enregistrer un commentaire