Считаете ли вы анализаторы исходного кода полезными?

StackOverflow https://stackoverflow.com/questions/419637

Вопрос

  • Используете ли вы анализаторы исходного кода?Если да, то какие из них и для развития какого языка?
  • Считаете ли вы их полезными для устранения потенциальных ошибок в вашем коде?Или большинство их предупреждений тривиальны?
  • Считаете ли вы, что после длительного использования качество вашего кода стало выше, чем раньше?
Это было полезно?

Решение

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

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

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

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

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

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

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

Другие советы

Для C я использую ЧАСЫ ПАМЯТИ.Это действительно простой в использовании и бесплатный.

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

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

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

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

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

Я всегда остаюсь приверженцем полноценного проекта lint на большом релизе.

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

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

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

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

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top