Использование встроенной системы LINT

8

В настоящее время я занимаюсь разработкой встраиваемых систем с использованием ряда различных компиляторов, наиболее распространенными из которых являются системы IAR.

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

Я много раз читал, что хороший Lint неоценим для кода. Я хотел бы знать, использует ли кто-нибудь здесь Lint, какой это Lint, и насколько он помогает в обнаружении ошибок.

Kortuk
источник

Ответы:

4

Я использовал ворс в прошлом, и я нашел это полезным. Однако мне пришлось прекратить использовать его, поскольку я перешел на более крупный проект, который его не использовал. Это затрудняло использование lint из-за взаимосвязанности кода. Самая большая проблема с lint - это настройка для удаления ложных срабатываний. Может быть лучше сейчас, когда они выпустили еще один релиз в прошлом году.

Одна компания, с которой я работаю, взяла этот большой проект и провела его через статический анализатор Coverity. Тем не менее, это большой кусок денег для использования, поэтому он не рекомендуется для небольших компаний.

Джей Аткинсон
источник
Я прочитал, что я должен ожидать потратить время, чтобы заставить его перестать выдавать ложные срабатывания. Какой ворс вы выбрали для использования в то время?
Кортук
В то время это была версия 8.0.
Джей Аткинсон
Вы знаете, какая компания сделала это, есть много разных программ Lint. Мне сказали, что он называется lint из-за маленьких кусочков lint, которые он находит, что компилятор пропускает.
Кортук
1
Извините, Gimpel PC-LINT. Что приятно, так это то, что они, по крайней мере, помогают вам приручить вывод некоторых предопределенных наборов правил на основе используемого вами компилятора и редактора. Они доступны для скачивания на их сайте: gimpel.com
Джей Аткинсон
Если ваша новая база исходного кода выплевывает много «ложных срабатываний», это, к сожалению, обычно не работает.
Тим Уиллискрофт
6

Я не использовал lint, но обнаружил, что предупреждения GCC могут обнаружить много ошибок программирования.

Вот мои любимые CFLAGS

CFLAGS + = -Werror -W -Wall -ansi -pedantic -Wformat-nonliteral -Wcast-align -Wpointer-arith -Wbad-function-cast -Wmissing-прототипы -Wstrict-prototypes -Wmissing-декларации -Winline -Wundef -Wnested- externs -Wshadow -Wconversion -Wwrite-strings -Wno-преобразование -Wextra -Wstrict-aliasing -Wcast-qual

Я также попробовал с Sparse Линуса Торвальдса для статического анализа. Но я думаю, что такие инструменты более полезны для больших систем.

Тоби джеффи
источник
большинство систем, с которыми я работаю, имеют диапазон кода в 50 тысяч строк.
Кортук
3

Должен признаться, я не особо использовал какой-то ворс на проекте микроконтроллера / микропроцессора.

В моем текущем встроенном проекте, который использует C ++ на ПК / 104 SBC на основе Linux, мы использовали cppcheck (работает и с C!). Он работает довольно хорошо, хотя у него есть проблемы со сложными деревьями наследования классов. И это дало некоторую ценность - это хорошо для проверки потенциальных мест, где могут произойти утечки памяти. Но большинство вещей, которые он отметил, были стилистическими - используйте преинкремент вместо постинкремента в цикле for, такого рода вещи.

Я также использовал онлайн-линк для Javascript при разработке приложений для корпоративной системы программного обеспечения. Это было абсолютно бесценно, так как не было никаких средств отладки для проверки синтаксических ошибок в этой настройке.

Дж. Полфер
источник