Какие инструменты статического анализа доступны для C #?[закрыто]

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

Вопрос

Какие инструменты доступны для статического анализа кода на C #?Я знаю о FxCop и StyleCop.Есть ли другие?Я уже сталкивался с NStatic раньше, но он находился в разработке, кажется, целую вечность - судя по тому немногому, что я видел, он выглядит довольно гладко, так что было бы неплохо, если бы он когда-нибудь увидел свет.

В том же духе (это в первую очередь мой интерес к статическому анализу) инструменты для тестирования кода на наличие проблем с многопоточностью (взаимоблокировки, условия гонки и т.д.) Также кажутся немного скудными.Только что появился Typemock Racer, так что я посмотрю на это.Что-нибудь сверх этого?

Мы ценим реальные мнения об инструментах, которые вы использовали.

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

Решение

Инструменты обнаружения нарушений кода:

  • Fxcop, отличный инструмент от Microsoft.Проверьте соответствие рекомендациям .net Framework.

    Редактировать Октябрь 2010: Больше не доступен для автономной загрузки.Теперь он включен в Пакет SDK для Windows а после установки можно найти в Program Files\Microsoft SDKs\Windows\ [версия 7.1] \Bin\FXCop\FxCopSetup.exe

    Редактировать Февраль 2018:Теперь эта функциональность была интегрирована в Visual Studio 2012 и более поздние версии в виде Анализ кода

  • Тактовая резкость, основанный на анализе исходного кода (для C # 2.0)
  • Моно.Жандарм, аналогично Fxcop, но с лицензией с открытым исходным кодом (на основе Моно.Сесил)
  • Дымчатый, аналогично Fxcop и Gendarme, основанный на Моно.Сесил.Больше не занимается разработкой, главный разработчик теперь работает с командой Gendarme.
  • Coverity Prevent™ для C#, коммерческий продукт
  • PRQA QA·C#, коммерческий продукт
  • PVS-Студия, коммерческий продукт
  • CAT.NET , надстройка Visual Studio , помогающая выявлять недостатки безопасности
  • CodeIt.Правильно
  • Спецификация#
  • Пекс

Качественные Метрические Инструменты:

  • NDepend, отличный визуальный инструмент.Полезно для анализа метрик кода, правил, различий, связей и зависимостей.
  • Нитрик, свободен, может легко писать свои собственные показатели / ограничения, приятную визуализацию. Редактировать Февраль 2018: ссылки на скачивание теперь мертвы.
  • RSM В Квадрате, основанный на анализе исходного кода
  • Метрики C #, используя полный синтаксический анализ C#
  • Источник - монитор, старый инструмент , который время от времени получает обновления
  • Метрики кода, а Отражатель надстройка
  • Vil, старый инструмент, который не поддерживает .NET 2.0. Редактировать Январь 2018: Ссылка теперь мертва

Инструменты проверки стиля:

Обнаружение дублирования:

  • Обезьяноподобный, основанный на исходном коде.Работает с большим количеством языков.
  • Клонированный, обнаруживает параметризованные клоны только на границах языка (также обрабатывает многие языки, отличные от C #)
  • Детектив - клон плагин Visual Studio.(Он использует КонКАТ внутренне)
  • Атомик, основанный на исходном коде, множестве языков, классной визуализации "колеса"

Общие инструменты рефакторинга

  • Перетачиватель - Чрезвычайно интересные функции анализа кода на C # и рефакторинга

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

Инструмент NDepend цитируется как Качественные Метрические Инструменты но это в значительной степени также Обнаружение нарушений кода инструмент. Отказ от ответственности:Я являюсь одним из разработчиков этого инструмента

С помощью NDepend можно написать Правило кода над запросами LINQ (то, что мы называем CQLinq).Более чем 200 правил кода CQLinq предлагаются по умолчанию.Сила CQLinq в том, что написать кодовое правило несложно, и получить немедленно Результаты.Предлагаются средства для просмотра совпадающих элементов кода.Например:

CQLinq code rule

Помимо этого, NDepend поставляется со многими другими статический анализ, подобный возможности.К ним относятся:

  • Жандарм это статический анализатор с открытым исходным кодом, основанный на правилах (похож на FxCop, но обнаруживает множество различных проблем).
  • Детектив - клон это хороший плагин для Visual Studio, который находит дублирующийся код.
  • Также, говоря о Mono, я нахожу, что процесс компиляции с помощью компилятора Mono (если ваш код достаточно независим от платформы, чтобы сделать это, цель, к которой вы, возможно, захотите стремиться в любом случае) обнаруживает тонны переменных без ссылок и другие предупреждения, которые Visual Studio полностью пропускает (даже с уровнем предупреждения, установленным на 4).

Вы видели CAT. NET ?

Из объявления -

  

CAT.NET - инструмент анализа двоичного кода   что помогает определить общие варианты   определенные преобладающие уязвимости   что может привести к общей атаке   такие векторы, как межсайтовый скриптинг   (XSS), SQL-инъекция и XPath   Инъекции.

Я использовал раннюю бета-версию, и мне показалось, что стоит обратить внимание на несколько вещей.

Помимо превосходного списка от madgnome, я бы добавил детектор дублирующегося кода, основанный на командной строке (но бесплатный):

http://sourceforge.net/projects/duplo/

В Klocwork есть инструмент статического анализа для C #: http://www.klocwork.com

Я нахожу показатели кода и < a href = "http://www.tom-carter.net/" rel = "nofollow noreferrer"> Матрица структуры зависимостей для Reflector очень полезна.

Optimyth Software только что запустила службу статического анализа в облаке www.checkinginthecloud.com . Просто безопасно загрузите ваш код, запустите анализ и получите результаты. Никаких хлопот.

Он поддерживает несколько языков, включая C #; дополнительную информацию можно найти по адресу wwww.optimyth.com

Люкс Axivion Bauhaus это инструмент статического анализа, который работает с C # (а также С, C ++ и Java).

Он предоставляет следующие возможности:

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

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

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