Какие инструменты статического анализа доступны для C#? [закрытый]
какие инструменты доступны для статического анализа кода на C#? Я знаю о FxCop и StyleCop. Есть ли другие? Я сталкивался с NStatic раньше, но он был в разработке для того, что кажется вечным - он выглядит довольно гладким от того, что я мало видел, поэтому было бы неплохо, если бы он когда-нибудь увидел свет дня.
вдоль этих же строк (это в первую очередь мой интерес для статического анализа), инструменты для тестирования кода для многопоточных проблем (тупики, условия гонки и т. д.) также кажутся немного скудными. Typemock Racer просто выскочил, поэтому я буду смотреть на это. Что-нибудь помимо этого?
реальные мнения об инструментах, которые вы использовали, ценятся.
9 ответов:
инструменты обнаружения нарушений кода:
Fxcop, отличный инструмент от Microsoft. Проверить соблюдение .чистый рамках руководящих принципов.
Редактировать Октябрь 2010: больше не доступен в качестве отдельного скачивания. Теперь он включен в Windows SDK а после установки можно найти в Program Files\Microsoft SDKs\Windows\ [v7.1] \Bin\FXCop\FxCopSetup.exe
Редактировать Февраля 2018: эта функция теперь интегрирована в Visual Studio 2012 и позже как Анализ Кода
- Clocksharp на основе анализа исходного кода (на C# 2.0)
- моно.Жандарм, аналогично Fxcop, но с лицензией с открытым исходным кодом (на основе моно.Сесил)
- Смоки, подобно Fxcop и Gendarme, на основе моно.Сесил. Больше не на развитие, основной разработчик сейчас работает с командой жандармов.
- Coverity Prevent™ для C#, коммерческий продукт
- PRQA QA * C#, коммерческий продукт
- PVS-Studio, коммерческий продукт
- CAT.NET, Visual studio addin, который помогает идентифицировать безопасность недостатки
- CodeIt.Правильно
- Spec#
- Pex
Метрические Инструменты Качества:
- вопросом, что происходит, отличный визуальный инструмент. Полезно для анализа метрик кода, правил, различий, связей и зависимостей.
- Nitriq, бесплатно, можно легко написать свои собственные метрики/ограничения, хорошие визуализации. Редактировать Февраль 2018: ссылки для скачивания теперь мертвы.
- RSM в квадрате на основе анализа исходного кода
- Метрики C#, используя полный разбор C#
- SourceMonitor старый инструмент, который периодически получает обновления
- Метрики Кода, a отражатель добавить-в
- Вольное, старый инструмент, который не поддерживает .NET 2.0. Редактировать Январь 2018: ссылка мертв
Проверка Инструментов Стиля:
- StyleCop, Microsoft tool (запускается из Visual Studio или интегрируется в проект MSBuild). Также доступно расширения для Visual Studio 2015 и C#6.0
- Агент Смит, плагин проверки стиля кода для для ReSharper
дублирование Обнаружение:
- обезьяний, на основе исходного кода. Работает с большим количеством языков.
- CloneDR, обнаруживает параметризованные клоны только на границах языка (также обрабатывает многие языки, кроме C#)
- Детектив Клон плагин Visual Studio. (Он использует ConQAT внутренне)
- Atomiq, основанный на исходном коде, множество языков, крутое " колесо" визуализация
общие инструменты рефакторинга
- для ReSharper - в основном прохладный анализ кода C# и функции рефакторинга
инструмент вопросом, что происходит слова Метрические Инструменты Качества но это в значительной степени также обнаружение нарушения кода. отказ от ответственности: я один из разработчиков инструмента
с NDepend, можно написать правило кода над запросами LINQ (то, что мы называем CQLinq). Больше чем 200 правил кода CQLinq предлагается по умолчанию. Сила CQLinq заключается в том, что это просто написать правило кода, и сделать тут результаты. Предлагаются средства для просмотра совпадающих элементов кода. Например:
кроме того, NDepend поставляется со многими другими статический анализ, как функции. К ним относятся:
- Умная Техническая Оценка Долга
- Граф Зависимостей
- Матрица Зависимостей
- код Возможности дифф
- вопросом, что происходит.API это позволяет написать собственный инструмент статического анализа. С NDepend.APi мы даже разработали инструмент для обнаружения дубликатов кода (подробности в этом блоге:оригинальный алгоритм для поиска дубликатов кода .NET).
- жандарм это статический анализатор на основе правил с открытым исходным кодом (похож на FXCop, но находит много разных проблем).
- Детектив Клон это хороший плагин для Visual Studio, который находит дубликат кода.
- кроме того, говоря о Mono, я нахожу, что акт компиляции с компилятором Mono (если ваш код достаточно независим от платформы, чтобы сделать это, цель, к которой вы можете стремиться в любом случае) находит тонны неиспользуемых переменных и другие предупреждения, которые Visual Studio полностью пропускает (даже с уровнем предупреждения, установленным на 4).
вы видели CAT.NET?
из аннотации -
CAT.NET является инструментом анализа двоичного кода это помогает определить общие варианты некоторые преобладающие уязвимости что может привести к общей атаке векторы, такие как межсайтовые сценарии (XSS), впрыска SQL и XPath Инъекция.
Я использовал раннюю бета-версию, и это, похоже, оказалось несколько вещей, на которые стоит посмотреть.
помимо отличного списка от madgnome, я бы добавил детектор дубликатов кода, основанный на командной строке (но бесплатный):
Klocwork имеет инструмент статического анализа для C#:http://www.klocwork.com
найти Метрики Кода и Матрица Структуры Зависимостей надстройки для рефлектора очень полезно.
Optimyth Software только что запустила сервис статического анализа в облаке www.checkinginthecloud.com. просто надежно загрузите свой код запустите анализ и получите результаты. Никаких проблем.
Он поддерживает несколько языков, включая C# больше информации можно найти на wwww.optimyth.com
Axivion Bauhaus Suite - это инструмент статического анализа, который работает с C# (а также C, C++ и Java).
Он предоставляет следующие возможности:
- визуализация архитектуры программного обеспечения (включая зависимости)
- применение архитектурных правил, например, наслоение, подсистемы, правила вызова
- обнаружение клонов-выделение копирования и вставки (и измененного кода)
- Мертвый Код Обнаружение
- Обнаружение Цикла
- Метрики Программного Обеспечения
- Проверка Стиля Кода
эти функции могут быть запущены на одноразовой основе или в рамках процесса непрерывной интеграции. Проблемы могут быть выделены на основе каждого проекта или на основе каждого разработчика, когда система интегрирована с системой управления исходным кодом.

Comments