Как зайти в Даркнет?!
25th January, 01:11
6
0
Как в tkinter из поля ввода Entry получить значение в одну переменную и обновить строку кнопкой, затем получить ещё одно введённое значение и затем сложить их. Ниже пример кода
21st July, 19:00
895
0
Программа, которая создает фейковые сервера в поиске игровых серверов CS 1.6 Steam
21st March, 17:43
948
0
Очень долго работает Update запрос Oracle
27th January, 09:58
914
0
не могу запустить сервер на tomcat HTTP Status 404 – Not Found
21st January, 18:02
906
0
Где можно найти фрилансера для выполнения поступающих задач, на постоянной основе?
2nd December, 09:48
938
0
Разработка мобильной кроссплатформенной военной игры
16th July, 17:57
1724
0
период по дням
25th October, 10:44
3955
0
Пишу скрипты для BAS только на запросах
16th September, 02:42
3720
0
Некорректный скрипт для закрытия блока
14th April, 18:33
4613
0
прокидывать exception в блоках try-catch JAVA
11th March, 21:11
4381
0
Помогите пожалуйста решить задачи
24th November, 23:53
6086
0
Не понимаю почему не открывается детальное описание продукта
11th November, 11:51
4351
0
Нужно решить задачу по программированию на массивы
27th October, 18:01
4396
0
Метода Крамера С++
23rd October, 11:55
4309
0
помогите решить задачу на C++
22nd October, 17:31
4002
0
Помогите решить задачу на python с codeforces
22nd October, 11:11
4492
0
Python с нуля: полное руководство для начинающих
18th June, 13:58
2599
0
Выбор инструмента статического анализа кода
Я работаю над проектом, где я кодирую в C в среде UNIX. Я использовал инструмент lint, чтобы проверить свой исходный код. Lint существует уже давно (с 1979 года), может ли кто-нибудь предложить более новый инструмент анализа кода, который я мог бы использовать ? Желательно инструмент, который является бесплатным.
Не упускайте из виду сам компилятор.
Прочитайте документацию компилятора и найдите все предупреждения и ошибки, которые он может предоставить, а затем включите столько, сколько будет иметь смысл для вас.
Кроме того, не забудьте сказать своему компилятору, чтобы он рассматривал предупреждения как ошибки, поэтому вы должны немедленно их исправить. ("- Werror " на gcc)
Также: "- Wall " на gcc не включает все предупреждения, не обманывайтесь.
Также: выезд valgrind (бесплатно!)- это " автоматически detect[s] многие ошибки управления памятью и потоками, а также profile[s] ваши программы в деталях."
Valgrind-это не статическая проверка, но это отличный инструмент! http://valgrind.org
Для кода C вам определенно следует использовать Flexelint . Я пользовался им почти 15 лет и клянусь им. Одна из действительно замечательных особенностей этого приложения заключается в том, что предупреждения можно выборочно отключать и включать с помощью комментариев в коде ("/* lint -e123*/"). это оказалось мощным инструментом документирования, когда вы хотели что-то необычное. "Я отключаю предупреждение X, следовательно, есть какая-то веская причина, по которой я делаю X."
Для тех, кто интересуется интересными вопросами C/C++, посмотрите на некоторые из их примеров на своем сайте и посмотрите, сможете ли вы понять ошибки, не глядя на подсказки.
Я слышал много хорошего о статическом анализаторе clang, который IIRC использует LLVM в качестве бэкенда. Если это реализовано на вашей платформе, это может быть хорошим выбором.
Насколько я понимаю, он делает немного больше, чем просто синтаксический анализ. Например, "автоматическое обнаружение ошибок".
Мы использовали Coverity Prevent , чтобы проверить исходный код C++.
Это не бесплатный инструмент (хотя я считаю, что они предлагают бесплатное сканирование для проектов с открытым исходным кодом), но это один из лучших инструментов статического анализа, которые вы найдете. Я слышал, что это даже более впечатляюще на C, чем на C++, но это помогло нам избежать большого количества ошибок до сих пор.
Линтообразные инструменты обычно страдают от проблемы "false alarm": они сообщают о гораздо большем количестве проблем, чем реально существуют. Если доля действительно полезных предупреждений слишком мала, пользователь учится просто игнорировать инструмент. Более современные инструменты требуют определенных усилий, чтобы сосредоточиться на наиболее вероятных/интересных предупреждениях.
Вы можете найти инструмент Uno полезным. Это один из немногих бесплатных вариантов без игрушек. Он отличается от корпии, Флекселинта и др. при сосредоточении внимания на небольшом количестве ошибок "semantic" (null deref указателя, out-of-bounds индексов массива и использование неинициализированных переменных). Он также позволяет выполнять определенные пользователем проверки, такие как дисциплина блокировки-разблокировки.
Я работаю над публичным выпуском нового инструмента Orion (контент больше не доступен )
PC-lint/Flexelint - это очень мощные и полезные инструменты статического анализа, которые легко настраиваются, но, к сожалению, не бесплатны.
При первом использовании такого инструмента, как этот, они могут выдавать огромное количество предупреждений, которые могут затруднить различение между главными и второстепенными. Поэтому лучше всего начать использовать инструмент в своем коде как можно раньше в проекте, а затем запускать его в своем коде как можно чаще, чтобы вы могли иметь дело с новыми предупреждениями по мере их появления.
При таком постоянном использовании вы вскоре научитесь писать свой код таким образом, чтобы он соответствовал правилам, применяемым инструментом.
Из-за этого я предпочитаю такие инструменты, как Lint, которые работают относительно быстро и поэтому поощряют постоянное использование, а не более громоздкие инструменты, которые вы можете использовать реже, если вообще используете.
Вы можете попробовать CppDepend, довольно полный статический анализатор, доступный на windows и linux, через плагин VS, IDE или командную строку, и это бесплатно для участников с открытым исходным кодом
Я обнаружил, что обычно лучше всего использовать несколько инструментов статического анализа для поиска ошибок. Каждый инструмент разработан по-разному, и они могут найти очень разные вещи друг от друга.
В некоторых выступлениях здесь есть хорошие дискуссии . Это из конференции, проведенной Министерством внутренней безопасности США по статическому анализу.
Добрый день,
Я полностью согласен с предложениями прочитать и переварить то, что компилятор говорит вам после установки-Wall.
Хорошим инструментом статического анализа для обеспечения безопасности является FlawFinder , написанный Дэвидом Уилером. Он делает хорошую работу в поисках различных эксплойтов безопасности,
Однако это не заменяет того, что кто-то знающий читает ваш код. Как говорит Дэвид на своей веб-странице, "A fool with a tool is still a fool!"
овации,
Грабить
Sparse - это компьютерный программный инструмент, уже доступный на Linux, предназначенный для поиска возможных ошибок кодирования в Linux kernel.
Существует два активных проекта Центра верификации Linux , направленных на улучшение качества загружаемых модулей kernel.
- Linux Driver Verification (LDV) - полный набор инструментов для статической проверки исходного кода драйверов устройств Linux.
- KEDR Framework-это расширяемая платформа для динамического анализа и верификации модулей kernel.
- Еще одним текущим проектом является проверка Linux файловой системы, которая направлена на разработку специального набора инструментов для проверки реализаций Linux файловой системы.