Update 22.06.2026: Inzwischen gibt es den IOSP Analyzer für folgende Plattformen/Sprachen:
- JetBrains Rider, C#
- JetBrains ReSharper, C#
- Roslyn Analyzer (Visual Studio Code), C#
- JetBrains Idea, Java
- JetBrains PyCharm, Python
Die unten beschriebene Installation und Konfiguration ist in den JetBrains IDEs jeweils gleich.
——————-
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. Hierbei wird unterschieden zwischen Namespaces im
- Produktionscode vs.
- Testcode
Für Tests stehen somit zwei Varianten zur Verfügung: entweder man klammert Tests komplett von der Analyse aus oder man hinterlegt Namespaces, die ignoriert werden sollen. Für Tests sind das mindestens die Namespaces der verwendeten Test- und Mockframeworks
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.
Das Plugin ist über den JetBrains Marketplace verfügbar. Die Installation erfolgt folgendermaßen:
- Gehe in deiner IDE zu Settings – Plugins
- Wähle oben Marketplace
- Suche nach IOSP
- Gehe rechts auf Install
Rider/Idea/PyCharm etc. weisen 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.
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> 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.
Fazit
Für mich ist das IOSP das wichtigste Clean Code Prinzip, um lesbaren und testbaren Code zu erreichen. Der IOSP Analyzer weist mich auf alle Stellen im Code hin, an denen das Prinzip verletzt ist. So kann ich gezielt auch Refactoringmaßnahmen die Codequalität verbessern.






