Egger, Joel and Stocker, Marcel (2018) Statische Code Analyse. Student Research Project thesis, HSR Hochschule für Technik Rapperswil.
FS 2018-SA-EP-Stocker-Egger-Reserviertes Thema Code Design Analysis in C#.pdf - Supplemental Material
Download (2MB) | Preview
Abstract
Wir haben eine neue statische Design- und Stil-Analyse für C# entwickelt. Diese prüft den Code während dem Programmieren darauf, ob sich Rechtschreibfehler eingeschlichen haben, ob die Benennung von Klassen, Interfaces, Variablen, etc. den allgemeinen Richtlinien entsprechen und ob die bekanntesten Code Metriken eingehalten wurden. Die gefundenen Fehler-/Korrekturelemente werden in der IDE farblich markiert.
Die zahlreichen Analysen wurden in folgende drei Kategorien unterteilt:
Lexikalische Analyse
Zum einen wird jeder Bezeichner in ihre einzelnen Wörter unterteilt und jedes einzelne Wort wird mit der Rechtschreib-Datenbank überprüft. Zum anderen wird ermittelt, um welchen Bezeichnertyp es sich handelt und ob dieser die richtigen Wortarten enthält. Bei Klassennamen braucht es zum Beispiel ein Nomen am Ende
Code-Stil Analyse
In der Code-Stil Analyse wird der Code dahingehend überprüft, ob dieser noch zu vereinfachen wäre. Hierzu kommen mehrere Möglichkeiten in Frage, welche analysiert werden könnten.
Metrik Berechnungen
In dieser Kategorie werden bekannte Metriken berechnet. Darunter fallen Metriken wie: Lines of Code (LOC), oder Lack of Cohesion in Methods (LCOM*), und andere.
Das Projekt wurde in einem VSIX Projekt realisiert und wird somit als Visual Studio Extension zur Verfügung gestellt. Das Tool wurde über die Open Source Projekte Log4Net, Prism und Wox laufen gelassen. Dabei kam heraus, dass Log4Net am meisten auf die Code-Analyse angesprungen ist. Die gefundenen Code Smells betrafen vor allem Schreibfehler (darunter auch unnötige Abkürzungen von Wörtern), Vereinfachungen mit Typ-Inferenz (var Keyword) und zu lange Klassen oder Methoden.
Die implementierten Analysen liefern hilfreiche Meldungen zu Design- und Stil-Problemen. Dank dessen kann man sich einen guten Ein-/Überblick sowohl über die Komplexität als auch über die Qualität des Codes machen.
Item Type: | Thesis (Student Research Project) |
---|---|
Subjects: | Area of Application > Development Tools Area of Application > Statistics Technologies > Programming Languages > C# Technologies > Frameworks and Libraries > .NET |
Divisions: | Bachelor of Science FHO in Informatik > Student Research Project |
Depositing User: | OST Deposit User |
Contributors: | Contribution Name Email Thesis advisor Bläser, Luc UNSPECIFIED |
Date Deposited: | 31 Jan 2019 11:50 |
Last Modified: | 31 Jan 2019 11:50 |
URI: | https://eprints.ost.ch/id/eprint/700 |