2 votes

Comment fournir un correctif pour tous les paramètres de la méthode (Roslyn - FixProvider)

J'ai écrit un analyseur de code et un fournisseur de correctifs pour ajouter des validations afin de s'assurer que l'argument n'est pas nul. Cela fonctionne bien pour plusieurs méthodes, mais je ne peux pas vérifier tous les paramètres en même temps. L'analyseur marquera tous les paramètres qui ne sont pas déjà vérifiés, mais la correction ne peut être faite que pour un seul paramètre à la fois.

Détails : Il ne s'agit pas d'un problème de nœuds immuables, le code ajoute une déclaration d'utilisation si nécessaire.

Dans l'analyseur, j'enregistre un diagnostic pour chaque paramètre.

  Diagnostic diagnostic = Diagnostic.Create(
                    Rule,
                    parameter.GetLocation(),
                    null,
                    prop.ToImmutableDictionary(),
                    parameter.Identifier.Text);

Dans le fournisseur de correctifs, je prends le premier diagnostic du contexte et j'enregistre le code de correctif correspondant.

Il se peut que je fasse quelque chose de mal et que je n'obtienne pas plusieurs diagnostics dans le fournisseur de correctifs.

Quelle est la bonne façon d'effectuer des corrections multiples ? La clé/id du diagnostic doit-elle être la même ? Ou bien le diagnostic doit-il être enregistré directement pour se plaindre de tous les paramètres ?

1voto

Divisadero Points 1

J'ai trouvé, je l'espère, une bonne solution :

L'analyseur rapporte des diagnostics pour chaque paramètre invalide afin que vous puissiez générer une validation pour un paramètre spécifique. Ensuite, l'analyseur signale un autre diagnostic pour tous les paramètres non valides et définit l'identifiant de la méthode comme emplacement.

Le même fournisseur de correctifs est utilisé pour résoudre les deux types de diagnostics. Le diagnostic de paramètre spécifique (qui envoie les données d'un seul paramètre) et le diagnostic de tous les paramètres (qui envoie l'ensemble des données des paramètres).

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