IOSP Plugin für Rider

Schon seit längerem gibt es meinen Roslyn Analyzer zur Erkennung von IOSP Verletzungen. Zum einen habe ich diesen aktualisiert, zum anderen gibt es nun auch ein Plugin für Rider.

Die Integration in Rider hat zahlreiche Vorteile. Vor allem ist es nun viel einfacher, den Analyzer zu konfigurieren. Dazu gibt es in Rider, nach Installation des Plugins, eine Settings Seite. Auf der können folgende Einstellungen vorgenommen werden:

  • Metric – Hierüber kann bestimmt werden, wie gravierend die IOSP Verletzung sein muss, um sie als Warnung anzuzeigen.
  • Testmethoden ausklammern – Über eine simple Checkbox können nun Testmethoden von der Analyse ausgeschlossen werden.
  • Namespaces ignorieren – Eine Liste von Namespaces kann angelegt werden, deren Methoden in der Analyse ignoriert werden.
IOSP Analyzer Settings

Zusätzlich kann über Settings – Editor – Inspection Settings – Inspection Severity – C# – IOSP Violation eingestellt werden, ob die Verletzungen als Fehler, Warnung, Suggestion oder Hint angezeigt werden sollen.

IOSP Violation Severity

Das Plugin ist über den JetBrains Marketplace verfügbar. Die Installation erfolgt folgendermaßen:

  • Gehe zu Settings – Plugins
  • Wähle oben Marketplace
  • Suche nach IOSP
  • Gehe rechts auf Install

Rider bzw. das Plugin weist dich dann im Code auf Verletzungen des Integration Operation Segregation Principle (IOSP) hin.

In den Standardeinstellungen werden Verletzungen als Warnung angezeigt. Das bedeutet, der Methodenname wird farblich hervorgehoben.

Rider IOSP Analyzer

In der Abbildung sieht man, dass der Name der Methode, hier „Start“, farblich hervorgehoben ist. Ferner wird beim Mauszeiger ein Tooltip angezeigt, aus dem hervorgeht, welche Anteile als Integration bzw. Operation gewertet wurde.

Die Metric = 2 zeigt an, dass es eine überschaubare Verletzung ist, die man ggf. ignorieren kann. Hier überwiegt der Integrationsanteil. Lediglich der Ausdruck 30*1000 ist einer Operation zuzuordnen. Nachfolgend der Quelltext:

				
					public void Start(Action<IAsyncEnumerable<Wertpapier>> onUpdate) {
    new TimerProvider().ExecutePeriodic(30*1000, () => {
        var symbole = _favoritenProvider.FavoritenLaden();
        var wertpapiere = _kursProvider.KurseErmitteln(symbole);
        onUpdate(wertpapiere);
    });
}

				
			

Das Problem könnte behoben werden, indem man den Ausdruck 30*1000 in eine Konstante herauszieht.

Unsere Seminare

course
Clean Code Developer Basics

Prinzipien und Tests – Das Seminar wendet sich an Softwareentwickler, die gerade beginnen, sich mit dem Thema Softwarequalität auseinanderzusetzen. Es werden die wichtigsten Prinzipien und Praktiken der Clean Code Developer Initiative vermittelt.

zum Seminar »
course
Clean Code Developer Advanced

Mit Flow Design von den Anforderungen zum Clean Code – Lernen Sie mit Flow Design einen Softwareentwicklungsprozess kennen, der Sie flüssig von den Anforderungen zum Clean Code führt.

zum Seminar »
course
Clean Code Developer Trainer

Seminare als Trainer durchführen – Dieses Seminar wendet sich an Softwareentwickler, die ihr Wissen über die Clean Code Developer Prinzipien und Praktiken bzw. über Flow Design als Trainer an andere weitergeben möchten.

zum Seminar »

Kommentar verfassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

de_DEGerman