StyleCop - sora mai mica sau frate (care la fel de convenabil) instrument de FxCop, pe care am scris în secțiunea anterioară. Dar, spre deosebire de FxCop, StyleCop are o mulțime de reguli suplimentare legate de execuția codului.
După instalarea stilului StyleCop în Visual Studio, apar funcționalități suplimentare:
Toate regulile sunt împărțite în mai multe grupuri:
Puteți activa sau dezactiva regulile în fereastra de proprietăți:
Luați în considerare regulile de bază cu care se confruntă dezvoltatorii.
Reguli de documentare
* MustBeDocumented - toate elementele (metode, variabile etc.) trebuie documentate, inclusiv membri privați.
SA1625: ElementDocumentationMustNotBeCopiedAndPasted - descrierea variabilelor nu trebuie să fie aceeași:
SA1633: FileMustHaveHeader - toate fișierele trebuie să conțină un antet:
Și numele fișierului ar trebui să coincidă cu valoarea din fișier (SA1638: FileHeaderFileNameDocumentationMustMatchFileName).
SA1642: ConstructorSummaryDocumentationMustBeginWithStandardText - Descriere Designer ar trebui să se potrivească cu modelul „Inițializarea o nouă instanță a clasei.“:
Același lucru pentru destructori (SA1643: DestructorSummaryDocumentationMustBeginWithStandardText).
Reguli de aspect
SA1500: CurlyBracketsForMultiLineStatementsMustNotShareLine - parantezele trebuie plasate pe linii separate, adică în loc de
Același lucru este valabil și pentru codul din cadrul metodelor (SA1507: CodeMustNotContainMultipleBlankLinesInARow).
Restul regulilor se referă, de asemenea, în principal la necesitatea de a elimina liniile goale.
Normele privind menținerea
SA1119: StatementMustNotUseUnnecessaryParenthesis - codul nu trebuie să conțină paranteze suplimentare:
Toate metodele și proprietățile trebuie să aibă un identificator de acces specificat explicit (SA1400: AccessModifierMustBeDeclared).
Pentru expresii matematice, trebuie să indice în mod clar ordinea de execuție cu console suplimentare (SA1407: ArithmeticExpressionsMustDeclarePrecedence). Ie astfel de cod:
trebuie să rescrieți astfel:
Codul nu trebuie să conțină un cod neutilizat (SA1409: RemoveUnnecessaryCode):
Regulile numelui
Pe scurt, numele metodelor, clase ar trebui să înceapă cu o literă mare (SA1300: ElementMustBeginWithUpperCaseLetter), și interfețele - cu litera „I“ (SA1302: InterfaceNamesMustBeginWithI). Nu puteți utiliza prefixele M_ și s_ nume de variabile (SA1308: VariableNamesMustNotBePrefixed), și nu puteți utiliza caracterul de subliniere (SA1309: FieldNamesMustNotBeginWithUnderscore, SA1310: FieldNamesMustNotContainUnderscore).
Reguli de ordine
Una dintre cele mai discutate reguli este că toate invitațiile trebuie să fie găzduite în spațiile de nume.
Dacă vorbim despre motivul acestei reguli, atunci este legată de posibile dificultăți atunci când lucrăm cu pseudonime.
De exemplu, acest cod este compilat cu succes:
Dar nu este clar ce Guid va fi folosit.
Acest cod va provoca un avertisment CS0576: Spațiul de nume "Microsoft.Sample" conține o definiție în conflict cu aliasul "Guid":
Dar ajută la evitarea confuziei în nume.
Toate elementele trebuie să fie în ordinea corectă din fișierul sursă (SA1201: ElementsMustAppearInTheCorrectOrder):
- Directive externe externe
- Utilizarea directivelor
- Spații de nume
- Delegații
- enums
- interfeţe
- structs
- clase
În clasă, structură, interfață, ordinea ar trebui să fie:
Elementele trebuie sortate după nivelul de acces (SA1202: ElementsMustBeOrderedByAccess):
Toate usings trebuie să fie sortate și neutilizate - eliminat (SA1210: UsingDirectivesMustBeOrderedAlphabeticallyByNamespace).
Norme de citire
Trebuie să utilizați acest prefix pentru a accesa membrii clasei (SA1101: PrefixLocalCallsWithThis). Alte reguli de acest tip sunt asociate cu poziționarea parametrilor, regiunilor, expresiilor etc.
String.Empty trebuie să fie utilizat în locul șir gol (SA1122: UseStringEmptyForEmptyStrings).
Este necesar să folosiți aliasurile încorporate (int, șir în loc de Int32, String etc.) (SA1121: UseBuiltInTypeAlias).
Reguli de distingere
În acest grup, există multe reguli legate de tabulare și spații. Pe scurt, codul nu trebuie să conțină spații suplimentare, iar filele nu sunt permise (SA1027: TabsMustNotBeUsed).
Dezactivarea regulilor în cod
Pentru a nu verifica un cod pentru o anumită regulă, puteți folosi un atribut special:
- Rule Rule - spațiul de nume al stilului StyleCop în care este declarat. De exemplu, Microsoft.StyleCop.CSharp.DocumentationRules;
- Id-ul regulii este identificatorul regulii din shortname-ul formatului: longname. De exemplu, SA1600: ElementsMustBeDocumented;
- Justificare - textul care va fi folosit pentru a explica motivul pentru care această sau acea regulă a fost omisă.
Dacă doriți să dezactivați toate regulile dintr-un anumit spațiu de nume, puteți face acest lucru:
StyleCop pentru Resharper
Cu excepția, de fapt, StyleCop, există încă un produs numit StyleCop pentru Resharper. După cum ați putea ghici din titlu, această unealtă servește la integrarea regulilor cu Resharper.
În general, utilizarea StilCop face codul dvs. frumos și simplu în ceea ce privește lizibilitatea și designul, ceea ce este foarte important pentru suportul consistent.