Подтвердить что ты не робот

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

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

4b9b3361

Ответ 1

Есть всевозможные преимущества:

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

Взгляните на SourceMonitor

Ответ 2

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

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

Ответ 3

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

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

  • понимание рекомендаций FxCop помогает вам стать лучшим разработчиком.

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

Нижняя строка:

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

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

Ответ 4

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

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

Ответ 5

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

Ответ 6

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

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

Ответ 7

FxCop

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

Предупреждения о дизайне

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

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

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

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

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

Предупреждения об именах

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

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

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

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

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

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

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

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

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

Ответ 8

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

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

Ответ 9

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

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

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

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

Ответ 10

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

  • Анализ статического кода идентифицирует обнаружение в программе на ранней стадии, что приводит к снижению стоимости, чтобы исправить их.
  • Он может обнаруживать недостатки в входах и выходах программы, которые не могут быть обнаружены при динамическом тестировании.
  • Он автоматически сканирует нескомпилированные коды и идентифицирует уязвимости.
  • Из того, что я знаю по поводу checkmarkx, заключается в том, что статический анализ кода устраняет множество уязвимостей в одной точке, что экономит много времени для разработчика.