3
votes

Supprimer automatiquement les getter-setters avec Lombok?

J'ai un projet. Je n'utilise pas Lombok. J'utilise des getters et des setters créés manuellement.

Maintenant, je veux importer Lombok. Après l'importation, j'utiliserai pour toutes les entités.

Dois-je ajouter manuellement @Data à toutes les entités? Et je dois supprimer toutes les entités manuellement? N'existe-t-il pas un autre moyen de convertir automatiquement ces classes?

Je n'ai trouvé aucune question comme celle-ci:

https://www.google.com/search?q=lombok+automatic+remove+getter+site:stackoverflow.com&num=100&safe=off&sa=X&ved=2ahUKEwjXyqKT39bfAhXysYsKHWAKw=Bi&bi0QrQ7o7 p>


0 commentaires

3 Réponses :


5
votes

Dans IntelliJ IDEA avec le plugin Lombok installé, vous devriez avoir cette fonctionnalité:

  1. Accédez à la classe cible
  2. menu Refactor | Lombok | @Data par défaut

De cette façon, vous pouvez refactoriser vos classes une par une. Je ne sais pas s'il existe des outils de refactoring par lots pour Lombok.

Si vous êtes intéressé par la refactorisation par lots, veuillez voter pour le issue # 574 < / a> dans le tracker de plugin Lombok. Ou même contribuer au code de ce projet.

 refactor menu
(source: github.io )


5 commentaires

Dans Eclipse, vous pouvez sélectionner plusieurs classes dans la barre latérale et appliquer (certaines) opérations en masse. IntelliJ a-t-il une option comme celle-là?


@chrylis chez intellij, lorsque je sélectionne plusieurs classes dans la barre latérale, j'ai l'option d'activer uniquement delombok. Ce que Naxa montre n'est que pour une classe et dans le menu en haut. Eclipse a cette option chrylis?


@chrylis Malheureusement, non. Je l'ai testé sur mon propre projet. Lors de la sélection d'une seule classe, je peux exécuter Refactor | Lombok ou Refactor | Delombok . Lors de la sélection de plusieurs classes, je peux exécuter Refactor | Delombok , mais Refactor | Lombok est désactivé. Essayé dans IntelliJ IDEA EAP 2018.3.3 avec la dernière version du plugin Lombok.


@asdasasd Je voudrais vous avertir qu'il existe un problème en suspens lié à cette action de refactorisation - github.com/mplushnikov/lombok-intellij-plugin/issues/555


MISE À JOUR du commentaire précédent: le numéro 555 est fermé en tant que duplicata de # 688 github .com / mplushnikov / lombok-intellij-plugin / issues / 688



1
votes

Comme une entité compte en moyenne dix champs, il y a beaucoup de texte à supprimer par classe. En utilisant un formatage standard et une seule ligne entre les méthodes, ces 10 getters et dix setters signifient 10 * 2 * 4 = 80 lignes par classe. Tout ce que vous avez à ajouter une seule annotation @Data .

Je me concentrerais donc sur la suppression et j'écrirais une simple regex reconnaissant les getters et les setters triviaux. L'ajout de l'annotation à tous les fichiers modifiés par la suite est quelque chose que je ferais volontiers manuellement, même pour des dizaines d'entités. En oublier un n'est pas un problème car cela conduit à des erreurs de compilation évidentes.


Une expression régulière triviale non testée pour les getters triviaux:

[ \t]+public [\\w<,> ]+ get[A-Z](\\w+)\\(\\)\\s*\\{\\s*return\\s+[a-z]\\1;\\s*\\}\\s*\n

regex peut être parfait (le mien s'arrête, par exemple, lorsque les tableaux sont renvoyés ou lorsque vous utilisez un formatage ou un nommage non standard; c'est facilement réparable, mais d'autres problèmes peuvent survenir). Néanmoins, il peut faire son travail.

Mon expression régulière n'autorise aucun commentaire dans le corps de la méthode, mais je n'appellerais pas un getter commenté trivial.


2 commentaires

Désolé, je n'ai pas compris. Comment vais-je utiliser ce regex, avec un script avec javascript?


@asdasasd Le regex a la syntaxe Java, mais cela n'a guère d'importance. Sous Linux, je choisirais quelque chose comme perl -pi -e '[\ t] + public [\ w <,>] + get [AZ] (\ w +) \ (\) \ s * \ { \ s * return \ s + [az] \ 1; \ s * \} \ s * \ n '* .java , mais soyez prudent car il écrase les sources sans demander (vous utilisez le contrôle de version, non! ). Je fais assez souvent des choses similaires.



0
votes

La meilleure façon dans IntelliJ IDEA est d'utiliser le raccourci Commande + Maj + A et de choisir le refactor que vous voulez.

voir cette capture d'écran


0 commentaires