Как избежать ложноположительной ошибки «Null Dereference» в FortifyJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Как избежать ложноположительной ошибки «Null Dereference» в Fortify

Сообщение Anonymous »

Я использую «HP Fortify v3.50» в Java-проекте и обнаружил много ложных срабатываний при «Разыменовании нуля», поскольку Fortify не видит, что контроль против значения null находится в другом методе.
Как я могу уменьшить количество ложных срабатываний и сохранить правило?

Вот POC

public class MyClass {
public static void main(String[] args) {
String string01 = null;
String string02 = null;
int i;

if (args[0].equals("A")) {
string01 = "X";
string02 = "Y";
}

if (!isNull(string02)){
i = string02.length();} //False Positive
else {
i = string02.length();
} // Yes, it is an error!
}

public static boolean isNull(Object toBeTested){
return (null == toBeTested);
}
}




Результат:

[E8837DB548E01DB5794FA71F3D5F51C8 : medium : Null Dereference : controlflow ]
MyClass.java(13) : Assigned null : string02
MyClass.java(16) : Branch not taken: (!args[0].equals("A"))
MyClass.java(20) : Branch taken: (!isNull(string02)) //False Positive
MyClass.java(21) : Dereferenced : string02

[E8837DB548E01DB5794FA71F3D5F51C9 : medium : Null Dereference : controlflow ]
MyClass.java(13) : Assigned null : string02
MyClass.java(16) : Branch not taken: (!args[0].equals("A"))
MyClass.java(20) : Branch not taken: isNull(string02)
MyClass.java(23) : Dereferenced : string02


Подробнее здесь: https://stackoverflow.com/questions/128 ... in-fortify
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»