FindBugs для исключений NullPointerException и утечек памяти - PullRequest
3 голосов
/ 12 января 2012

Я пытаюсь использовать FindBugs, чтобы помочь найти очевидные ошибки в моем коде.

Я понимаю, что любой инструмент ограничен в некоторых отношениях, но две наиболее распространенные ошибки, которые я хочуищите:

  • NullPointerExceptions
  • утечки памяти Java

Имеет ли FindBugs возможность их найти?Я уверен, что никто не гарантирует, что все ошибки будут обнаружены, но было бы неплохо, если бы FindBugs мог обнаружить хотя бы часть из них прямо в Eclipse для меня.

Я читал HTML manual и не встречал ничего такого, что упоминало бы эти возможности.

Ответы [ 2 ]

3 голосов
/ 12 января 2012

FindBugs использует статический анализ для поиска ошибок в коде Java. Вы можете получить полезные советы по улучшению кода, но он не может гарантировать, что вы обнаружите утечки памяти или исключения NullPointerException из-за времени выполнения обоих типов проблем. Конечно, вы получите очень хорошие советы о том, как избежать плохих практик, которые могут вызвать утечки памяти и нулевые указатели, но это только отправная точка.

Также проверьте этот вопрос о поиске утечек памяти в Java.

Следующие проверки Findbugs помогают избежать исключения NullPointerException:

  • NP: метод с логическим типом возврата возвращает явный ноль
  • НП: метод клонирования может возвращать ноль
  • NP: метод equals () не проверяет нулевой аргумент
  • NP: метод toString может возвращать ноль
  • NP: разыменование нулевого указателя
  • NP: разыменование нулевого указателя в методе на пути исключения
  • NP: метод не проверяет нулевой аргумент
  • NP: close () вызывается для значения, которое всегда равно нулю
  • NP: нулевое значение гарантированно разыменовано
  • NP: значение равно нулю и гарантированно будет разыменовано в пути исключения
  • NP: вызов метода передает значение NULL в ненулевой параметр
  • NP: метод может возвращать ноль, но объявляется @NonNull
  • NP: проверяется известное нулевое значение, чтобы определить, является ли он экземпляром типа
  • NP: возможное разыменование нулевого указателя
  • NP: возможное разыменование нулевого указателя в методе по пути исключения
  • NP: вызов метода принимает значение NULL для ненулевого параметра
  • NP: вызов метода принимает значение NULL для ненулевого параметра
  • NP: вызов невиртуального метода принимает значение NULL для ненулевого параметра
  • NP: Хранить нулевое значение в аннотированном поле NonNull
  • NP: чтение неписаного поля
  • NP: разыменование результата readLine () без проверки нуля
  • NP: немедленное разыменование результата readLine ()
  • NP: загрузка известного нулевого значения
  • NP: возможное разыменование нулевого указателя из-за возвращаемого значения вызываемого метода
  • NP: возможное разыменование нулевого указателя на ветви, которое может быть недопустимым
  • NP: параметр должен быть ненулевым, но помечен как обнуляемый
  • NP: чтение неписаного публичного или защищенного поля

Некоторые проверки проблем памяти, которые помогут улучшить ваш код:

  • Dm: метод вызывает неэффективный новый конструктор String (String)
  • Dm: метод вызывает неэффективный новый конструктор String ()
  • Dm: метод вызывает неэффективный логический конструктор; используйте Boolean.valueOf (...) вместо
1 голос
/ 12 января 2012

FindBugs достаточно хорош при поиске проблем с нулями.http://findbugs.sourceforge.net/bugDescriptions.html описывает множество ошибок, которые FindBugs может распознать, связанные с нулями.

...