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


174

Які інструменти доступні для статичного аналізу щодо коду C #? Я знаю про FxCop та StyleCop. Є інші? Раніше я вже пробігав по NStatic, але він розробляв те, що здається назавжди - він виглядає досить гладко від того, що я мало бачив, тому було б добре, якби він коли-небудь побачив світло дня.

З цих же ліній (це, насамперед, мій інтерес до статичного аналізу), інструменти для тестування коду для багатопотокових запитань (тупики, умови гонки тощо) також здаються дефіцитними. Typemock Racer просто спливав, тому я на це буду дивитись. Що-небудь поза цим?

Вдячні в реальну думку щодо використаних вами інструментів.


@IraBaxter Я розпочав дискусію з цього питання на Meta , і я пропоную вам озвучити свої аргументи, чому це питання не потрібно видаляти, якщо ви хочете.

Відповіді:


341

Інструменти виявлення порушень коду:

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

    Редагувати жовтень 2010: Більше не доступне як самостійне завантаження. Тепер він включений у пакет SDK для Windows, і після встановлення його можна знайти у програмі Файли \ Microsoft SDKs \ Windows \ [v7.1] \ Bin \ FXCop \ FxCopSetup.exe

    Редагувати лютий 2018 року : Ця функціональність тепер інтегрована у Visual Studio 2012 та пізніше як Code Analysis

  • Тактова частота , заснована на аналізі джерела коду (до C # 2.0)

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

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

  • Coverity Prevent ™ для комерційного продукту C #

  • PRQA QA · C # , комерційний продукт

  • PVS-Studio , комерційний продукт

  • CAT.NET , візуальна студія надбудова, яка допомагає виявити недоліки безпеки Редагувати листопад 2019: Посилання мертва.

  • CodeIt.Right

  • Спец. №

  • Пекс

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

Інструменти якості якості:

  • NDepend , чудовий візуальний інструмент. Корисно для кодових метрик, правил, відмінностей, з'єднань та досліджень залежностей.
  • Nitriq , безкоштовно, може легко писати власні метрики / обмеження, приємні візуалізації. Редагувати лютий 2018: посилання для завантаження зараз мертві. Редагувати 17 червня 2019: Посилання не мертві.
  • RSM Squared , заснований на аналізі джерела коду
  • Показники C # , використовуючи повний аналіз C #
  • SourceMonitor - старий інструмент, який час від часу отримує оновлення
  • Кодові метрики , надбудова рефлектора
  • Віль , старий інструмент, який не підтримує .NET 2.0. Редагувати січень 2018: Посилання зараз мертве

Перевірка інструментів стилю:

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

Виявлення копіювання:

  • Симіан , заснований на вихідному коді. Працює з великою кількістю мов.
  • CloneDR , виявляє параметризовані клони лише на мовних межах (також обробляє багато інших мов, крім C #)
  • Клонічний детектив плагін Visual Studio. (Він використовує ConQAT внутрішньо)
  • Atomiq , заснований на вихідному коді, безліч мов, крута візуалізація «колеса»

Загальні інструменти рефакторингу

  • ReSharper - в основному класний функціональний аналіз коду C # та рефакторинг

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 Спасибі, я змінив URL-адресу. Щодо версії .NET, Simian може працювати на .NET 1.1 на Java 5, але це не означає, що він виявляє дублювання в інших версіях .NET
Julien Hoarau

Нітрик, здається, більше не доступний. Посилання для завантаження (зараз переспрямовується на NimblePros, частина Telerik) говорить: "Вибачте, ми більше не пропонуємо Nitriq"
Нараяна

7

Інструмент NDepend котирується як інструменти метрики якості, але він є значною мірою також інструментом виявлення порушень коду . Відмова: Я один із розробників цього інструменту

За допомогою NDepend можна писати Правило коду над LINQ Queries (те, що ми називаємо CQLinq) . Більше 200 правил коду CQLinq пропонується за замовчуванням. Сила CQLinq полягає в тому, що просто написати правило коду та отримати негайні результати. Дозволяється переглядати відповідні елементи коду. Наприклад:

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

Крім цього, NDepend поставляється з багатьма іншими статичними аналізами, такими як функції. До них належать:


Я мав можливість випробувати NDepend протягом останніх кількох тижнів - великий фанат, коли я зможу отримати ліцензію на розробник. :) Дякую за вашу роботу!
Майкл Армес

1
  • Жандарм - це статичний аналізатор з відкритим кодом (аналогічний FXCop, але знаходить багато різних проблем).
  • Clone Detective - це приємний плагін для Visual Studio, який знаходить повторюваний код.
  • Також, кажучи про Mono, я вважаю, що акт компіляції з компілятором Mono (якщо ваш код достатньо незалежний для цього, платформа, мета, до якої ви хочете прагнути), знаходить багато незмінних змінних та інші попередження, яких Visual Studio повністю пропускає (навіть із рівнем попередження, встановленим на 4).

1

Ви бачили CAT.NET ?

З розмиття -

CAT.NET - це інструмент аналізу двійкового коду, який допомагає виявити загальні варіанти певних переважаючих уразливих місць, які можуть спричинити поширені вектори атаки, такі як міжсайтовий сценарій (XSS), інжекція SQL та інжекція XPath.

Я використав ранню бета-версію, і, здавалося, виявилося кілька речей, на які варто звернути увагу.





-1

Компанія Optimyth Software щойно запустила послугу статичного аналізу в хмарі www.checkinginthecloud.com . Просто надійно завантажте свій код, запустіть аналіз і отримайте результати. Жодних клопотів.

Він підтримує кілька мов, включаючи більше інформації про C #, можна знайти на веб- сайті wwww.optimyth.com


-1

Axivion Bauhaus Suite - це інструмент статичного аналізу, який працює з C # (а також C, C ++ та Java).

Він надає наступні можливості:

  • Візуалізація архітектури програмного забезпечення (включаючи залежність)
  • Дотримання архітектурних правил, наприклад, шарування, підсистеми, правила виклику
  • Виявлення клонів - виділення копії та вставлення (та модифікованого коду)
  • Виявлення мертвого коду
  • Виявлення циклу
  • Програмні метрики
  • Перевірка стилю коду

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.