2016-06-13 7 views
5

Als C# -Entwickler habe ich von der Codeanalyse von Microsoft profitiert. In F # scheint die Codeanalyse jedoch kein integrierter Teil des Entwicklungszyklus zu sein. Ich brauchte eine Weile, um CA auf einem F # -Projekt zu aktivieren, aber dieses blog helped. Jetzt, da ich CA aktiviert habe, scheint es "falsche" Warnungen zu geben. Zum Beispiel habe ich einen Datensatztyp alsCodeanalyse in F #

deklariert, für die ich strukturelle Gleichheit standardmäßig erwarte. This blog zeigt, dass zwei Instanzen des Typs Acccount, für die die Nummer identisch ist, gleich sein sollten. Warum sagt mir dann die Codeanalyse: "Account" sollte den Operator "! =" Definieren, da er IComparable implementiert? Sicher, wenn das eine C# -Klasse gewesen wäre, müsste ich durch all diese Reifen springen, aber in F # sollte das automatisch passieren.

Ich verwende den Regelsatz "Microsoft All Rules". Gilt das nicht für F #, und wenn ja, gibt es einen Regelsatz, den ich verwenden sollte?

+1

Diese Vorschriften zielen auf C#. Sie nehmen nur an, dass Sie C# verwenden und Ihnen entsprechende Warnungen geben. Sind Sie sicher, dass Sie diese Regeln wirklich brauchen? In meiner Erfahrung mit F # fand ich, dass die Sprache mich in die richtige Richtung führt, ich brauche dafür keine externen Werkzeuge. –

+0

Wenn Sie sich den ersten Blogbeitrag ansehen, auf den Sie verwiesen haben, sehen Sie, dass die Datei "Targets" die Sprache vor dem Ausführen der Codeanalyse explizit überprüft. Denkst du nicht, dass es einen Grund dafür gibt? –

+1

@FyodorSoikin Sicher fand ich es komisch, dass ich eine 'systemweite' Datei modifizieren musste, um CA zu bekommen, aber einige Regeln werden hoffentlich immer noch relevant für ein F # -Projekt sein. Ich hoffe auch, dass jemand, der diese Frage liest, mich auf einen F # -Regelsatz verweist, den ich herunterladen kann (wenn so etwas existiert). – SimonAx

Antwort