2012-12-14 15 views
18

W czasie kompilacji chciałbym móc wydrukować komunikat do okna wyjściowego kompilacji bez uprzedniego ostrzeżenia. To znaczy. Na liście błędów Visual Studio chciałbym, aby była wyświetlana tylko wtedy, gdy filtr "Wiadomości" jest włączony.Wydrukuj komunikat na wyjściu kompilacji (to nie jest ostrzeżenie).

Tak, chcę identycznej funkcjonalności do #warning Warning Message Ale nie chcę, aby była klasyfikowana jako ostrzeżenie.

Kontekst:

Mam wiele projektów, które obecnie generują dużo ostrzeżeń. Najpierw chciałbym zapobiec wprowadzeniu ostrzeżeń new. Tak, mam:

  1. toczone na „ostrzeżenia jako błędy”
  2. przeszedł i używanych #pragma warning disable/restore aby wyeliminować istniejące ostrzeżenia.

Jednak dla ostrzeżeń, które wyłączyłem, chciałbym wydrukować komunikat informujący, że istnieje ostrzeżenie, które należy zbadać (ponieważ nie zbadałem jeszcze, co należy zrobić w tych przypadkach ostrzeżenia). Na przykład wiele ostrzeżeń to "przestarzałe" ostrzeżenia o typie, w których w pewnym momencie musimy przejść i wykonać jakąś pracę. Nie chcę, żeby te ostrzeżenia zniknęły.

Idealnie, chciałbym zrobić coś takiego:

#pragma warning disable 0618 
#message Existing Warning: 0618: IObsoleteInterface is obsolete. 
class MyClass : IObsoleteInterface 
#pragma warning restore 0618 

Jestem otwarty na innych metod radzenia sobie z problemem.

+0

Napisz wee Noddy szukać #pragma warning wyłączyć, a wyjściem, a następnie wywołać ją w imprezie po budować? –

+0

Innym sposobem obramowania problemu: włącz "ostrzeżenia jako błędy na", wszystkie ostrzeżenia są teraz błędami. A następnie masz sposób, aby zmienić to, co jest teraz błędem z powrotem w ostrzeżenie. Tak więc mechanizm uzyskiwania ostrzeżeń, nawet gdy włączone są "ostrzeżenia jako błędy". –

+0

@Dan, tak. Byłoby wspaniale. –

Odpowiedz

6

Zgodnie z MSDN nie można przedłużyć #pragma: http://msdn.microsoft.com/en-us/library/x74w198a.aspx

Ale jeśli ErrorList nie jest ścisły wymóg, można obejść ten problem: można używać komentarzy, aby wyróżnić co dla Ciebie ważne. Jeśli dodasz specjalny token na początku komentarza, będziesz mógł go śledzić w oknie Lista zadań.
Tak Twój kod będzie wyglądać następująco:

#pragma warning disable 0618 
//TODO: Existing Warning: 0618: IObsoleteInterface is obsolete. 
class MyClass : IObsoleteInterface 
#pragma warning restore 0618 

A potem, jeśli będziesz otwarty widok -> Lista zadań -> wybierz Komentarze w rozwijanym, zobaczysz swój komentarz tam.
Są 3 predefiniowane tokeny: TODO, hack i cofnąć - i można dodawać własne jak wiadomość i zmienić jego priorytet, aby Twój kod wyglądać podobnie do tego, co początkowo spodziewać:

#pragma warning disable 0618 
//MESSAGE: Existing Warning: 0618: IObsoleteInterface is obsolete. 
class MyClass : IObsoleteInterface 
#pragma warning restore 0618 

Więcej informacji na temat tokenów ty znajdzie tutaj: http://msdn.microsoft.com/en-us/library/zce12xx2(v=vs.100).aspx

Warto wspomnieć, że jeśli używasz Resharper, ma inne narzędzie dla TODO. Znajdę go tutaj: ReSharper -> Narzędzia -> Zadania Przedmioty

+0

Dzięki, myślę, że to może być rozwiązanie "wystarczająco blisko". Naprawdę miałem nadzieję, że będzie coś bardziej "w twarz" w czasie budowy, ale to zapewnia rozwiązanie dla ich śledzenia. Wrócę i oznaczę to jako "zaakceptowaną odpowiedź", jeśli nie otrzymam odpowiedzi, które wkrótce mi się podobają. –

1

Powinieneś rzucić okiem na parametr csc task's WarningsNotAsErrors. Kiedy lista "akceptowalnych" ostrzeżeń jest określona dla tego parametru z TreatWarningsAsErrors = true, powinieneś się zalogować do nowych ostrzeżeń, podczas gdy nowe pojawią się jako błędy.

Oczywiście nie jest to dokładnie istniejący kontra nowych ostrzeżeń ale sposób pracować z dokładnych liczb ostrzegawczych, że są wygodne z pozostawieniem w.

Ale moja pierwsza sugestia byłoby po prostu naprawić je. Po ukryciu poza budową rzadko są adresowane.

+0

Może to zadziałać, jeśli mogę wyodrębnić ostrzeżenia, które * ja * utworzę ręcznie (tj. Te utworzone za pomocą #warning). Chciałbym naprawić ostrzeżenia, ale niektóre z nich będą wymagały czasu i działania innych, więc chciałbym w międzyczasie zapobiec tworzeniu nowych. –

2

Jeśli używasz wersji "Premium" lub "Ultimate" Visual Studio, ma ona funkcję analizy kodu za pomocą zestawu reguł.

Dla każdego projektu, po kliknięciu prawym przyciskiem myszy na & przejdź do właściwości, wybierz kartę Analiza kodu, ma różne ustawienia out of box, jak traktując ostrzeżenia jako błąd, wyłączając niektóre ostrzeżenia.

Możesz skonfigurować ostrzeżenie, aby było ignorowane lub traktowane jako błąd. Możesz używać out-of-box zestawów reguł Microsoft lub możesz zbudować niestandardowy zestaw reguł zgodnie z Twoimi wymaganiami (co nie jest trudne & pracował dla mojego wymagania).

Aby umożliwić analizę kodu dla kodu zarządzanego:

  1. Wybierz projekt w Solution Explorer.
  2. W menu Projekt kliknij polecenie Właściwości.
  3. Kliknij Analiza kodu.
  4. Wybierz opcję Włącz analizę kodu podczas kompilacji (określa stałą CODE_ANALYSIS).

Szczegółowe informacje na temat konfigurowania Code Analysis, prosimy odwiedzić: http://seesharper.wordpress.com/2010/04/02/code-analysis-in-team-build-2010/

Dla budowania niestandardowych zestawów reguł:

http://msdn.microsoft.com/en-us/library/dd264974.aspx

http://blogs.msdn.com/b/codeanalysis/archive/2010/03/26/how-to-write-custom-static-code-analysis-rules-and-integrate-them-into-visual-studio-2010.aspx

do nauki o zestaw reguł analizy kodu &:

http://msdn.microsoft.com/en-us/library/dd264996.aspx

+0

Interesujące. Mam premię, więc spróbuję, kiedy wrócę do pracy. Dzięki! –

Powiązane problemy