Question

J'ai récemment étudié le style de contrôle dans le cadre de recherches sur les conventions de codage standard. Bien qu’il semble parfaitement adapté aux projets flambant neufs, il semble présenter un énorme obstacle à l’adoption de projets déjà existants, car il ne semble pas fournir une méthode permettant uniquement de vérifier le code nouveau ou modifié. Peut-être que je me trompe?

Si vous avez une base de code qui n’a jamais eu de norme de codage, cela pourrait être un effort énorme d’intégrer la base de code entière avec une norme en même temps. Permettre de le faire progressivement au fur et à mesure que le code évolue naturellement semble être une approche plus raisonnable. Mais cela ne semble pas être une possibilité avec checkstyle.

Je suppose que cela devrait être lié à un système de contrôle de source pour être possible. Est-ce possible avec Checkstyle ou existe-t-il un autre outil capable de fournir cette fonctionnalité?

Était-ce utile?

La solution

Autant que je sache, Checkstyle est conçu pour analyser la source, sans tenir compte de son historique ni de ses révisions.

Ajouter ce type de fonctionnalité signifie que l’analyse de contrôle de style de script l’alimente avec le sous-ensemble exact de fichiers représentant le delta.

Toutefois, certains types de vérifications risquent d'échouer ou de manquer à leur analyse, comme dupliquer vérification du code .

Donc, pour ce type d'analyse incrémentielle, vous devez non seulement restreindre l'ensemble des sources, mais également l'ensemble des règles que vous souhaitez appliquer, car certaines de ces règles n'ont de sens que sur toutes les sources.

  

Alors, pourquoi ne pas exécuter une vérification complète de chaque fichier, puis filtrer les résultats en fonction des modifications gérées par votre système de contrôle de source? Quelque chose comme ça existe?

Pas à ma connaissance, en particulier avec des plugins tels que eclipse-cs pour eclipse: ils analysent Dans un fichier, ils afficheront tous les avertissements, même si le contrôle de source mentionne que le fichier n’a pas changé depuis une révision donnée.

Seul un script externe pourrait le faire:
Le principe est simple (bien qu’il puisse être un peu lent au moment de l’exécution):

  • pour chaque fichier, effectuez un diff pour vérifier si des modifications ont été apportées
  • si oui,
    • faire un svn blame annoter les lignes avec le numéro de révision contenant la dernière modification.
    • Analysez ensuite le fichier avec checkstyle.
  • Le script peut alors filtrer l'avertissement pour la ligne en cours de modification (ou pour toutes les lignes modifiées après une révision donnée).

Autres conseils

Nous avons développé un plug-in Checkstyle pour SCM-Manager , un outil de gestion des référentiels git, subversion et mercurial. Si activé, il est possible de vérifier le code source engagé par rapport à vos règles Checkstyle. Si la vérification détecte des erreurs, la validation est annulée.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top