138 votes

"Traiter tous les avertissements comme des erreurs sauf ..." dans Visual Studio

Dans Visual Studio, je peux sélectionner le "Traiter les avertissements comme des erreurs" option pour éviter que mon code à partir de la compilation si il y a des avertissements. Notre équipe utilise cette option, mais il y a deux mises en garde que nous tenons à garder comme des avertissements.

Il y a une option pour supprimer les avertissements, mais nous NE voulons pas qu'ils se présentent comme des avertissements, donc qui ne fonctionne pas.

Il semble que la seule façon d'obtenir le comportement que nous voulons est de saisir une liste de tous les C# avertissement nombre dans les "avertissements" zone de texte, sauf les deux nous voulons traités comme des avertissements.

Je suis la vérification d'un fichier au contrôle de code source pour en garder la trace de ceux qui nous traitent comme des erreurs


C# 3.5 avertissement nombres à traiter comme des erreurs:

183,184,197,420,465,602,626,657,658,672,684,688,809,824,1058,1060,1200,
1201,1202,1203,1522,1570,1574,1580,1581,1584,1589,1590,1592,1598,1607,
1616,1633,1634,1635,1645,1658,1682,1683,1684,1685,1687,1690,1691,1692,
1694,1695,1696,1697,1699,1707,1709,1720,1723,1911,1956,1957,2002,2014,
2023,2029,3000,3001,3002,3003,3004,3005,3006,3007,3008,3009,3010,3011,
3012,3013,3014,3015,3016,3017,3018,3022,3023,3026,3027,5000,108,114,162,
164,251,252,253,278,279,280,435,436,437,440,444,458,464,467,469,472,618,
652,728,1571,1572,1587,1668,1698,1710,1711,1927,3019,3021,67,105,168,169,
219,282,414,419,642,659,660,661,665,675,693,1700,1717,1718,28,78,109,402,
422,429,628,649,1573,1591,1610,1712,3024

C# 3.5 avertissement numéros qui restent comme des avertissements:

612 - X is obsolete
1030 - #warning This is a warning
1701, 1702 - Warnings that are suppressed by the C# compiler by 
    default and shouldn't show up at all.


Le plus grand inconvénient de cette approche est que quelques mises en garde n'ont pas de numéros, de sorte qu'ils ne peuvent pas être référencés de façon explicite. Par exemple, "n'a pas Pu résoudre cette référence. N'a pas pu localiser de l'assemblée de Données....'"

Personne ne sait d'une meilleure façon de le faire?


Clarifier pour ceux qui ne le voient pas tout de suite pourquoi c'est utile. Pensez à la façon dont la plupart des avertissements de travail. Ils vous disent quelque chose est un peu dans le code que vous venez d'écrire. Il faut environ 10 secondes pour les corriger, et qui maintient la base de code plus propre.

Le "Obsolète" avertissement est très différent de celui-ci. Parfois fixation, il suffit de consommer une nouvelle signature de la méthode. Mais si l'ensemble de la classe est obsolète, et que vous avez l'utilisation de ce éparpillés à travers des centaines de milliers de lignes de code, il pourrait prendre des semaines ou plus à corriger. Vous ne voulez pas que la génération d'être brisé pour longtemps, mais vous certainement NE voulez voir un avertissement à ce sujet. Ce n'est pas seulement un cas hypothétique--ce qui nous est arrivé.

Littérale "#" avertissement les avertissements sont également uniques. J'ai souvent envie de le vérifier, mais je ne veux pas briser la construction.

176voto

SvenL Points 992

Vous pouvez ajouter un WarningsNotAsErrors -tag dans le fichier de projet.

 <PropertyGroup>
    ...
    ...
    <WarningsNotAsErrors>618,1030,1701,1702</WarningsNotAsErrors>
</PropertyGroup>
 

Note: 612 et 618 sont tous deux des avertissements sur Obsolete, ne sais pas la différence mais le projet sur lequel je travaille rapporte obsolète avec avertissement 618.

2voto

Tim Points 13334

Pourquoi voulez-vous continuer de voir mises en garde que vous ne sont pas traiter comme des erreurs? Je suis confus au sujet de pourquoi c'est souhaitable - soit à vous de les corriger ou vous n'avez pas.

Deux différents build/fichiers de solution de travail ou un script pour copier un et ensuite de modifier les mises en garde et d'avertissement de niveau approprié. Il semble que peut-être vous voulez un peu d'exécutions du compilateur affichez, mais d'autres que vous voulez continuer.

Si différents commutateurs de compilateur semble être une bonne façon d'aller. Vous pouvez faire cela avec des objectifs différents - une case debug ou release et les autres étiquetés convenablement sur les avertissements.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X