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

174

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

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

Реальные мнения об используемых вами инструментах приветствуются.

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

Ответы:

341

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

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

    Изменить октябрь 2010 года: больше не доступен в качестве отдельной загрузки. Теперь он включен в Windows SDK и после установки находится в папке Program Files \ Microsoft SDK \ Windows \ [v7.1] \ Bin \ FXCop \ FxCopSetup.exe.

    Редактировать февраль 2018 года . Эта функциональность теперь интегрирована в Visual Studio 2012 и более поздних версий, как Анализ кода

  • Clocksharp , основанный на анализе исходного кода (до C # 2.0)

  • Mono.Gendarme , похожий на Fxcop, но с лицензией с открытым исходным кодом (на основе Mono.Cecil )

  • Smokey , похожий на Fxcop и Gendarme, основан на Mono.Cecil . Больше не в разработке, основной разработчик теперь работает с командой Жандарма.

  • Coverity Prevent ™ для C # , коммерческий продукт

  • PRQA QA · C # , коммерческий продукт

  • PVS-Studio , коммерческий продукт

  • CAT.NET , надстройка для Visual Studio, помогающая выявить недостатки в безопасности. Править ноябрь 2019 года. Ссылка не работает.

  • CodeIt.Right

  • Spec #

  • Pex

  • SonarQube , FOSS и коммерческие опции для поддержки написания более чистого и безопасного кода.

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

  • NDepend , отличный визуальный инструмент. Полезно для метрик кода, правил, различий, связей и исследований зависимостей.
  • Nitriq , бесплатно, может легко написать свои собственные метрики / ограничения, хорошие визуализации. Редактировать февраль 2018 года: ссылки на скачивание теперь неактивны. Изменить 17 июня 2019 года: ссылки не умерли.
  • RSM Squared , основанный на анализе исходного кода
  • Метрики C # , используя полный анализ C #
  • SourceMonitor , старый инструмент, который иногда получает обновления
  • Code Metrics , надстройка Reflector
  • Vil , старый инструмент, который не поддерживает .NET 2.0. Изменить январь 2018 года: ссылка теперь не работает

Проверка инструментов стиля:

  • StyleCop , инструмент Microsoft (запускается из Visual Studio или интегрируется в проект MSBuild). Также доступно как расширение для Visual Studio 2015 и C # 6.0
  • Агент Смит , плагин проверки стиля кода для ReSharper

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

  • Simian , на основе исходного кода. Работает с множеством языков.
  • CloneDR , обнаруживает параметризованные клоны только на границах языка (также обрабатывает многие языки, кроме C #)
  • Детектор клонов для плагина Visual Studio. (Он использует ConQAT внутри)
  • Atomiq , на основе исходного кода, много языков, классная визуализация "колеса"

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

  • ReSharper - отличные возможности анализа и рефакторинга кода на C #
Julien Hoarau
источник
4
См. Страницу MSDN о FxCop: msdn.microsoft.com/en-us/library/bb429476%28VS.80%29.aspx "FxCop - это приложение, которое анализирует сборки управляемого кода (код, предназначенный для общеязыковой среды выполнения .NET Framework) и сообщает информацию о сборках, таких как возможные улучшения дизайна, локализации, производительности и безопасности ".
Сара Весселс
Ссылка FxCop была удалена с сайта Microsoft. Вот "загрузка" FxCop 10.0: microsoft.com/downloads/…
ulrichb
Это симан : harukizaemon.com/simian/index.html ? (вы получили неработающую ссылку). Также вроде бы только .NET 1.1.
Theraot
@Theraot Спасибо, я изменил URL. Что касается версии .NET, Simian может работать на .NET 1.1 на Java 5, но это не значит, что он обнаруживает дублирование в других версиях .NET
Жюльен Хоау
Кажется, что нитрик больше не доступен. Ссылка для скачивания (теперь перенаправляется на NimblePros, часть Telerik) гласит: «Извините, мы больше не предлагаем Nitriq»
Нараяна
7

Инструмент NDepend указан как Quality Metric Tools, но он также является инструментом обнаружения нарушений кода . Отказ от ответственности: я один из разработчиков инструмента

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

Правило кода CQLinq

Кроме того, NDepend поставляется со многими другими статическими анализами, такими как функции. Это включает:

Патрик из команды NDepend
источник
У меня была возможность опробовать NDepend в течение последних нескольких недель - большой поклонник, собирающийся получить лицензию разработчика, когда смогу. :) Спасибо за вашу работу!
Майкл Армес
1
  • Жандарм - это статический анализатор на основе правил с открытым исходным кодом (аналогичный FXCop, но с множеством разных проблем).
  • Clone Detective - хороший плагин для Visual Studio, который находит дублирующийся код.
  • Кроме того, говоря о Mono, я обнаружил, что компиляция с помощью компилятора Mono (если ваш код достаточно независим для этой цели, цель, к которой вы можете стремиться в любом случае) находит тонны не ссылающихся переменных и другие предупреждения, которые Visual Studio полностью пропускает (даже если уровень предупреждения установлен на 4).
Крис Эриксон
источник
1

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

Из рекламы -

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

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

markdevilliers
источник
0

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

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

ториальную
источник
-1

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

Alen
источник
Наша компания купила это. В диапазоне $ 30K для нас
Dan dot net
-1

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

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

Хавьер Саладо
источник
-1

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

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

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

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

Марк Далгарно
источник