2008-12-09 7 views
21

Ist es möglich, einen vollständigen Namensraum von allen FxCop Analyse auszuschließen, während immer noch den Rest der Baugruppe Analyse der SuppressMessageAttribute mit?Vollständigen Namespace von FxCop-Codeanalyse ausschließen?

In meinem aktuellen Fall habe ich eine Reihe von Klassen generiert von LINQ to SQL, die eine Menge von FxCop Probleme verursachen, und natürlich werde ich nicht alle diese ändern FxCop-Standards, wie viele dieser Änderungen würde weg sein, wenn ich die Klassen neu generiert habe.

Ich weiß, dass FxCop ein Projekt Option Analyse generierten Code zu unterdrücken, aber es scheint nicht, die Einheit und Kontextklassen von SQL LINQ 2 als generierten Code erstellt zu erkennen.

+0

Dies ist eine exakte Kopie, weil die andere Frage auch über Linq-to-SQL fragt; aber ich denke, die Antworten sollten zusammengeführt werden und der Stub für die Suchfähigkeit beibehalten werden. –

Antwort

17

Wenn Sie Ihre Klassen mit dem [GeneratedCode] Attribute markieren, können Sie die/ignoregeneratedcode Flagge mit FxCop verwenden wie in diesem MSDN Beitrag beschrieben:

FAQ: How do I prevent FxCop from firing warnings against generated code

Sie haben eine neue Code-Datei hinzufügen können und implementieren neue Teilklassen gibt das Attribut zu den Klassen hinzuzufügen:

[GeneratedCode] 
public partial class MainDataContext { } 

So stellen Sie sicher, dass Sie alles auf den richtigen Namespace hinzufügen, wenn Sie Ihre neue Datei erstellen.

+0

Wie diese Adresse des Frage? die Frage war über einen Namespace, dies nur für eine einzige Klasse beheben –

+1

@Juan - Lesen Sie die Frage mehr. Das OP fragt wirklich, wie man "eine Menge von Klassen ausschließen kann, die von LINQ nach SQL generiert werden". Dies ist die Lösung für dieses Problem. Leider gibt es keine Lösung für einen gesamten Namespace. –

1

Verwenden Sie den erzeugten Code Attribut, heres die blog post aus dem Code-Analyse-Team zu diesem Thema.

Diese an der Spitze des Namespace sollte es tun:

[GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "9.0.0.0")] 
+0

Leider kann man diese Attribute Namespaces nicht hinzufügen, soweit ich weiß. Das würde bedeuten, dass ich es manuell jeder generierten Klasse hinzufügen müsste - das kann nicht die ideale Lösung sein. : D – hangy

+4

ziemlich viel. Der wahre Schmerz ist, wenn Sie den Code aus irgendeinem Grund neu generieren müssen, müssen Sie das Attribut erneut auf. Wenn die Klassen Linq to Sql erzeugt partials sind, können Sie die Attribute von dem generierten Code halten. Ich habe ein ähnliches Problem mit der EF-Klasse. – Chane

1
<Assembly: SuppressMessage("Microsoft.Design", _ 
    "CA1020:AvoidNamespacesWithFewTypes", _ 
    Scope:="namespace", _ 
    Target:="Missico.IO")> 

Put-Anweisung in GlobalSuppressions.vb an der Wurzel des Projektes.

Alles, was ich VB Beispiel haben.

+0

Das funktioniert nicht für viele Codegenerierungswarnungen in VS 2010 Code Analysis: scheint nicht auf Namespace-Ebene unterdrückt werden. Aber es ist eine weitere Option: http://stackoverflow.com/questions/2221881/code-analysis-on-a-code-generator-generated-file-how-to-suppress-warnings/2739791#2739791 – Richard

4

ein [GeneratedCode] attribute die Klassen hinzufügen.
EDIT: Ich mit den gleichen Namen zu partiellen Klassen gemeint, wie die anderen Antwort erklärt.