Преимущества статического анализа кода

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

  •  01-07-2019
  •  | 
  •  

Вопрос

Каковы преимущества статического анализа вашего исходного кода?Я поиграл с FxCop, и мне стало интересно, есть ли какие-то преимущества помимо уверенности в том, что вы следуете стандартам кодирования.

Это было полезно?

Решение

Есть все виды преимуществ:

  1. Если в вашем коде есть антишаблоны, вы можете быть предупреждены об этом.
  2. Существуют определенные показатели (такие как цикломатическая сложность Маккейба) , которые рассказывают полезные вещи об исходном коде.
  3. Вы также можете получить отличные материалы, такие как графики вызовов и диаграммы классов из статического анализа.Это замечательно, если вы атакуете новую кодовую базу.

Взгляните на Источник - монитор

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

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

В любом случае, только разумное сочетание профилирования (динамического анализа или анализа во время выполнения) и статического анализа / компоновки обеспечит согласованную и надежную кодовую базу.О, это, и немного удачи ;-)

Это компромисс.Для отдельного разработчика, который хочет улучшить свое понимание фреймворка и руководящих принципов, я бы определенно рекомендовал это.FxCop генерирует много шума / ложных срабатываний, но я также обнаружил следующие преимущества:

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

  • понимание руководящих принципов, которым следует FxCop, поможет вам стать лучшим разработчиком.

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

Итог:

  • Если вы разрабатываете повторно используемые библиотеки классов, такие как собственный фреймворк, убедитесь, что у вас есть хорошие разработчики, и используйте FxCop.

  • Для повседневной разработки приложений с участием команд со смешанными возможностями это, вероятно, будет непрактично.

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

стандарты кодирования можно проверить с помощью стилкоп, который проверяет исходный код вместо MSIL, как это делает fxcop.

Он может обнаруживать реальные ошибки, например, забывая утилизировать IDisposables.

Зависит от правил, но можно избежать многих незначительных дефектов, очистить код, обнаружить потенциальные проблемы с производительностью и т.д.

Скажем так ... если это дешево или бесплатно (как по времени, так и по финансовым затратам) и ничего не ломает, почему бы не воспользоваться этим?

FxCop

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

Предупреждения о проектировании

Предупреждения, поддерживающие правильную библиотеку дизайн в соответствии с рекомендациями по разработке .NET Framework.

Предупреждения о глобализации

Предупреждения о том, что в мире поддержка-готов библиотек и приложений.

Предупреждения о совместимости

Предупреждения, поддерживающие взаимодействие с COM-клиентами.

Присвоение имен предупреждениям

Предупреждения, подтверждающие соблюдение соглашений об именовании в руководствах по разработке .NET Framework.

Предупреждения о производительности

Предупреждения, поддерживающие высокую производительность библиотеки и приложения.

Предупреждения о безопасности

Предупреждения, поддерживающие более безопасные библиотеки и приложения.

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

Другие инструменты

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

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

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

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

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

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

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

Более подробное описание методов и преимуществ также можно найти на этой странице: www.mathworks.com/static-analysis

Я постараюсь описать основные из них:

  • Статический анализ кода выявляет обнаруженные ошибки в программе на ранней стадии, что приводит к снижению затрат на их исправление.
  • Он может обнаруживать недостатки во входных и выходных данных программы, которые не могут быть замечены при динамическом тестировании.
  • Он автоматически сканирует некомпилированные коды и выявляет уязвимости.
  • Из того, что я знаю из работы с checkmarx, так это то, что статический анализ кода устраняет несколько уязвимостей в одной точке, что экономит много времени разработчику.
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top