Мабуть, найкращий і найпростіший спосіб досягти того, що вам потрібно, - це використовувати інструмент аналізу коду для вбудовування з Visual Studio, щоб знайти та перенести вас безпосередньо до мертвого коду та невикористаних членів.
З цією метою я створив новий файл набору правил аналізу коду (через File-> New-> File , переконавшись, що General у лівій панелі вибрано та прокручується вниз, щоб знайти набір правил аналізу коду , давши йому ім'я файлу, потім шукаючи та вибір наведених нижче правил). Нижче див. Вміст файлу набору правил, який ви можете скопіювати та вставити у новий файл із розширенням .ruleset для використання.
З огляду на файл набору правил, можна клацнути правою кнопкою миші на файл проекту на панелі Провідника рішень і виберіть Властивості . У вікнах властивостей проекту натисніть на вкладку Аналіз коду на панелі ліворуч та натисніть кнопку Відкрити, щоб перейти до місця розташування файлу .ruleset. Якщо ви перейдете до властивостей файлу рішення (на відміну від файлу проекту), ви можете встановити файл аналізу коду для кожного проекту в рішенні в одному місці (у розділі Налаштування аналізу коду та за допомогою випадаючого меню виберіть ПРИМІТКА: Ви, мабуть, попередньо переглянули файл набору правил, щоб він відобразився у спадному вікні цього вікна властивостей).
Тоді ви просто запускаєте аналіз коду на проекти / рішення (через Analyze-> Run Code Analysis on Solution -OR- Alt + F11 ), і він повернеться як попередження, будь-які нерозділені методи або невикористані члени, які він знайде. Він навіть знайде методи, на які посилається метод, який сам не має посилання в іншому місці.
Однак будьте обережні, оскільки один із способів аналізу коду для мертвого коду може призвести до помилки, якщо посилання є «прихованим», лише коли-небудь викликаючи метод через делегатів, і, звичайно, рефлексія.
Правила виявлення мертвого коду, зокрема:
- Приватні методи, які не викликаються з будь-якого іншого коду (CA1811)
- Невикористані локальні змінні (CA1804)
- Невикористані приватні поля (CA1823)
- Невикористані параметри (CA1801)
- Внутрішні класи, які не інстанціюються жодним іншим кодом (CA1812).
- Мертвий код у порозрядному або АБО обмеженому вимикачі
Нижче наведено вміст .ruleset-файлу, який може бути, виконуючи наведені вище кроки, для вашої конвенції. Ви можете просто скопіювати наведений нижче XML, вставити його в блокнот ++, зберегти десь із розширенням .ruleset , переглянути та використовувати, як пояснено вище:
<?xml version="1.0" encoding="utf-8"?>
<RuleSet Name="Dead Code Rules" Description=" " ToolsVersion="12.0">
<Rules AnalyzerId="Microsoft.Analyzers.ManagedCodeAnalysis" RuleNamespace="Microsoft.Rules.Managed">
<Rule Id="CA1801" Action="Warning" />
<Rule Id="CA1804" Action="Warning" />
<Rule Id="CA1811" Action="Warning" />
<Rule Id="CA1812" Action="Warning" />
<Rule Id="CA1823" Action="Warning" />
</Rules>
<Rules AnalyzerId="Microsoft.Analyzers.NativeCodeAnalysis" RuleNamespace="Microsoft.Rules.Native">
<Rule Id="C6259" Action="Warning" />
</Rules>
</RuleSet>