J'ai rencontré un motif dans les résultats faux positifs de Coverity Scan. J'ai une interface I
, et deux implémentations, IImpl
et FakeI
Suppression d'un avertissement de déréférencement nul dans l'analyse statique provenant des implémentations de stub dans les tests
interface I {
String f();
}
class IImpl {
String f() {
return "f";
}
}
class FakeI {
String f() {
return null;
}
}
Compte tenu de ce code, si je fais alors le suivant
I i;
i.f().equals(other);
Je reçois un avertissement de déréférence NULL, car la suite de i.f()
pourrait peut-être être nul à partir de FakeI
. Le FakeI
est implémenté dans le code de test, donc mon code de production ne le voit même pas. Mais Coverity ne le sait pas.
Quelles sont les solutions possibles? Je pensais soit supprimer complètement le code de test de l'analyse, ou revoir mes faux et m'assurer qu'ils ne renvoient pas de null. Y at-il une fonctionnalité de couverture qui pourrait aider à gérer cela?
Si vous vérifiez la valeur de retour avant de l'utiliser, la plainte devrait disparaître. – tipaye