Считаете ли вы полезными анализаторы исходного кода? - PullRequest
6 голосов
/ 07 января 2009
  • Вы используете анализаторы исходного кода? Если да, то какие и для какого языкового развития?
  • Считаете ли вы их полезными для решения потенциальных ошибок в вашем коде? Или большинство их предупреждений тривиально?
  • После длительного использования качество вашего кода будет выше, чем раньше?

Ответы [ 7 ]

3 голосов
/ 07 января 2009

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

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

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

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

Наконец, Cobertura - отличный набор для тестирования. Очень удобно для определения, где отсутствуют модульные тесты и где вы должны отдавать предпочтение созданию новых тестов.

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

Я запускаю эти инструменты как в Eclipse, так и в составе автоматизированного пакета сборки.

1 голос
/ 07 января 2009

Я использовал Resharper и MS TS (в основном FXCop), и оба они весьма полезны, особенно в следующих областях:

  • Идентификация мертвого кода
  • Широкая сфера применения
  • Улучшения производительности (связанные с глобализацией и т. Д.)

Рекомендации не всегда хороши, но в целом улучшают качество кода.

1 голос
/ 07 января 2009

Для C я использую MEMWATCH . Это действительно удобно и бесплатно.

Я использовал его, чтобы найти много ошибок памяти в прошлом.

1 голос
/ 07 января 2009

Я длительный пользователь PC-Lint для C и C ++ и считаю его очень полезным. Эти инструменты наиболее полезны при освоении кодовой базы, с которой вы незнакомы. Со временем вы попадаете в закон убывающей доходности, где количество обнаруженных вами новых ошибок, как правило, уменьшается.

Я до сих пор не могу оторвать полный проект от большого релиза.

Редактировать: в Википедии есть хороший список подходящих инструментов здесь

0 голосов
/ 07 января 2009

Я считаю, что анализаторы несколько полезны, я использую buildin для visual studio (например, / анализ для c / c ++ и пользовательские правила для .net), иногда я использую stylecop и codeitright для c # в основном для руководства, как все должно быть.

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

Да, качество вашего кода НЕКОТОРЫЕ лучше, чем раньше, но я также считаю, что ручная отладка все еще необходима. Анализаторы источников не являются окончательным лекарством, хотя они являются хорошим лекарством. Если бы был инструмент, который вы просто запустили бы, нашли бы какие-либо ошибки и исправили бы его для вас, это стоило бы миллионы.

Некоторые знакомые мне программисты клянутся, что IBM Rational PurifyPlus великолепен, но, по их мнению, у меня было всего 2-3 сеанса работы с инструментом.

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

PS. Я склонен выдавать гораздо меньше ошибок в C #, чем в C ++, кто-то может сказать, что я неправ, но хотя я использую c ++ больше лет, чем c #, я нахожу «закодируй это, и я позабочусь об этом», подход gc к C # гораздо проще, чем c ++ особенно для проектов, которые вы спешите закончить в срок / срок, который КАЖДЫЙ проект похож на эти дни ...

0 голосов
/ 07 января 2009

Я очень доволен ReSharper . Мало того, что он дает полезные биты информации при кодировании (например, ненужное приведение, применение только для чтения и т. Д.), Но его функции рефакторинга отлично подходят для очень быстрой перестройки кода.

Он не охватывает все, поэтому FxCop (или аналогичный) является достойным дополнением к набору инструментов. Однако, поскольку Resharper дает немедленную обратную связь, время выполнения заказа действительно хорошее. (Я знаю, что FxCop может быть запущен из VS, но это не то же самое, что Imo).

0 голосов
/ 07 января 2009

Я использую StyleCop для C #. Это отличный инструмент для поддержания согласованного стиля кода, который ведет к улучшению качества кода. Также ReSharper выполняет некоторый анализ кода, но он довольно простой.

...