8
votes

Comment puis-je trouver toutes les importations inutilisées par programme?

Dans mon cas, il y a deux raisons de faire cela:

  • Parfois, les gens par erreur sont des classes d'importation qui présentent dans MacBooks JDK mais absent sous Linux. Qui provoque la construction d'échec des serveurs CI qui sont des boîtes à base de Linux. Je n'arrive pas souvent, mais quand c'est arrivé, je pense qu'il devrait y avoir un moyen plus intelligent de savoir que plus tôt.
  • Les importations inutilisées déclenchent l'avertissement dans l'analyse IDE / code. De temps en temps, quelqu'un a besoin de passer du temps à nettoyer ce genre de choses. Même si son simple clic droit sur IDE, vous devez toujours commettre vos modifications et vous assurer que tout va bien sur la construction.

    Je suis curieux s'il y a un moyen de trouver des importations non utilisées par programme (disons du test de l'unité) et échoue localement s'il y en a.

    Peut-être échoué à une construction en raison de l'importation inutilisée sonne dure, mais si cela fait gagner du temps pour l'équipe globale, cela fait de la sorte à le faire (aimerait entendre l'opinion à ce sujet).

    mise à jour :

    j'ai suivi Yegor256"> Yegor256 Suggestion et mise à contrôle de contrôle incorporé avec un petit sous-ensemble initialement petit de Conventions de Code Sun (Importations inutilisées en est l'un d'entre eux) et a fait briser une construction si des violations trouvées.

    Après une semaine d'essai, nous avons zéro Importations inutilisées dans notre codebase et surprenant des plaintes sur cette règle (à la manière, la checkstyle est vraiment rapide: analysant ~ 100kloc en prenant moins d'une seconde).

    Quant à l'utilisation de l'IDE pour une telle analyse: oui, c'est bon choix, mais que ce type de contrôle exécuté dans le cadre de la construction automatisée est meilleur.


2 commentaires

Tout comme mis à part, la plupart des IDE modernes disposent d'un style de commandement «Correction des importations» qui nettoient les importations.


Notez que cela ne fera pas appliquer les chèques alors que l'intégration de l'outil de construction le fait et vous n'aurez pas une seule commission avec une entrée inutilisée.


6 Réponses :


9
votes

Ce que vous essayez de faire s'appelle Analyse de code statique . CheckStyle peut vous aider. Si vous utilisez Maven, ce plugin fera l'automatisation pour vous: http: // maven.apache.org/plugins/maven-checkstyle-plugin/

Vous pouvez également consulter qulice.com (je suis l'un de ses développeurs), qui intègre Quelques outils d'analyse statique et leur pré-configure (incl. CheckStyle, PMD, FindBugs).


1 commentaires

Oui, votre script CI Catégorie peut appeler des plugins de checkStyle, PMD ou FindBugs. Le même script de construction peut être exécuté dans les machines locales pour détecter ces problèmes et s'assurer qu'ils sont fixés avant l'enregistrement suivant.



0
votes

En informatique, le nom donné à un tel processus d'analyse du code sans exécution est appelé analyse de code statique . .

Essayez d'utiliser un IDE, j'utilise Eclipse, qui marque toutes les importations inutilisées et les variables inutilisées ou les méthodes d'une couleur jaune soulignée ...


0 commentaires

0
votes

Ce ne sont pas ces questions non liées? Si vous importez uniquement des cours présents dans le JDK local, ces importations sont utilisées (simplement insatisfaites). Pour le problème, je recommande de la résoudre dans l'IDE afin que le problème soit détecté lorsque le code est écrit, plutôt qu'avant de la vérification (plus tôt la détection, plus la solution ...).

Dans Eclipse, vous pouvez empêcher les importations insatisfaites avec règles d'accès et automatiquement Correction des importations Chaque fois qu'un fichier source est enregistré en activant le Enregistrer l'action . Si vous cochez ces paramètres dans le contrôle de version, vous pouvez facilement les partager avec l'équipe.


0 commentaires

1
votes

Je suis curieux s'il y a un moyen de trouver des importations inutilisées par programme (disons du test de l'unité) et d'échouer dans la construction locale s'il y en a.

