Для обнаружения разыменования нулевого указателя в программировании можно использовать следующие методы:
- Сигнатурный анализ. habr.com В этом случае пишется сигнатура, которая ищет в абстрактном синтаксическом дереве (AST) узел типа «условный оператор», в условии которого есть выражение вида! а, a==0 и пр., а в теле оператора есть обращение к этому объекту или разыменование этого указателя. habr.com После этого необходимо отфильтровать ложные срабатывания. habr.com
- Symbolic execution. habr.com Во время работы анализатор «следит», какие значения могут иметь переменные. habr.com После обработки условия if (!a) анализатор понимает, что в теле условного оператора переменная a равна нулю. habr.com Соответственно, её разыменование можно считать ошибкой. habr.com
Также для обнаружения ошибок до выполнения программы можно использовать статический анализатор кода. sky.pro