Meilleures pratiques pour la mise en forme de code sur de grands projets
Je maintiens le construire pour une grande Java EE/Maven/Hudson/Perforce projet avec environ 20 développeurs répartis dans le monde entier.
La solution en place pour la mise en forme du code est au format de la base de code à l'aide de Bagnole lorsque le développeur exécute la construction, assurant de ce fait le code qui n'a pas été formatée est formaté avant le check-in.
Le principal problème avec cette solution est que si le développeur n'a pas de fonctionner à plein Maven build avant de vérifier dans (dire qu'ils exécuter les tests unitaires à partir de Eclipse) leur code n'obtiendrez pas formaté. Alors, la prochaine développeur qui a modifier le fichier peut avoir beaucoup, beaucoup de différences dans sans rapport avec les articles du code après avoir exécuté le formateur.
Ce que la mise en forme source de la stratégie a fonctionné le mieux pour vous sur de grands projets? Une autre option que j'avais envisagé est de formater tous les soirs à l'aide d'un processus automatisé.
source d'informationauteur SamBeran
Vous devez vous connecter pour publier un commentaire.
Le Maven build doit être juste la déclaration des erreurs de mise en forme en utilisant quelque chose comme Checkstyle et pas automatiquement la mise en forme du code. C'est ce que votre description semble le laisser entendre. De cette façon, les erreurs sont signalées par le développeur/Hudson au moment de la construction et ils peuvent être résolus que nécessaire.
Je voudrais aussi vous suggérons d'utiliser un outil comme Sonar de conserver un historique des erreurs de mise en forme au fil du temps (voir leur temps les fonctionnalités de la machine).
Afin d'obtenir une mise en forme cohérente à vos projets vous avez besoin pour configurer les outils pour le faire automatiquement. Je vous suggère les suivantes:
Eclipse Formateur
Pour Eclipse il y a une option dans les Préférences (Java->Style de Code->Formateur) où vous pouvez configurer la façon dont vous voulez que vos projets soient formatés. Créer un nouveau profil et de mettre votre configuration.
Une fois que vous avez fini, il y a une fonction d'export (il est bien caché, cliquez sur Modifier, puis à l'Exportation). Passer de la configuration pour le reste de l'équipe afin que les pouvez l'importer.
Eclipse D'Enregistrer Les Actions
De toujours avoir le formateur configuré n'est pas vous garantir que les développeurs de formater le code avant de vous engager vous devez configurer automatique du format.
Aller dans les Préférences de nouveau (Java->Editor->Enregistrer les Actions) et sélectionnez le Format de Code Source. De cette façon, le code est mis en forme lors de l'enregistrement du fichier.
Eclipse Checkstyle Plugin
Certains développeurs peuvent oublier de faire ces étapes correctement, vous avez donc besoin d'un moyen de le localiser.
Installer le Checkstyle plugin pour Eclipse:
Une fois que vous installez le plugin, vous pouvez créer une configuration pour elle. La configuration peut ensuite être exporté pour le reste de l'équipe, ou encore mieux téléchargés vers un serveur et de référence pour la configuration à distance.
L'avantage d'avoir une configuration à distance est que vous pouvez également faire référence à elle par le maven-checkstyle-plugin et il peut vous donner des rapports en le lançant sur un serveur CI.
Si vous voulez être hard-core, vous pouvez définir la configuration de base (ceux fait automatiquement par le formateur) pour les erreurs au lieu de mises en garde afin que le développeur avec un problème de configuration d'eclipse voit l'erreur avant de s'engager.
Pré-configuré Eclipse
Si vous voulez passer au niveau suivant, vous créez un pré-configuré eclipse, et de distribuer cette version pour les développeurs afin qu'ils n'ont pas besoin de faire quoi que ce soit.
Effets secondaires bonus: vous garder hors de la version incohérences sur la plate-forme de développement. Gestion de la Configuration n'est pas seulement pour le code source, mais les outils de développement également. Garde les choses de plus en plus prévisible.
Une manière de traiter ce serait de formater le code dans un pre-commit hook avec quelque chose comme Bagnole ou JIndent ou même Éclipse intégré dans le code formatter (que vous pouvez appeler à partir de la ligne de commande). Autant que je sache, c'est la seule façon de s'assurer que de version de code est toujours correctement formaté, si vous ne pouvez pas appliquer les gens pour exécuter une génération automatique avant validation. Mais je ne sais pas si Perforce prend en charge pre-commit crochets.
Si elle ne fonctionne pas, une autre option serait d'utiliser la Bagnole Plugin Maven ou la Maven Plugin Checkstyle au moment de la construction et que le build échoue lorsqu'une règle est cassé (et le moteur CI le signaler). Construire des échecs pour les cosmétiques, les choses peuvent être assez ennuyeux.
Donc, en effet, l'exécution d'une soirée un processus de format, le code pourrait être une alternative. Dans ce cas, le Bagnole Plugin Maven ou les autres outils mentionnés peut vous aider, il va en fait dépendre si vous souhaitez utiliser Maven ou pas pour ce travail.
Si tous (ou la plupart) des développeurs sont à l'aide d'Eclipse, vous pouvez exporter les règles de mise en forme et d'enregistrer les actions de votre équipe goût et disposent de tout le monde partagent les mêmes préférences.
La meilleure solution que j'ai vu c'est l'approche adoptée par CXFdécrit en détail dans Connexion Maven, Eclipse, Checkstyle, et PMD.
Ils intègrent checkstyle avec Eclipseà l'aide de l'Éclipse-cs plugin Dimitris mentionné dans une autre réponse. Cela permet à Eclipse pour générer des erreurs si leur code sauts de n'importe quel code de règles de mise en forme. Ils intègrent également checkstyle avec Mavende sorte que le fait de vérifier l'étape échoue si leur code n'est pas conforme à la checkstyle règles. Ils ont aussi un ensemble redondant de l'auto-mise en forme des règles définies au sein d'Eclipse, ce qui rend facile et rapide à mettre en forme le code qui va passer checkstyle normes.
Cela implique beaucoup de configuration pour Eclipse. Ils automatiser cette étape de la constitution d'une collection de plugins Maven qui va générer un CXF-spécifique de l'espace de travail, qui comprend le nécessaire checkstyle/autoformatting de configuration.
Vous pouvez vous mettre un checkin règle dans Perforce pour formater le code de l'archivage? Je n'ai pas utilisé perforce donc je ne peut pas commenter - mais c'est le genre de chose que nous avons pensé qu'il serait approprié lorsque nous avons discuté de la mise en forme du code d'application des options dans notre équipe.
Cela peut ne pas aider beaucoup, mais la Aller de la langue source de l'arbre automatiquement les formats de quoi vous pousser, à l'aide d'une application en ligne de commande qu'ils ont mis en place. C'est fait dans Mercurial, pas Nécessairement. Mais, peut-être vous pouvez voir comment ils ont fait. Les détails doivent être quelque part dans golang.org.
Si la mise en forme est essentiel pour vous, alors configurer Forcément de faire sa propre mise en forme de l'exécuter sur l'archivage, et de dire ce qu'il refuse de l'engager si la version mise en forme du fichier source est différente de celle présentée.
Personnellement, nous utiliserons Eclipse d'Enregistrer les Actions, et dites-lui de reformater lors de l'enregistrement. Assez bon pour nous.