Какие инструменты статического анализа доступны для C #?[закрыто]
-
09-06-2019 - |
Вопрос
Какие инструменты доступны для статического анализа кода на 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: Ссылка теперь мертва
Инструменты проверки стиля:
- Стилкоп, инструмент Microsoft (запускается из Visual Studio или интегрирован в проект MSBuild).Также доступно в качестве расширения для Visual Studio 2015 и C # 6.0
- Агент Смит, плагин проверки стиля кода для Перетачиватель
Обнаружение дублирования:
- Обезьяноподобный, основанный на исходном коде.Работает с большим количеством языков.
- Клонированный, обнаруживает параметризованные клоны только на границах языка (также обрабатывает многие языки, отличные от C #)
- Детектив - клон плагин Visual Studio.(Он использует КонКАТ внутренне)
- Атомик, основанный на исходном коде, множестве языков, классной визуализации "колеса"
Общие инструменты рефакторинга
- Перетачиватель - Чрезвычайно интересные функции анализа кода на C # и рефакторинга
Другие советы
Инструмент NDepend цитируется как Качественные Метрические Инструменты но это в значительной степени также Обнаружение нарушений кода инструмент. Отказ от ответственности:Я являюсь одним из разработчиков этого инструмента
С помощью NDepend можно написать Правило кода над запросами LINQ (то, что мы называем CQLinq).Более чем 200 правил кода CQLinq предлагаются по умолчанию.Сила CQLinq в том, что написать кодовое правило несложно, и получить немедленно Результаты.Предлагаются средства для просмотра совпадающих элементов кода.Например:
Помимо этого, NDepend поставляется со многими другими статический анализ, подобный возможности.К ним относятся:
- Разумная оценка технического долга
- График зависимостей
- Матрица зависимостей
- Возможности распознавания кода
- 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
Я нахожу показатели кода и < 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).
Он предоставляет следующие возможности:
- Визуализация архитектуры программного обеспечения (с учетом зависимостей)
- Обеспечение соблюдения архитектурных правил, напримермногоуровневость, подсистемы, правила вызова
- Обнаружение клонов - выделение скопированного и вставленного (и измененного кода)
- Обнаружение Неисправного кода
- Обнаружение цикла
- Показатели программного обеспечения
- Проверка стиля кода
Эти функции могут запускаться разово или как часть процесса непрерывной интеграции.Проблемы могут быть выделены для каждого проекта или для каждого разработчика, когда система интегрирована с системой управления исходным кодом.