J'utilise Intellij pour organiser des importations, cela supprime toutes les importations inutilisées. Vous pouvez le faire avec une touche de raccourci du sommet de votre base de code pour corriger toutes les importations. (Il dispose également de plus de 700 autres types de contrôles statiques et de correctifs)

Peut-être échoué à une construction en raison de l'importation inutilisée sonne dure, mais si cela fait gagner du temps pour l'équipe globale, cela fait de la sorte à le faire (aimerait entendre l'opinion à ce sujet).

J'ai une chèque Intellij Code qui formaté et avec les importations organisées afin que le problème ne se présente jamais en premier lieu. ;)


5 commentaires

Merci Peter. Christian a suggéré la même solution. Dans mon cas, nous avons une équipe de plus de 20 ans de travail sur la même basebase et que les mêmes normes de code ne sont pas possibles (pour moi-même, y compris) à moins qu'elles ne soient au niveau du projet (paramètres du projet sous contrôle de la source) ou en échec de la construction.


Je ne vois pas comment rendre l'échec de la construction sans résoudre le problème aidera. À un moment donné, le code doit être résolu de toute façon. Je le ferais automatique.


Faire échec de la construction sans réparer le problème aidera, s'il est utilisé comme "drapeau rouge" dans un mécanisme d'intégration continue


@Peter, ce que je veux dire, c'est qu'une fois que toutes les importations inutilisées sont supprimées, le mécanisme d'échec pourrait être introduit pour éviter la régression.


@ yegor256, +1. Je pense que nous sommes sur la même page.



4
votes

Si vous utilisez Eclipse IDE ou Intellij Idea, vous pouvez les configurer à

1a. Organiser les importations / supprimer les importations inutilisées lors de la sauvegarde ou avant de valider (voir Préférences de nettoyage)

1b. Basculez l'avertissement «Importations inutilisées» à une erreur (voir Paramètres d'erreur)

2a. Configurez un JRE qui n'inclut pas COM. * Stuff

2b. Configurez l'avertissement de l'utilisation de l'API propriétaire de la JRE pour être une erreur

Vous pouvez toujours vouloir vérifier cela sur le serveur de construction, cependant. Dans ce cas, plus les choses plus compliquées, comme la configuration de CheckStyle, seraient toujours nécessaires.


2 commentaires

Nous utilisons à la fois Eclipse et Intellij. Préférences de nettoyage - sont-elles fabriquées au niveau du projet ou au niveau de l'IDE? Je demande parce que les paramètres de projet sont stockés dans Mercurial, mais les paramètres IDE sont uniques à chaque développeur.


Cela fait longtemps que j'ai utilisé une idée, pas sûr de là. Dans Eclipse, vous pouvez remplacer les paramètres globaux avec des paramètres spécifiques au projet. Donc, si vous voulez les partager, il convient de les spécifier au niveau du projet.



1
votes

Je vois beaucoup de commentaires de la même manière qui utilisent cet IDE ou cet IDE. Mais tous mes amis essaient de comprendre la différence. Faire quelque chose de manière programmatique est différent et que l'utilisation de l'IDE est différente.

Si je veux qu'un processus soit programmatique, la suggestion de l'IDE n'est pas utile. Il pourrait être possible que quelqu'un pose cette question parce qu'il construit un processus complet et cette étape en fait partie. Comment l'incidence de l'IDE l'aiderait à utiliser différentes machines et systèmes d'exploitation où CI fonctionne?

Je suis aussi en train de construire un outil sur des lignes similaires. Je l'ai accompli à un certain niveau, mais il ouvre de manière programmable l'IDE et la ferme automatiquement et corrige également le code source. Mais l'ouverture de Linux pourrait être une question pour moi.

Comprendre la vue de quelqu'un avant de répondre est vraiment très important.


1 commentaires

Votre commentaire est complètement correct - mais cela devrait être un commentaire, pas une réponse, car il ne répond pas (ni tenter de répondre) la question. (Je suis d'accord avec toi!)