2010-02-08 16 views
5

Analizę kodu wykonujemy dla wszystkich naszych plików źródłowych. Jednym z naszych plików źródłowych jest plik generowany przez Linq-To-SQL, który nie ma kontroli nad generowanym wyjściem. Wygenerowany kod generuje ostrzeżenia dotyczące analizy kodu, które chciałbym pominąć. Czy istnieje sposób, w jaki mogę pominąć ostrzeżenia CA w pliku generowanym przez kod, który nie wymaga tworzenia atrybutów i/lub pragmy w samym kodzie (który zostanie nadpisany za każdym razem, gdy plik zostanie wygenerowany)?Analiza kodu na wygenerowanym pliku generatora kodu - jak tłumić ostrzeżenia?

Odpowiedz

5

Czy zajęcia mają atrybut [GeneratedCode]? Jeśli tak, możesz dostać FxCop aby je zignorować:

Korzystanie projekt FxCop:

  1. Otwórz projekt FxCop w FxCop
  2. Wybierz Project -> Opcje -> Pisownia & Analizy
  3. Sprawdź Pomiń wyniki analizy w odniesieniu do wygenerowanego kodu
  4. Kliknij OK.

Via linii poleceń:

  1. zdać przełącznika/ignoregeneratedcode, na przykład:
 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

ma SuppressMessage działa, jeśli zadzwonię do fxcopcmd.exe za pomocą wiersza poleceń? – Kiquenet

+0

Tak, to powinna zrobić – Paolo

0

Jeśli używasz FxCop GUI może po prostu wykluczyć te problemy w ramach projektu FxCop. Kliknij problem prawym przyciskiem myszy i wybierz Wyklucz, gdzie możesz, a także dodaj komentarz.
Ale jeśli uruchomisz FxCop w oknie wyjściowym, nie mam pojęcia. Może mógłbyś sprawdzić, czy jest możliwe utworzenie suppressMessage na poziomie modułu i wklejenie go do AssemblyInfo.cs. Ale nie sądzę.

+0

jest inna odpowiedź w pokrewnym pytaniu tutaj na SO, która wskazuje, że możesz dodać tłumienie na poziomie modułu do assemblyinfo.cs, ale właśnie wypróbowałem to i nie mogłem zmusić go do pracy. Mogę dodać SuppressMessage do każdej indywidualnej metody, ale to jest całkowity ból w szyi, kiedy chcę zignorować błąd dla wszystkiego w konkretnym zespole. Mamy nadzieję, że ktoś odpowie na to rozwiązanie !!! – Dave

2

Możesz obejść brak atrybutu GeneratedCode, używając własnego oddziału klas częściowych, aby zastosować ten atrybut. Oznacza to, że każdy niestandardowy kod, który dodasz (w tym wdrożenie metod częściowych) zostanie wykluczony. Np .:

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

    // Repeat for each entity 
} 
0

Ten atrybut automatycznie generuje ten atrybut. Większość dodatków zaczyna ignorować częściowe klasy generowane z ".generated" w nazwie pliku.

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

Powiązane problemy