Линтинг C-кода в реальном времени

Я ищу что-то похожее на инструменты анализа JavaScript JSHint или JSLint для C. В моем текстовом редакторе (Sublime Text 2) есть подключаемый модуль JSHint, который дает мне обратную связь в реальном времени с моим кодом JavaScript.

Как лучше всего получить отзыв о качестве моего кода на C? Существуют ли какие-либо инструменты, которые могли бы дать мне линтинг в реальном времени?


person Randomblue    schedule 06.07.2012    source источник
comment
Вы смотрели на Rational Purify или Quantify?   -  person    schedule 06.07.2012
comment
Например, есть VisualLint (требуется cppcheck или PCLint). Но это надстройка для Visual Studio, и я даже не уверен, что она хоть сколько-нибудь полезна для вас.   -  person 0xC0000022L    schedule 06.07.2012
comment


Ответы (6)


Я придумал способ добавить несколько пользовательских линтеров, написанных для SublimeText 2, в смесь, чтобы линтинг работал с SublimeLinter и ANSI C. Также обратите внимание, что это немного «хакерский» способ заставить его работать.

  • У вас должен быть установлен clang (для OS X вы можете использовать инструменты командной строки Apple для установки clang/компилятора LLVM, для которого требуется только бесплатная учетная запись разработчика), у вас также должен быть SublimeLinter установлен в Sublime Text 2

  • Перейдите к форку этого пользователя SublimeLinter и перейдите к загрузке модуля c.py из папки модулей.

  • Скопируйте этот модуль в каталог рабочих модулей SublimeLinter, расположенный в **your SublimeText 2 data directory**\Packages\SublimeLinter\sublimelinter\modules\ (см. это для получения дополнительной информации о каталоге данных)

  • Перезапустите Sublime Text 2



†Убедитесь, что текущий язык в правом нижнем углу -угол окна настроен на «C», а не на «C++», «Python» и т. д.

person Eli    schedule 03.08.2012

Взгляните на статический анализатор Clang и PC-lint и FlexeLint

person Doug Currie    schedule 01.08.2012

Кроме того, ознакомьтесь с cppcheck.

person Ivan Kruglov    schedule 01.08.2012

Пропустить его через ваш компилятор с полными предупреждениями — довольно хороший базовый анализ. Он будет ловить такие вещи, как опечатанные переменные и тому подобное. clang с отключенной оптимизацией достаточно быстр, чтобы использовать его в качестве основы для плагина реального времени, но я не знаю такого для возвышенного текста.

person Jason    schedule 31.07.2012

У вас достаточно представителей, и я чувствую, что это может быть слишком очевидным предложением, но похоже, что вы в основном выиграете от IDE? например, Затмение. Я разрабатываю в Eclipse/Java, и он довольно агрессивен в отношении ошибок/предупреждений, определенно больше, чем я видел компилятор.

person djechlin    schedule 01.08.2012

Поскольку этот вопрос был задан и на него был дан ответ, теперь есть несколько вариантов C/C++ linting в Sublime, которые немного более удобны для пользователя, чем принятый ответ. Все это плагины для SublimeLinter. Я рекомендую использовать Package Control в качестве менеджера пакетов для Sublime Text (как и авторы плагинов).

Во-первых, установите Sublime Linter, если он у вас еще не установлен (это довольно популярный фреймворк для нескольких языков). . Его проще всего установить через контроль пакетов, как рекомендуют авторы, но больше информации есть на сайте github. После установки Sublime Linter теперь существует от двух до четырех различных дополнительных пакетов для анализа кода C и C++.

Два из них используют для проверки сам компилятор C/C++; это SublimeLinter-gcc и SublimeLinter-clang. Оба могут быть установлены через Package Control и предоставляют SublimeLinter интерфейс для соответствующего базового компилятора. Пакет gcc позволяет легко указать, какой исполняемый файл компилятора вы хотите использовать, на случай, если вы захотите проверить код на кросс-компиляцию.

Два других являются интерфейсами к cpplint и cppcheck соответственно. Эти два также доступны в Package Control, и, несмотря на названия, кажется, что оба будут анализировать код C и C++.

Обратите внимание, что вы, вероятно, хотите, чтобы только одна из этих опций была включена за раз, хотя установка SublimeLinter позволяет вам установить несколько опций и включить только одну через секцию опций "linters": {...}.

person bjarchi    schedule 03.05.2018