C/С++ Свободная альтернатива Lint?

Мне интересен бесплатный инструмент, который может статически проверять мой код на С++, например, Lint. Любые подсказки?

Ответ 1

Попробуйте cppcheck, найти здесь: http://cppcheck.sourceforge.net/

Здесь выполняется выборка некоторых проверок, которые она может выполнить или которые я использовал для:

  • Индексы массива за пределами границ
  • Утечка памяти/ресурсов
  • Неправильное новое/удаление
  • Невозможность поместить виртуальные деструкторы на производные классы
  • Несоответствие распределения и освобождения
  • Передача освобожденного указателя
  • Использование переменной после ее освобождения/освобождения
  • Несоответствие размера
  • Недопустимый радиус при вызове strtol или strtoul
  • Перекрытие буферов данных
  • Неподписанное разделение; результат может быть неправильным
  • Необычная арифметика указателей
  • Возвращаемый указатель на переменную локального массива
  • Тот же итератор используется с двумя контейнерами
  • Опасное использование стирания
  • После pushback или pushfront, итератор может быть недействительным
  • Переполнение буфера
  • Опасное использование strncat, возможный переполнение буфера

Ответ 3

Еще один инструмент для списка: Google cpplint.py, руководство по стилю Google С++ упоминает. Это очень специфично для Google, но тем не менее.

Ответ 4

Лично я попробовал cppcheck (v1.4) и нашел его безнадежным.

например. Этот пример был правильно обнаружен для массива за пределами границ:

int a[4];
for (int n = 0; n < 5; n++)
{
  a[n] = n;
}

Но этот пример не был обнаружен:

int a[4];
int z = 4 + 1;

for (int n = 0; n < z; n++)
{
  a[n] = n;
}

Ответ 6

Возможно, вы захотите проверить этот проект:

  • Vera ++ на основе пользовательских правил (написанных в Tcl, Python или Lua)

И несколько не бесплатных:

Ответ 7

Недавно я прочитал о DeHydra и Pork, используемый Mozilla, хотя я сам не пробовал.

Ответ 8

Попробуйте nsiqcppstyle, средство проверки стиля С++, написанное на python.