Visual Studio-Add-In zum Überprüfen der string.Format-Methode

9

string.Format ist eine sehr riskante Methode. Es gibt viele Dinge, die schief gehen könnten, ohne irgendwelche Kompilierungsfehler:

%Vor%

Ich suche nach einer Möglichkeit, diese Probleme in der Kompilierungszeit zu finden. Wenn ich mich richtig erinnere, finde Resharper einige dieser Fehler, aber es ist zu reich für mein Blut.

    
HuBeZa 12.01.2011, 14:42
quelle

3 Antworten

2

Resharper macht das für Sie - sogar zur Bearbeitungszeit: -).

Beachten Sie jedoch, dass Dinge wie

%Vor%

Erzeuge keinen Fehler (schließlich ist es völlig in Ordnung, einen Wert zu verbergen).

    
Sklivvz 18.01.2011 17:28
quelle
1

String Format Verifikation für .NET2.0

Nach einigen Nachforschungen habe ich herausgefunden, dass FxCop bereits eine Regel enthält für die Überprüfung des String-Formats ( Usage Rules\Provide correct arguments to formatting methods ). Es ist sogar das Beispiel in @Sklivvz Antwort identifiziert. Leider:

  1. Die Regel existiert nur in der alten Version 1.35 , nicht jedoch in 1.36 (siehe: Eingestellte FxCop Regeln in V1.36 ).
  2. Das Vorhandensein von Lambda-Ausdrücken im Code führt zu keinen Regelfehlern oder Ausnahmebedingungsnachrichten. Es stoppt nur die Überprüfung ohne zu informieren . Ich schätze, das liegt daran, dass V1.35 .NET-Laufzeit 2.0 verwendet.
  3. Die Regel gilt nur für Anrufe nach Console.Write , Console.WriteLine , string.Format & amp; %Code%. Ich habe es geschafft, (mit Reflector) zu optimieren, um auch StringBuilder.AppendFormat abzudecken, aber ich bin mir ziemlich sicher, dass es mit MS EULA im Widerspruch steht ( "Sie dürfen nicht zurückentwickeln, dekompilieren oder disassemblieren. .. ").

So können Sie FxCop sicher zum Testen der Zeichenfolgenformatierung in Ihren .NET 2.0-Anwendungen verwenden.

Aber was ist mit neueren .NET-Versionen?

Für alle, die mit aktuelleren Versionen arbeiten, Ich habe eine StyleCop-Regel geschrieben , die Zeichenfolgenliterale für gängige Formatfehlermuster überprüft. Es ist weit davon entfernt, perfekt zu sein und viele falsche Positive hervorzubringen, aber deckt immer noch alles ab.

Ich möchte das neue FxCop SDK für eine umfassendere Lösung überprüfen.

Ich werde meine Schlussfolgerungen hier veröffentlichen.

    
HuBeZa 20.01.2011 10:48
quelle
0

Resharper wird Ihnen helfen, es zu identifizieren. Aber es ist sehr schwer und muss vorsichtig verwendet werden, wenn Sie an einer bestehenden Anwendung arbeiten.

    
Kamran Shahid 19.01.2011 12:06
quelle