Обнаружение фортификации: нулевое разыменование - PullRequest
1 голос
/ 08 января 2020

Я прочитал кучу других вопросов об отмене ссылок Fortify null здесь, но ни один из них не подходит или не кажется столь же базовым c, как тот, который возник в нашем проекте. При сканировании этого блока кода:

    private GenderCode gender;
    .
    .
    .
    if (gender != null) {
      subject.setGender(gender.getName());
    } else {
      subject.setGender(null);
    }

Укажите флажки subject.setGender(null) в качестве возможной нулевой отмены ссылки. Для меня это абсолютно бессмысленно - все, что мы делаем, это явно устанавливаем значение в нуль. Обратите внимание, что в локальном классе пол имеет тип GenderCode, а в предметном классе пол - это строка. Исходный код, который у нас был:

subject.setGender(gender != null ? gender.getName() : null);

, также был помечен. Какая переменная может быть разыменована здесь? Мы только устанавливаем атрибут на другом объекте в нуль! Совершенно законно. Кроме того, код специально устанавливает значение null в блоке if-then-else, который должен указывать для Fortify, что да, мы делаем это специально - мы знаем, что устанавливаем пол ( атрибут String объекта-объекта) в значение null. Почему это помечено и есть простое, не запутанное решение, которое успокаивает богов-укрепителей?

...