Buckaroo .NET implementation
Buckaroo offers a simple solution for implementing iDeal payments on your website. In order to make use of the Buckaroo implementation, we need to write some code and apply configurations inside the p…
INDIVIRTUAL - TECHNISCH PARTNER IN DIGITALE DIENSTVERLENING
October 18, 2017
En als je geen Git gebruikt? Ook dan kan het. Visual Studio 2017 implementeert namelijk .editorconfig. Dit is een open source bestandstype welke je de mogelijkheid geeft om je code stijl vast te leggen zodat iedereen in je team dezelfde stijl gebruikt. Omdat Visual Studio véél meer opties heeft dan er tot nu toe ondersteund worden is er een uitbreiding op de standaard gemaakt.
Een voorbeeld van hoe Microsoft het .editorconfig bestand heeft uitgebreid is te zien in hun eigen dotnet/coreclr repository op GitHub. Alle uitbreidingen zijn geprefixed met ofwel csharp_ ofwel dotnet_. Dit levert eigenschappen op als:
csharp_style_var_for_built_in_types = false:none csharp_style_var_when_type_is_apparent = false:none csharp_style_var_elsewhere = false:suggestion
Deze drie eigenschappen slaan op wanneer een expliciet type (zoals string
, int
, List<string>
etc.) vervangen mag worden door het keyword var
. De structuur van deze regels is eigenschap = [true|false]:[none|suggestion|warning|error]
. Je geeft dus éérst de naam van de eigenschap op, en als waarde geef je aan of deze eigenschap aan of uit moet staan gevolgd door hoe de editor op het breken van deze regel moet reageren.
none
levert, zoals te verwachten, géén reactie op. Er komt géén gloeilamp in de rand te staan, geen onderstreping en geen melding in het Error List venster. Als je dat vervangt door suggestion
dan krijg je wél een gloeilamp in de rand en een vermelding in het Error List venster, maar de onderstreping is niet heel zichtbaar. Dit is namelijk een grijze onderstreping, zoals dit:
Ga je een stap verder en maak je er een warning
van dan wordt deze als warning in het Error List venster getoond en ook als warning in de editor onderstreept. Als je er tot slot een error
van maakt dan wordt deze ook overal als error gemarkeerd. Helaas is dit op het moment van schrijven enkel geïmplementeerd in de editor. De compiler doet er nog niets mee, waardoor dit je build nog niet breekt. Dit is wel iets waar aan gewerkt word zodat de regels ook daadwerkelijk afgedwongen worden.
Iets anders dat momenteel nog ontbreekt is een fatsoenlijke editor voor deze bestanden. Als je deze nu in Visual Studio 2017 opent dan krijg je de gewone teksteditor. Er is echter een plugin die dit eenvoudiger maakt. Dit is Mads Kristensen’s EditorConfig Language Service< welke op de gebruikelijke manier geïnstalleerd kan worden. Naast de syntax highlighting van de .editorconfig bestanden bied deze ook de mogelijkheid om deze simpel aan je solution, project of map toe te voegen.
In principe heb je genoeg aan het plaatsen van een .editorconfig
bestand in de root van je solution. Mocht je echter een afwijkende .editorconfig
willen gebruiken voor een project of map, dan kun je in het project of de map een extra .editorconfig
plaatsen. Er word gezocht naar .editorconfig
bestanden in de map van het bestand waarin je bezig bent en alle bovenliggende mappen. Dit gaat door totdat ofwel de root van het bestandssysteem bereikt wordt (bijv C:\
) ofwel er een .editorconfig
gevonden wordt waarin root = true
staat. Al deze .editorconfig
bestanden worden vervolgens op eenzelfde manier gelezen als CSS.
Daarmee bedoel ik dat de .editorconfig
in de map het verst weg begonnen word, en iedere .editorconfig
die dichterbij ligt word daar overheen gelezen. Een voorbeeld:
Je hebt onderstaande projectstructuur, waarbij je voor de bestanden onder Database/Oracle een aantal andere regels wilt toepassen dan voor de rest van het project. Je plaatst dan een .editorconfig
in de root van het project. Vervolgens plaats je er een in de map Database/Oracle welke enkel de regels overschrijft die je aangepast wilt hebben.
Op het moment dat je het bestand Database/Oracle/Connector.cs
opent wordt eerst de .editorconfig
naast Program.cs
ingelezen, en omdat deze aangeeft dat het de root .editorconfig
is wordt er niet hoger gezocht. Hierna wordt er naar de map Database
gekeken, waar in dit geval geen .editorconfig
in staat. Tot slot wordt de .editorconfig
ingelezen die naast Connector.cs
staat. Alle regels worden samengevoegd, en dat is de regelset welke gebruikt wordt.
In eerdere versies van Visual Studio stonden al deze opties ingesteld in het optiescherm onder het Tools menu. Dit scherm is er nog steeds, en werkt ook nog steeds. Deze regels worden echter overschreven door wat er in de .editorconfig
bestanden vermeld staat. Zeggen jouw persoonlijke voorkeuren bijvoorbeeld dat je nooit een var wilt gebruiken, maar stelt de .editorconfig
dat dit toch in sommige gevallen moet? Dan zal Visual Studio meegaan met de opties in de .editorconfig
.
Dit is slechts de top van de ijsberg, er is online natuurlijk veel meer informatie beschikbaar. De website van EditorConfig is waar je meer informatie kunt vinden over wat het bestand doet en hoe je deze kunt gebruiken. Een voorbeeld van een .editorconfig
bestand voor Visual Studio kun je vinden in de dotnet/coreclr repository op GitHub, of door meteen naar https://github.com/dotnet/coreclr/blob/master/.editorconfig te gaan.