I min Visual Studio Team System 2008 Developer Edition, findes der en indbygget Fx Cop, som analyserer min kode, og kommer med forslag til hvordan jeg kan forbedre kvaliteten af min kode. Jeg er på det sidste begyndt at bruge den funktionalitet, da jeg synes den kommer med ret gode forslag/irettesættelser. Jeg er dog pånt irriteret over at den kommer med 150 fejl, bare fordi mit namespace hedder “Odin”… Det er ikke en stavefejl, og jeg vil have lov til at bruge det navn!
For at fjerne disse advarsler, er der flere ting man kan gøre:
Man kan tilføje attributter i sin AssemblyInfo.cs fil, og på den måde få kodeanalysen til at ignorere reglen:
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage(
"Microsoft.Naming",
"CA1704:IdentifiersShouldBeSpelledCorrectly",
MessageId = "Odin",
Scope = "namespace",
Target = "Odin.Web",
Justification = "Jeg vil have lov til at kalde mit produkt Odin!!!")]
Her kan man også skrive forklaringer på hvorfor man ønsker at se bort fra reglen og så videre. Eneste problem er at man skal oprette en attribut for hvert namespace der indeholder ordet, og det kan jo blive mange, når man som her, bruger ordet som rod-namespace. Her er det at man er godt hjulpet i VS 2008, for her kan man lave sin egen ordbog, som indeholder de ord man synes er ok, og som VS ikke umiddelbart godtager. Ordbogen er formateret i xml, og er ganske simpelt opbygget:
<xml version="1.0" encoding="utf-8">
<Dictionary>
<Words>
<Recognized>
<Word>Odin
</Recognized>
</Words>
</Dictionary>
Der er ikke nogen krav til hvad filen skal hedde, men jeg kalder den f.eks. ordbog.xml. Man skal blot huske på at sætte “Build Action”-egenskaben for filen til: CodeAnalysisDictionary.
Så forsvandt der 150 advarsler…
Har man nu en løsning med en lang række projekter, kan man desuden nøjes med at have een ordbog. Det gøres ved at man, via højre klik menuen, vælger at ‘unloade’ projektet. Her efter vælger man, ligeledes via højreklik menuen, at editerer projektet. Projektfilen er i xml-format, og man kan her tilføje en tag som child til “ItemGroup”-tagen:
<ItemGroup>;
<Compile Include="Content\HierarchyItem.cs" />
<CodeAnalysisDictionary Include="..\Phnyx.Web\ordbog.xml"/>
</ItemGroup>
Gem filen og vælg reload (via højreklik menuen). Husk man kan bruge relative stier i forhold til projektfolderen.
I projektfilen, kan det ligeledes lade sig gøre at angive dansk som ordbog generelt for kodeanalysen. Hvis man er en af de få, der koder sine klasser med danske navne.
Det gøres ved at tilføje en tag i “PropertyGroup” sektionen:
<CodeAnalysisCulture>da-DK</CodeAnalysisCulture>
Så godtager den også: Ordre.KundeNummer :-)
Code on…