Инструменты анализа кода C++

Каждый элемент foreach будет обрабатывать объекты так же, как массивы.

Это должно сделать ...

foreach ($sku->price as $price) {
    foreach ($price as $id => $amount) {
        echo $id , ' ' , $amount , "\n";
    }
}
7
задан Whatsit 13 February 2009 в 16:41
поделиться

8 ответов

Включите максимальные предупреждения компилятора (это -Wall опция, если Вы используете компилятор Гну).

'Линт' является архитипичным инструментом статического анализа.

valgrind хороший анализатор во время выполнения.

17
ответ дан 6 December 2019 в 05:01
поделиться

Я думаю, что у Вас должны быть некоторые лекции о хороших методах и почему они хороши. Это должно помочь Вам больше, чем инструмент анализа кода (в начале, по крайней мере).

Я предполагаю, что Вы читаете серию Эффективного C++ и ** Эффективные книги STL, по крайней мере. См. alsot Категорическое Книжное Руководство C++ и Список

6
ответ дан 6 December 2019 в 05:01
поделиться

Для g ++, а также включающий - Стена, включают - педантичный также и готовятся быть удивленным количеством проблем, которые это находит!

5
ответ дан 6 December 2019 в 05:01
поделиться

Поддержка инструмента C++ довольно плоха по сравнению с Java, C#, и т.д. потому что это не имеет контекстно-свободной грамматики. На самом деле существуют части грамматики C++, которые неразрешимы. В основном это означает, что понимание кода C++ на синтаксическом уровне требует реализации в значительной степени фронтэнд компилятора с семантическим анализом. C++ не может быть проанализирован в AST независимо от семантического анализа и большинство инструментов анализа кода в IDE, и т.д. работать на уровне AST. Это - часть компромисса, который Вы делаете в обмен на гибкость и назад совместимость C++.

3
ответ дан 6 December 2019 в 05:01
поделиться

линт - существует много версий, но если Вы гуглите для линта, необходимо найти тот, который работает. Другая вещь сделать, включают Ваши предупреждения компилятора - если Вы используете gcc/g ++, опция - Стена.

Вы могли бы найти CppChecker полезным как плагин для Eclipse, который поддерживает gcc/PC линт.

2
ответ дан 6 December 2019 в 05:01
поделиться

Включение всех предупреждений компилятора (по крайней мере первоначально) и затем понимание, что они имеют в виду, как решить выделенные проблемы и какое из предупреждений представляет подлинные конструкции, которые разработчики компилятора могли бы считать неоднозначным, являются хорошим первым шагом.

При необходимости в чем-то более мощном Вы могли бы попробовать Линт ПК, если Вы находитесь в Windows, который является все еще одним из лучших инструментов линта для C++. Просто имейте в виду, что необходимо будет настроить эти инструменты для отражения стиля кодирования, иначе Вы будете затопляться предупреждениями и не сможете видеть лес для деревьев. Да, это стоит денег, и это - вероятно, немного излишества, если Вы не делаете C++ на "том, чтобы быть оплаченным его" уровень, но я нахожу это неоценимым.

3
ответ дан 6 December 2019 в 05:01
поделиться

Существует как список статических инструментов анализа кода в Википедии.

Но предупреждения обычно хороши, но одной проблемой с включением всех предупреждений с педантичным и Стеной является количество предупреждений, которые Вы могли бы получить от включения заголовков, что Вы не имеете никакого контроля, это может создать много шума. Я предпочитаю компилировать свое собственное программное обеспечение со всеми включенными предупреждениями все же. Поскольку я программирую в Linux, мне обычно нравится это:

Поместите внешние заголовки, которые я должен включать в отдельный файл, и в начале того файла перед помещенным включением:

#pragma GCC system_header

И затем включайте этот файл из своего кода. Это позволяет Вам видеть все предупреждения из своего собственного кода без него являющийся утонувшим в предупреждениях из внешнего кода. Оборотная сторона - то, что это - gcc определенное решение, я не знаю ни о каком независимом от платформы решении этого.

3
ответ дан 6 December 2019 в 05:01
поделиться

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

Однако это - трудное для привыкания к. Необходимо будет написать код только для отладки целей, например, выписать чеки после каждой строки, еще не отлаженной, чтобы гарантировать, что результат как ожидалось, или распечатайте значения к консоли или в окнах сообщения так, чтобы можно было проверить их сами. Его утомительное, но позволит Вам взять на Ваших ошибках более легко, внутри или снаружи IDE.

Загрузите и попробуйте некоторые бесплатные средства отладки как GDB также, они могут помочь Вам зондировать память, и т.д., не имея необходимость писать Ваш собственный код.

2
ответ дан 6 December 2019 в 05:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: