Code analyse in Visual Studio
4

Code analyse in Visual Studio

De kwaliteit van code is heel belangrijk. Natuurlijk kun je door middel van code reviews een heleboel problemen boven water halen, maar het liefst wil je natuurlijk dat Visual Studio je hierbij zo veel mogelijk helpt. De tijd voor de code review kun je dan nuttig besteden om inhoudelijk over de gekozen oplossing te sparren en niet meer over de triviale zaken in de code.
De ondersteuning voor het analyseren van je code verschilt behoorlijk per uitvoering van Visual Studio. In dit artikel behandelen we de mogelijkheden die beschikbaar zijn in de professional editie, want helaas heeft niet iedereen de beschikking over de Enterprise versie van Visual Studio.
De eerste stap om de kwaliteit van de code te waarborgen is natuurlijk dat de code error- maar natuurlijk ook warningvrij is. In de praktijk wordt dit laatste nog wel eens vergeten. Het grote nadeel van het gaan negeren van warnings is dat er in de loop van de tijd warnings bij gaan komen en er op een gegeven moment zoveel warnings tijdens de build gegenereerd dat niemand nog de moeite neemt om de warnings weg te werken. Een ernstige warning kan dan snel over het hoofd worden gezien. Visual Studio biedt de mogelijkheid om warnings te negeren. Ons advies is om hier terughoudend mee om te gaan. Het onderliggende probleem oplossen werkt op de lange termijn veel beter.

Statische code analyse
Binnen Visual Studio kun je gebruik maken van statische code analyse. Voordat je een analyse draait, moet je instellen op welk niveau je de analyse uit wilt voeren. Je kunt dit instellen voor alle projecten binnen je solution of per project. In Figuur 1 kun je bijvoorbeeld de instellingen op de property page van een voorbeeldsolution zien. Je kunt deze dialoog oproepen via het contextmenu of via het Analyze-menu in de menubar.


Figuur 1 Standaard beschikbare rulesets

De mogelijke opties zijn beschreven in MSDN. Microsoft adviseert minimaal de “Microsoft Managed Recommended Rules” te gebruiken. Als startpunt bij een bestaand project is dit ook een goed advies. Als je wat meer controles uit wilt laten voeren, dan kun je beter gebruik maken van een wat uitgebreidere set. Voor nieuwbouwprojecten kun je het beste zelfs de “Microsoft All Rules” als uitgangspunt nemen.
Na het instellen van de controlegrenzen kun je de analyse uitvoeren. Hiervoor is het commando “Run Code Analysis” beschikbaar onder het context menu binnen de solution explorer (Figuur 2) of onder het Analyze-menu (Figuur 3).


Figuur 2 Starten van code analyse via context menu


Figuur 3 Starten van code analyse via menu

In de Error-list window binnen Visual Studio krijg je na de analyse de gevonden fouten te zien (Figuur 4).


Figuur 4 Voorbeeld van gevonden fouten na een code analyse

Bij een project kan de lijst met fouten een hele waslijst zijn. Het is een vervelend klusje om te doen, maar het loont de moeite op de lange termijn om toch alle foutmeldingen te bekijken en deze weg te werken.
Als je op een foutregel klikt die gekoppeld is aan een regelnummer dan krijg je in je editorwindow de regel code te zien waarin het probleem is gevonden. Voor meer algemene meldingen bestaat deze optie helaas niet. Vaak is de melding die je krijgt voldoende duidelijk. Als je toch meer informatie wilt hebben over de melding en met name hoe je deze op kunt lossen, dan kun je klikken op de code-link die per foutregel staat. Je komt dan op een speciale pagina op MSDN die de controle beschrijft, mogelijke oplossingen aandraagt maar ook beschrijft wanneer het veilig is de melding te onderdrukken.
Je kunt een melding op twee manieren onderdrukken (Figuur 5):
– Per regel (alleen als deze gekoppeld is aan een regel)
– In een zogenaamde suppression file (per project)


Figuur 5 Onderdrukken van code analyse fouten
Het onderdrukken van specifieke meldingen in een suppression file is niet vaak aan te raden. Het is dan niet meer zichtbaar binnen de code dat een blok code bewust mogelijke fouten negeert en toekomstige soortgelijke fouten in een project worden niet meer gerapporteerd.

Custom rule sets
Binnen je organisatie of binnen je project kunnen specifieke eisen gelden die aan code worden gesteld. Het kan ook zijn dat je graag gebruik wilt maken van een specifieke ruleset, alleen bijvoorbeeld niet van de regel die controleert op namen, omdat je toevallig met een Nederlandstalige codebase moet werken. In dit soort gevallen kun je je een eigen custom rule set maken.
Je kunt een custom rule set maken door binnen een project van je solution de properties van het project op te roepen en dan de tab “Code Analysis” te kiezen. Selecteer dan de ruleset die het meest lijkt op de ruleset die je wilt hebben. Via de knop Open kun je alle regels zien en bepalen of deze actief moeten zijn en of het breken van de regel een warning of een error moet genereren. Je kunt deze nu naar behoefte aanpassen en het geheel als een custom ruleset opslaan en vervolgens in Visual Studio gebruiken.


Figuur 6 Code Analyse instellingen voor een project


Figuur 7 Aanpasbaarheid van rulesets

Een eerder opgeslagen ruleset kun je toevoegen door op dit icoon te klikken:

Code schoon houden
Als je code eenmaal geen code analyse fouten meer bevat dan wil je dat natuurlijk ook graag zo houden. Handmatig elke keer een code analyse aftrappen kan natuurlijk wel, maar het is handiger als Visual Studio ons daarbij kan helpen. Gelukkig biedt VS ook de mogelijkheid om de code analyse te draaien als onderdeel van de normale build. Je kunt dit aanzetten door in de dialoog van Figuur 6 op optie “Enable Code Analysis on build” aan te zetten. Als je in teamverband werkt, loont het zeker de moeite om de code analyse ook uit te laten voeren op de build server.
In deel 2 van deze serie zal ik in gaan op de live code analyse mogelijkheden die Visual Studio ondersteunt.
Veel plezier met het schoner maken en natuurlijk houden van je code.

Auteur: Johan Smarius, Bergler Competencer Center 2017