2017-08-04 2 views
0

J'ai une classe (constructeur) dont j'ai besoin exposé au sein d'un niveau de l'entreprise, mais il a besoin de réflexion et de justification pour l'utilisation (de tous ses membres). Je voudrais qu'il génère un avertissement de compilateur par défaut, et établisse notre processus d'équipe comme enregistrement de justification d'utilisation en ligne et un pragma suppress ou similaire.Avertissement du compilateur personnalisable suppressable pour les méthodes rarement nécessaires

Idéalement l'avertissement serait texte sur mesure, par exemple:

AVERTISSEMENT: Ce code de sécurité filtres circonvient utilisateur. Si vous avez prévu cela, s'il vous plaît commentez ici comment ce code empêche l'exposition de données sensibles, puis suivez aveC#pragma supprimer.

Idéalement, le message s'affiche sans que les membres de l'équipe aient à installer quoi que ce soit dans leur VS. Nous utilisons VS 2017

J'ai actuellement le code [Obsolete], mais il est sémantiquement inexact et nécessite d'enrouler une ou plusieurs lignes avec #pragma warning disable 0618 suivi de #pragma warning enable 0618. Je préfère encourager la résolution individuelle de chaque ligne, similaire à la syntaxe #pragma suppress.

Si vous suspectez une question en double, veuillez lire ceci: Notez que j'ai passé en revue d'autres questions "similaires". Certains cherchent à marquer le code comme nécessitant une révision (la réponse acceptée est qu'il s'agit d'une utilisation inappropriée des avertissements du compilateur). Certains représentent vraiment le code obsolète, donc la réponse est évidente. Certains voient des règles complexes, comme "vous devez aussi appeler une méthode de fratrie".

+1

Veuillez fournir des informations (telles que des conseils ou une justification) avec des downvotes. Je vous remercie. – shannon

+1

Vous pouvez être intéressé par les réponses et les questions connexes de https://stackoverflow.com/questions/154109. On dirait que vous pouvez le résoudre avec Roslyn – devio

Répondre

1

Je vois cela comme un problème courant avec les endroits qui traitent un grand code hérité, mais je n'ai toujours pas trouvé la solution idéale pour cela. Ce que j'ai fait par le passé, qui a au moins travaillé mes équipes, était d'utiliser la fonction de mappage de code de Visual Studio. Jetez un oeil à Map dependencies across your solutions. Cette carte de code utilise Microsoft DGML qui est un document de style XML conçu pour créer des liens entre les objets. Si vous écrivez un outil ou un script qui analyse ce document et recherche les utilisations du constructeur en question et l'exécutez dans une construction CI, vous pouvez en suivre les utilisations et marquer un build/commit lorsqu'une nouvelle utilisation est détectée. De cette façon, vous n'avez pas à l'installer sur les machines du développeur et à moins que vous ne soyez administrateur, vous ne désactivez pas cette étape.