Ich habe ein Muster in falsch positiven Ergebnissen von Coverity Scan gefunden. Ich habe eine Schnittstelle I
und zwei Implementierungen IImpl
und FakeI
Unterdrückung einer Null-Dereferenzierungswarnung in der statischen Analyse, die von Stub-Implementierungen in Tests stammt
interface I {
String f();
}
class IImpl {
String f() {
return "f";
}
}
class FakeI {
String f() {
return null;
}
}
dieser Code gegeben, wenn ich folgendes
I i;
i.f().equals(other);
ich eine Null-Dereferenzierung Warnung erhalten dann tun, weil aufgrund der i.f()
könnte möglicherweise sei das null von FakeI
. Die FakeI
ist in Testcode implementiert, so dass mein Produktionscode es nicht einmal sieht. Aber Coverity weiß das nicht.
Was sind die möglichen Lösungen? Ich dachte, entweder Testcode vollständig aus der Analyse zu entfernen oder meine Fälschungen erneut zu überprüfen und sicherzustellen, dass sie nicht null zurückgeben. Gibt es eine Coverity-Funktion, die dabei helfen könnte?
Wenn Sie den Rückgabewert überprüfen, bevor Sie ihn verwenden, sollte die Beschwerde wegfallen. – tipaye