Добре, след малко игра и какво ли още не, имам решение. Използвах тази статия, за да стигна до това решение .Използвам StyleCop, така че ще трябва да го вземете и инсталирате. След това можете да изтеглите моя C# проект MathematicsAnalyzer.
Първо, не отчитах всички несъответствия при преобразуване на типове. Всъщност приемам само една част.
По принцип проверявам дали редът съдържа „double“, последван от интервал. Знам, че това може да доведе до фалшиви предупреждения, защото краят на клас може да бъде двоен или произволен брой други неща, но ще оставя това на вас да разберете как правилно да изолирате типа.
Ако бъде намерено съвпадение, проверявам дали съответства на този регулярен израз:
double[ ][A-Za-z0-9]*[ ]?=(([ ]?[0-9]*d[ ]?/[ ]?[0-9]*;)|[ ]?[0-9]*[ ]?/[ ]?[0-9]*d;)
Ако -не- съвпада с този регулярен израз, тогава добавям нарушение. Това, на което този регулярен израз ще съвпадне, е някое от следните:
- двойно i=4d / 100;
- двойно i = 4d / 100;
- двойно i = 4 / 100d;
- двойно i = 4/ 100d;
- двойно i = 4 /100d;
- двойно i = 4/100d;
- двойно i=4d / 100;
- двойно i=4 / 100d;
- двойно i=4/100d;
Нито едно от горните няма да създаде нарушение. Както е написано в момента, почти ако не се използва 'd', това ще доведе до нарушение. Ще трябва да добавите допълнителна логика, за да отчетете другите възможни начини за изрично кастинг на операнд. Докато пиша това, току-що разбрах, че наличието на „d“ и на двата операнда най-вероятно ще хвърли изключение. Опа!
И накрая, не можах да накарам StyleCop да покаже моето нарушение правилно. Постоянно ми даваше грешка, че правилото не съществува, и дори с втори чифт очи върху него, не можахме да намерим решение, така че го хакнах. Грешката показва името на правилото, което се опитвате да намерите, така че просто поставих името на правилото като нещо описателно и включих номера на реда в него.
За да инсталирате персонализираното правило, изградете проекта MathematicalAnalyzer. Затворете Visual Studio и копирайте DLL в директорията за инсталиране на StyleCop. Когато отворите Visual Studio, трябва да видите правилото в настройките на StyleCop. Стъпки 5 и 6 от статията, която използвах, показват къде да направите това.
Това получава само едно нарушение наведнъж в цялото решение, така че ще трябва да коригирате нарушението, което показва, и да стартирате StyleCop отново, за да намерите следващото. Може да има начин да се заобиколи това, но ми свърши сокът и спрях тук.
Наслади се!
person
seekerOfKnowledge
schedule
21.12.2012