05 February 2009

FxCop(Code Analysis) для нормального кода

Нещодавно я писав про те що ми врубили Code Analysis, а сьогодні я розповім про те як ми його вирубили ;).

Отже, малюнок олією… Ти натискаєш Ctrl+Shift+B (Build Solution) і йдеш пити чай. Адже Code Analysis включений в білд, це 30-60 секунд на кожен проект, а проектів пару десятків… А я без білдів не можу…

Рішення #1, RunCodeAnalysis в Always

Ми просто перенесли аналіз на білд сервер(TFS Build Server). Для того щоб це зробити, достатньо в MSBuild скрипті встановити RunCodeAnalysis в Always. Наприклад це можна зробити за допомогою такого кода:

   1: <PropertyGroup>
   2:     <RunCodeAnalysis Condition=" '$(RunCodeAnalysis)'=='' ">Always</RunCodeAnalysis>
   3: </PropertyGroup>

А можна і за допомогою аргументу…

   1: /p:RunCodeAnalysis=Always

Always буде ігнорувати налаштування проекту, і завжди буде робити аналіз коду. А отже тепер за бажанням можна вимкнути аналіз на кожний білд.

Нижче інші значення RunCodeAnalysis

Default Це значення по замовчуванню, означає що все залежить від налаштувань кожного проекту.
Always Буде завжди робити аналіз
Never Ніколи…

Рішення #2, Локальний перезапис

Хоча є ще одне рішення… Воно значно деструктивніше ;), там нам важливий результат. Просто додати юзер оверрайди для проекту..

Додаємо файл MyProj.csproj.user з таким вмістом:

   1: <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
   2:   <PropertyGroup>
   3:     <RunCodeAnalysis>false</RunCodeAnalysis>
   4:   </PropertyGroup>
   5: </Project>

І все! На локальній тачці аналіз не запускається, а вже на білд сервері так. Головне перед чекіном на забувати таки зробити аналіз…

Рішення #3, Окрема конфігурація

Тримати окрему білд-конфігурацю для білд-серверу. Тобто усі по замовчуванню нічого не аналізують, а спеціальна білд-конфігурація для сервера аналізує. Єдине що мені заважє жити, так це підтримка ще однієї конфігурації…

Рішення #4, IsDesktopBuild

А можна ще відокремити локальний та серверні білди …

   1: Condition=" '$(IsDesktopBuild)'!='true' "

Висновок

Так чи інакше, а вибір є ;), швидких вам білдів!

Помічено як: , , ,
 

Коментарі

# DmytroL said:

Спасибо, при случае возьму на вооружение! С другой стороны, проекты, код которых не менялся, пересобираться по умолчанию вообще не должны, так что большое количество проектов в решении - как бы само по себе не проблема...Или у вас при разработке изменения вносятся сразу во многие проекты?

06 February 09 at 12:31 AM
# Mike Chaliy said:

Навіть для двох проектів це занадто великий час... Мене не вистачає стільки чекати.

В нашому проекті все набагато складніше. Наприклад для того щоб прогнати юніт-тести, повинно перкомпілюватися бізнес логіка та юай, а це більше 15ти проектів. Наразі ми не можемо витратити час для того щоб це зоптимізувати, а тому маємо те що маємо...

06 February 09 at 1:23 AM
Анонімні коментарі деактивовані. Увійдіть або Зареєструйтесь щоб мати доступ до ресурсів Спільноти.

About Mike Chaliy

Цікавлюсь DDD. Більшість часу витрачаю на доньку. А ще вел!