08 January 2009

FxCop(Code Analysis) для Legacy кода

Нещодавно ми вирішили що нам потрібен Code Analysis. У нас є база з декількох десятків тисяч рядків коду яку ми підтримуємо, але активно не розробляємо. Код писався декілька років тому, і Code Analysis репортить майже стільки проблем скільки рядків коду. Фіксити усі ті тисячі попереджень, немає ні часу ні бажання, єдине чого кортить це перевірка в новому коді.

Перше що спадає на думку це повимикати усі неугодні рули. Але проблема в тому що і на новий код це діяти не буде! Більше того воно не буде діяти навіть коли ріками викликати Run Code Analyse! Як то кажуть “ф топку!” таке рішення.

Коротка версія

Зупинились на “тимчасовому” “придушенні” попереджень. Тобто виділили усі попередження, і зробили їм Suppress Message(s)/In ProjectSuppression File.

 Suppress Message(s)/In ProjectSuppression File

Повна версія

Отже, почали ми з того, що спробували пофіксити глобальні проблеми, ті які викликають більшу частину усіх попереджень. В нашому випадку це були назви неймспейсів, назви елементів нашого домену. Просто додали CustomDictionary.xml.

Потім Suppress Message(s)/In ProjectSuppression File для всіх попереджень.

І на при кінці, перейменували GlobalSuppressions.cs в GlobalSuppressionsTemp.cs, цим ми відокремили ті попередження які ми поки що не хочемо вирішувати, і ті які ми і справді будемо додавати для нового коду.

Проблеми

Перша проблема це те ще неможливо виділити більше за 200 попереджень. Ми цю проблему не вирішували. Але щось мені підказує що це не проблема трансформувати результати FxCop(це простий XML) в такий собі кастомний GlobalSuppressions.cs.

Друга проблема це рефакторінг. За рахунок того що “придушення” в файлі проекту, зрозуміло що навіть перейменування,призводить до того що “придушення” стають не актуальні. З цією проблемою ми боремось двома шляхами. Або просто додаємо “придушуємо” нові попередження, або фіксимо.

Третя проблема, це застарілі “придушення”. Але у нас поки що їх не так вже і багато… Так чи інакше ми це ще не вирішили.

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

Коментарі

# Serge B. said:

Hey Mike, did you try CodeIt.Right? I would be happy to demo it for  you over WebEx, if you want.

08 January 09 at 10:07 AM
# Mike Chaliy said:

yep, of course, I think that your tool is much more advanced, however our team is very inert, even adoptation of the FxCop was hard, possible that next step will be CodeIt.Right... Also may be you know that we have companywide policy to use ReSharper (we have special agriment with JetBrains), with their analyzis this tool also competitor to CodeIt.Right...

08 January 09 at 10:29 AM
# Serge B. said:

I sure understand policies. What don't understand is the policies that don't get revised when there is a potential of the time/money savings. Especially when the developers still have to fix the violations that FxCop find manually (or rather suppress them - now, that's pretty good solution). And ReSharpers "analysis" doesn't pick up most of the violations on the FxCop and CodeIt.Right list. I don't believe the "special agreement" with JetBrains prevents the company from using any tools but theirs.

Anyway, still happy to do a web demo for you, just so you'd know what CodeIt.Right can do for you. Even if you can't used in the corporate office, you can have it for personal use.

08 January 09 at 10:48 AM
# Serge B. said:

Sorry, didn't mean to be aggressive, just came out this way... It's not you, of course, it's the policies and company politics... My apologies...

08 January 09 at 10:49 AM
# Mike Chaliy said:

Serge, actually the problem I that we couldn't fix code, this is huge ammount of already working code, our stackeholders just wan't to approve this... Frized code, I hate this, but this is something that we should live with...

Anyway as I told before, I already had play with your tool. It greate! My opinion that our choice of the ReSharper and the FxCop is actually one person choice, also buzz of this tools plays not last role...

Yet another thing is that for personal use CodeIt.Right is just too expensive...

08 January 09 at 11:22 AM
# Serge B. said:

I know, that's why I offered the complimentary license :)

08 January 09 at 12:14 PM
# DmytroL said:

Serge, as I've told Misha Zhutov before, the problem with CodeIt.Right is a little bit different one. People are just afraid of letting a computer program touch their code. I understand that with modern source control tools this fear is rather irrational, but it still exists. ReSharper gets some "trust credit" because it's a well-known and established brand, unlike CodeIt.Right (I mean, in the heads of our software engineers).

12 January 09 at 3:20 AM
# Mike Chaliy said:

May be

>> ReSharper gets some "trust credit"

But still no one will use batch fixing on real project. What good about ReSharper is that you can fix code you are working now. Sure you can do this with CodeIt.Right, but with ReSharper you do not need to leave code. Usability and annoyless versus Quality. Unfortunately, average developer will choose first option.

12 January 09 at 4:22 AM
# Mike Chaliy's Blog said:

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

05 February 09 at 2:26 AM
# rimonabantexcellence site title said:

Пінгбек від http://www.rimonabantexcellence.com/t.php?aHR0cDovL2Rldi5uZXQudWEvYmxvZ3MvbWlrZWNoYWxpeS9hcmNoaXZlLzIwMDkvMDEvMDgvNzQ2OS5hc3B4

29 May 13 at 7:22 PM
Анонімні коментарі деактивовані. Увійдіть або Зареєструйтесь щоб мати доступ до ресурсів Спільноти.

About Mike Chaliy

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