J'utilise un générateur d'analyseur qui crée du code quelque peu laid. En conséquence, mon projet Eclipse a plusieurs dizaines d'avertissements émanant des fichiers source générés. Je sais que je peux utiliser l' @SuppressWarning
annotation pour supprimer des avertissements particuliers dans des éléments particuliers, mais toutes les annotations que j'ajoute à la main seront perdues lorsque le générateur d'analyseur s'exécutera à nouveau. Existe-t-il un moyen de configurer Eclipse pour supprimer les avertissements pour un fichier ou un répertoire particulier?
java
eclipse
suppress-warnings
generated-code
Chris Conway
la source
la source
Réponses:
À partir de la version 3.8 M6, Eclipse (pour être exact: le JDT) a des fonctionnalités intégrées pour cela. Il est configurable via le chemin de construction d'un projet: Propriétés du projet> Chemin de construction Java> Compilateur> Source
Annoncé ici: Eclipse 3.8 et 4.2 M6 - Nouveau et remarquable , appelé Ignorer sélectivement les erreurs / avertissements des dossiers source . C'est aussi de là que vient la capture d'écran. Il s'agit de la nouvelle fonctionnalité développée sur le bogue 220928 précédemment lié .
la source
Il existe un ticket pour cela, le bogue 220928 , qui a depuis été complété pour Eclipse 3.8. Veuillez consulter cette réponse pour plus de détails.
Si vous êtes bloqué avec Eclipse 3.7 ou version antérieure: L 'utilisateur "Marc" commentant ce ticket a créé (ou au moins un lien vers) un plugin appelé "warningcleaner" dans le commentaire 35 . J'utilise cela avec beaucoup de succès en attendant que cette fonctionnalité soit intégrée dans Eclipse.
C'est vraiment assez simple:
la source
J'ai résolu cela en utilisant le plugin maven regexp replace - il ne résout pas la cause, mais guérit la douleur:
Notez que je n'ai pas réussi à faire fonctionner la notation **, vous devrez donc peut-être spécifier le chemin exactement.
Voir le commentaire ci-dessous pour une amélioration sur la façon de ne pas générer de doublon @SupressWarnings
la source
^(@SuppressWarnings\(.*?\)\s+)?public class
. En incluant l'annotation dans le modèle, elle n'est pas dupliquée si elle est déjà là.${basedir}/
auparavanttarget
dans la<include>
balise. C'est un peu janky, mais comme cela ne fonctionne que sur les fichiers générés, je vais le prendre!Je pense que le mieux que vous puissiez faire est d'activer les paramètres spécifiques au projet pour afficher les avertissements.
En haut du formulaire se trouve un lien pour configurer les paramètres spécifiques au projet.
la source
L'utilisateur @Jorn a fait allusion au code Ant pour ce faire. Voici ce que j'ai
Notez que <replace> d'Ant effectue un remplacement de texte, pas un remplacement d'expression régulière, il ne peut donc pas utiliser le méta-caractère ^ dans le jeton pour correspondre au début de la ligne comme le fait le plugin maven regexp replace.
Je fais cela en même temps que j'exécute Antlr depuis maven-antrun-plugin dans mon Maven pom, car le plugin ANTLR maven ne fonctionnait pas bien avec le plugin Cobertura maven.
(Je me rends compte que ce n'est pas une réponse à la question d'origine, mais je ne peux pas formater le code Ant dans un commentaire / réponse à une autre réponse, uniquement dans une réponse)
la source
Je ne pense pas qu'Eclipse fournisse intrinsèquement un moyen de le faire au niveau du répertoire (mais je ne suis pas sûr).
Vous pouvez avoir les fichiers générés dans un projet Java distinct et contrôler les avertissements pour ce projet spécifique.
Je préfère généralement placer le code généré automatiquement dans un projet séparé de toute façon.
la source
Vous ne pouvez supprimer les avertissements qu'au niveau du projet. Cependant, vous pouvez configurer votre onglet Problèmes pour supprimer les avertissements des fichiers ou des packages. Allez dans le menu Configurer le contenu et travaillez avec la portée "Sur le jeu de travail:".
la source
Ce petit script python «corrige» les
.classpath
fichiers générés par M2E et ajoute la balise XML requise à tous les dossiers source en commençant partarget/generated-sources
. Vous pouvez simplement l'exécuter à partir du dossier racine de votre projet. De toute évidence, vous devez le réexécuter lorsque les informations du projet Eclipse sont régénérées à partir de M2E. Et le tout à vos risques et périls, évidemment ;-)la source
Je fais cela à quelques grammaires ANTLR, qui génèrent un analyseur Java en utilisant Ant. Le script de construction Ant ajoute le
@SuppressWarnings("all")
à un fichier Java et@Override
à quelques méthodes dans un autre. Je peux voir comment cela se fait exactement, si cela vous intéresse.la source
Dans le cas de ANTLR 2, il est possible de supprimer les avertissements dans le code généré en ajoutant
@SuppressWarnings
avant la déclaration de classe dans le fichier de grammaire, par exemplela source
Cela peut être fait en excluant certains répertoires du chemin de construction (l'exemple suivant est donné en utilisant Eclipse 3.5)
[1] Affichez le chemin de construction Java
[2] Ajouter des répertoires à exclure
la source
Cela fait un moment que j'ai publié le plugin Warning-Cleaner, et maintenant que j'utilise Eclipse 3.8, je n'en ai plus besoin. Cependant, pour ceux qui ont encore besoin de ce plugin, je l'ai publié sur github avec le site de mise à jour sur bintray. Si vous utilisez toujours Eclipse 3.7 ou une version antérieure, cela peut être utile. Consultez ce site pour les détails d'installation.
la source
Si le projet eclipse est généré à partir de gradle à l'aide de la
eclipse
commande du plugin Eclipse, l'Selectively ignore errors/warnings from source folders
option peut être définie en ajoutant ceci au niveau supérieur de votrebuild.gradle
fichier:Cela suppose que les sources générées se trouvent dans un
build/generated/parser
dossier.la source