Ich arbeite an einem Berechnungsmodul mit C #, und ich stieß darauf:
%Vor% Ich weiß, dass dies eine falsche Initialisierung ist, die v = 0.0
anstelle von v = 0.04
Die c # -Regeln sagen, dass ich sicherstellen muss, dass mindestens eines der Elemente doppelt ist , wie folgt:
%Vor%Allerdings habe ich viele viele Initialisierungen dieser Art, die Integer-Variablen-Operationen beinhalten, und ich bin faul, meinen Code Zeile für Zeile zu durchsuchen, um solche Fehler zu entdecken.
Stattdessen ist es möglich, vom Compiler darüber gewarnt zu werden?
Okay, nach einigem Herumspielen und was nicht, habe ich eine Lösung. Ich habe diesen Artikel verwendet, um zu dieser Lösung zu kommen. Ich verwende StyleCop , also müssen Sie das bekommen und installieren. Dann können Sie mein C # -Projekt MathematicsAnalyzer herunterladen.
Als Erstes habe ich nicht alle Missverhältnisse bei der Typkonvertierung berücksichtigt. Tatsächlich unterhalte ich nur einen Teil.
Grundsätzlich überprüfe ich, ob die Zeile "double" gefolgt von einem Leerzeichen enthält. Ich weiß, dass das zu falschen Warnungen führen könnte, weil das Ende einer Klasse doppelt sein könnte oder eine beliebige Anzahl anderer Dinge, aber ich überlasse es Ihnen, herauszufinden, wie man den Typ richtig isoliert.
Wenn eine Übereinstimmung gefunden wird, überprüfe ich, ob sie mit dieser Regex übereinstimmt:
%Vor%Wenn es nicht zu dieser Regex passt, dann füge ich einen Verstoß hinzu. Was dieser Regex entspricht, ist einer der folgenden Punkte:
Irgendeines der oben genannten wird keinen Verstoß erzeugen. Wie es derzeit geschrieben wird, wird ziemlich viel, wenn ein "d" nicht verwendet wird, einen Verstoß auslösen. Sie müssen zusätzliche Logik hinzufügen, um die anderen Möglichkeiten zum expliziten Umwandeln eines Operanden zu berücksichtigen. Während ich dies schreibe, habe ich gerade festgestellt, dass ein "d" auf beiden Operanden höchstwahrscheinlich eine Ausnahme auslösen wird. Whoops.
Und schließlich konnte ich StyleCop nicht dazu bringen, meinen Verstoß richtig anzuzeigen. Es gab mir einen Fehler bezüglich der Regel, die nicht existierte, und selbst mit einem zweiten Augenpaar konnten wir keine Lösung finden, also habe ich es gehackt. Der Fehler zeigt den Namen der Regel an, die Sie suchen wollten. Daher habe ich den Namen der Regel als etwas Beschreibendes angegeben und die Zeilennummer darin eingefügt.
Um die benutzerdefinierte Regel zu installieren, erstellen Sie das MathematicalAnalyzer-Projekt. Schließen Sie Visual Studio, und kopieren Sie die DLL in das StyleCop-Installationsverzeichnis. Wenn Sie Visual Studio öffnen, sollten Sie die Regel in den StyleCop-Einstellungen sehen. Schritt 5 und 6 des Artikels, den ich verwendet habe, zeigen, wo das zu tun ist.
Es wird immer nur ein Verstoß in der gesamten Lösung angezeigt, daher müssen Sie den angezeigten Verstoß beheben und StyleCop erneut ausführen, um den nächsten Fehler zu finden. Es mag einen Weg geben, aber ich habe keinen Saft mehr und bin hier geblieben.
Viel Spaß!
In diesem Artikel wird erläutert, wie Sie benutzerdefinierte Codeanalyse-Regeln einrichten, die beim Ausführen von Code Analysis Warnungen anzeigen können und was nicht.
Tags und Links c# math implicit-conversion compiler-warnings arithmetic-expressions