web-dev-qa-db-fra.com

Supprimer l'avertissement "la variable n'est jamais affectée" dans IntelliJ IDEA

Nous utilisons largement la réflexion pour définir les valeurs des champs de classe dans notre code. Les champs sont accessibles en code mais ne sont jamais attribués sauf par réflexion. Donc IDEA affiche un avertissement "n'est jamais affecté". Si je demande IDEA de supprimer l'inspection, il insère

@SuppressWarnings({"UnusedDeclaration"})

mais cela désactive également la vérification de l'utilisation ou non du champ, ce que nous ne voulons pas.

Est-il de toute façon possible de désactiver uniquement le contrôle "non affecté" et de laisser le contrôle "non utilisé" uniquement pour des champs spécifiques?

La version IDEA est 10,5

48
kabra.dabar

Vous pouvez utiliser une annotation pour la marquer comme champ injecté. (similaire à la façon dont il traiterait @EJB). Les inspections IntelliJ (au moins avec la version 10.5) vous permettent de configurer vos propres annotations pour marquer les champs comme étant injectés.

Sélectionnez Analyser, Inspecter le code dans le menu, puis passez à l'inspection de déclaration inutilisée et vous pouvez configurer une annotation.

50
Jeff Foster
  1. exécuter l'analyse: Analyser> Code d'inspection ...
  2. Cliquez avec le bouton droit sur Déclaration inutilisée (sous le nœud d'arbre de redondance de déclaration)
  3. Cliquez sur "Configurer les annotations ..."
  4. Ajoutez com.google.google.inject.Inject et javax.inject.Inject
23
Jeremy Chone

Pour configurer les annotations dans Android Studio 1.1.0 après avoir inspecté votre code, cliquez avec le bouton droit sur Déclaration inutilisée -> Modifier les paramètres -> Configurer les annotations.

Android Studio 1.1.0

Android Studio 1.1.0

9
tagy22

Si vous ouvrez la fenêtre d'indication des actions (alt + Entrée sur Mac), il devrait vous suggérer de supprimer l'avertissement pour Injecter l'annotation

5
Iliiaz Akhmedov

Non, il semble que l'inspection d'IDEA n'est pas si fine. Même avec des champs injectés par dépendance basés sur des annotations, le même avertissement peut être supprimé pour les champs annotés avec @Inject. L'avertissement "non utilisé" est automatiquement supprimé.

Je viens d'essayer d'exécuter FindBugs-IDEA contre la classe et aucun avertissement ni erreur n'a été émis.

4
Boris Pavlović

Paramètres -> Editeur -> Inspections -> Redondance de déclaration -> Déclaration inutilisée -> Points d'entrée -> Annotations

Une nouvelle fenêtre contextuelle s'ouvre, divisée en 2 zones différentes: "Marquer comme point d'entrée si annoté par" et "Marquer le champ comme implicitement écrit s'il est annoté par". Seulement dans ce dernier vous cliquez sur l'icône "+" (Ajouter une classe d'annotation) et sélectionnez l'annotation Autowired (ou toute annotation que vous utilisez pour l'injection de dépendances).

Cela désactivera l'avertissement "champ privé n'est jamais affecté" mais ne désactivera pas l'avertissement "champ privé n'est jamais utilisé" au cas où vous n'utilisez jamais le champ dans le code de classe, ce qui est le comportement souhaitable.

Cela a fonctionné sur IntelliJ IDEA Community Edition 2018.3.3

0
Bruno 82