2010-02-08 25 views
5

Eseguiamo analisi del codice su tutti i nostri file sorgente. Uno dei nostri file sorgente è un file generato da Linq a SQL, che non abbiamo alcun controllo sull'output generato. Il codice generato sta producendo avvertenze sull'analisi del codice che vorrei eliminare. Esiste un modo per sopprimere gli avvertimenti della CA in un file generato dal codice che non implichi la creazione di attributi e/o pragma nel codice stesso (che verrà sovrascritto ogni volta che viene generato il file)?Analisi del codice su un file generato dal generatore di codice - Come eliminare gli avvertimenti?

risposta

5

Le classi hanno l'attributo [GeneratedCode]? Se così è possibile ottenere FxCop a ignorarli:

Utilizzando un progetto FxCop:

  1. Aprire il progetto FxCop in FxCop
  2. Scegliere Project -> Opzioni -> Ortografia & Analisi
  3. Controllare Soppressione dei risultati dell'analisi rispetto al codice generato
  4. Fare clic su OK

Via la linea di comando:

  1. Far passare l'opzione/ignoregeneratedcode, ad esempio:
 FxCopCmd.exe /file:MyAssembly.dll /out:AnalysisResults.xml /ignoregeneratedcode 

http://blogs.msdn.com/fxcop/archive/2008/02/28/faq-how-do-i-prevent-fxcop-1-36-from-firing-warnings-against-generated-code.aspx

+0

fa SuppressMessage funziona se chiamo a fxcopcmd.exe utilizzando riga di comando? – Kiquenet

+0

Sì, dovrebbe fare – Paolo

0

Se si utilizza l'interfaccia grafica FxCop si potrebbe semplicemente escludere questi problemi all'interno del progetto FxCop. Basta fare clic con il tasto destro del mouse sul problema e selezionare Escludi dove è possibile aggiungere un commento.
Ma se si esegue FxCop nella finestra di output, non ne ho la minima idea. Forse potresti controllare se è possibile creare un SuppressMessage a livello di modulo e incollarlo in AssemblyInfo.cs. Ma io non la penso così.

+0

c'è un'altra risposta in una domanda correlata qui su SO che indica che è possibile aggiungere la soppressione a livello di modulo a assemblyinfo.cs, ma l'ho appena provato e non ho potuto farlo funzionare. Potrei aggiungere SuppressMessage a ogni singolo metodo, ma questo è un dolore totale al collo quando voglio ignorare l'errore per ogni cosa in un particolare assemblaggio. Spero che qualcuno risponda con una soluzione a questo !!! – Dave

2

È possibile aggirare la mancanza dell'attributo GeneratedCode utilizzando il proprio ramo delle classi parziali per applicare tale attributo. Ciò significa che qualsiasi codice personalizzato aggiunto (compresi i metodi di implementazione parziale) sarà escluso. Es .:

namespace MyApp.DB { 
    [GeneratedCode("LINQ To SQL", "4.0")] 
    internal partial class MyAppDataContext { 
    } 

    // Repeat for each entity 
} 
0

Il PLINQO (Linq-to-SQL) CodeSmith templates genera anche questo attributo automaticamente. Molti componenti aggiuntivi iniziano anche a ignorare le classi parziali generate con ".generated" nel nome del file.

[System.CodeDom.Compiler.GeneratedCode ("CodeSmith", "5.0.0.0")]

Problemi correlati