12
votes

Outil automatique pour vérifier les conventions de code pour C / C ++

Nous avons des étudiants soumettre des exercices dans un cours alors qu'ils doivent adhérer à certaines conventions de code. Par exemple, les noms de fonctions doivent être dans Camelcase. La longueur de la fonction ne doit pas dépasser 50 lignes (les tâches sont suffisamment simples pour diviser) etc. Je cherche un outil qui peut automatiquement vérifier que pour C / C ++ (les deux sont nécessaires). C'est-à-dire que j'aimerais que l'outil se plaint quand quelque chose ne va pas pour que l'étudiant puisse le réparer. Jusqu'à présent, j'ai été incapable de trouver quelque chose qui convient bien. Si la chose est open source et peut être facilement configurée à nos besoins qui seront O.K.


5 commentaires

Vous n'êtes pas susceptible de trouver un outil pour appliquer des noms de fonction Camelcase dans le code C ++, car le style dominant est minuscule_with_underscores, avec un nombre substantiel de déviants qui préfèrent le pascalcasing. Votre meilleur espoir est quelque chose de configurable.


Pourquoi voulez-vous le faire automatiquement? Vous pouvez au moins lire et corriger les devoirs manuellement, c'est votre travail. Vous ne pouvez pas quantifier le style. Vous pouvez quantifier la conformité, mais c'est quelque chose de complètement différent.


Nous quantifions la conformité. Nous voulons le faire automatiquement, alors quand un étudiant a une erreur sur l'une de ces questions, il peut obtenir un courrier électronique automatique pour le réparer et laisser l'heure du vérificateur humain pour une entreprise plus sérieuse.


@wildplasser cela peut être fait automatiquement il n'y a aucun point à le faire manuellement.


Je pense que c'est en fait une très bonne idée. Notre code a été automatiquement vérifié lorsque j'étais à l'université. Les choses comme la fonction de taille limitée sont presque obligatoires si vous souhaitez que votre code soit un minimum lisible. Maintenant, je peux reconnaître instantanément le code écrit par quelqu'un de mon école. J'ai finalement adapté certaines des règles, mais faites de mon mieux pour écrire un code de haute qualité. tsunanet.net/~tsuna/cxxcodingstyle/cxxcodingstyle.pdf


8 Réponses :


2
votes

Vous pouvez utiliser l'outil UNIX indent à force du style de codage C.

voir

homme 1 indent

quand il est installé.


2 commentaires

et courez les résultats à travers un diff avec l'original ...


L'indent ne peut pas "forcer" le nombre maximum de lignes de fonction et de règles impliquant des pauses de ligne détruirait la sortie diff ...



0
votes

Afaik Visual Studio Premium et Ultimate possède une telle option avancée Analyse et des outils de test. Mais ce ne sont pas libres: (


2 commentaires

Oui, mais malheureusement ce n'est pas utile pour notre cas.


/ Analyser effectue une analyse de code statique. Cela n'a rien à voir avec les conventions de style.



0
votes

DOXYGEN produit une sortie XML qui serait très facile à traiter ... Eh bien, du moins aussi simple que de trouver des limites de mots dans des identifiants jamais.


0 commentaires

0
votes

Vous pouvez utiliser le mode de débogage bien rangé, avec un peu de scripts Shell / Perl.

Fondamentalement, l'idée est de laisser exécuter Tidy et de fournir la sortie dans un autre fichier .txt, qui peut ensuite être analysé pour fournir uniquement les sorties d'erreur et vous pouvez obtenir les lignes de code d'origine et exécuter une diff: -)

Peut nécessiter un peu de codage et de script pour aller à droite. Nous utilisions quelque chose de similaire, mais pour un projet et un objectif totalement différent. P>

Sinon, vous pouvez les utiliser: P>

http://gcgreatcode.sourceforge.net/
http://universalindent.sourceforge.net/


0 commentaires

1
votes

Un de ces outils, avec un minimum de personnalisation, fera le travail:

outil de vérification et d'analyse programmable pour C ++: https://bitbucket.org/verateam/vera/ wiki / home
Vérificateur de norme Google C ++: http://google-styleguide.googlecode.com/ svn / coffre / cpplint.py
Vérificateur NORM de l'Université Epita (Projet étudiant): http://code.google.com / p / norme-checker / source / Parcourir /


0 commentaires

0
votes

Un peu en fonction du niveau de détail et des précisions nécessaires et la volonté d'investir (temps pour le faire vous-même ou de l'argent pour payer quelqu'un), vous voudrez peut-être regarder Clang : C'est un compilateur C, C ++ et Object-C écrit C ++ qui expose ses structures de données internes. J'ai utilisé un plug-in pour vérifier le code de divers blunders, la plupart du temps plus petits, les choses nitpicking, cependant. Étant donné que le compilateur expose une ASTA, par exemple, trivial de cracher des avertissements lorsque des moules de style C sont trouvées (cela peut être un peu bruyant sur le code C).

Bien que je ne l'ai pas utilisé, Clang peut apparemment également émettre une représentation XML de ses structures de données internes. Si vous n'avez pas besoin de poser des questions telles que "est la classe a une classe de base accessible au public de B " (c'est-à-dire des questions non triviales nécessitant une inspection sémantique de l'AST), Cela peut être une route plus facile à un outil que vous avez décrit. En fait, dans les deux cas, vous pouvez faire en sorte que vos élèves implémentent les chèques: Si vous avez suffisamment d'élèves et affectez les mêmes chèques plus d'une fois pour vous assurer de récupérer au moins une bonne implémentation, vous pouvez rassembler une collection soignée. ... Et si vos élèves sont comme moi (Eh bien, je ne vous souhaite pas vraiment de devenir aussi terrible que cela) profiterait même de l'exercice.

Une chose, cependant: NE PAS Mark Tout programmateur C ++ vers le bas pour pas en utilisant Camelcase! IciisimpleandimpressiveExampleExampleOfwhyUbeOfcamelcaseIsisReallyBad: You_have_a_much_easier_time_to_read_this! Les programmeurs C ++ ont tendance à faire la bonne chose. Ainsi, des abominations idiotes telles que Camelcase et la notation hongroise sont non utilisées.


0 commentaires

1
votes

QA-CPP pourrait aider ici. Cela fait plus d'un an que je l'ai utilisé, mais vous pouvez le configurer pour faire ce genre de chose.

Vous voudrez peut-être donner aux gars de la recherche de la recherche un appel et de vérifier si vous pouvez le faire.

Cependant, la question reste pourquoi? Si mon conférencier m'a commencé à me préparer pour le style de code sur la fonctionnalité, je pense qu'il avait une vis en vrac. En tant que quelqu'un qui a traversé le système universitaire, vous devriez les préparer à travailler dans le monde réel - Le ciel sait que les choses que je vois à venir, laissent maintenant beaucoup à désirer.


2 commentaires

Dans mon expérience, dans le monde réel, vous devez adhérer aux normes de codage.


Il n'est pas dans le monde réel, il travaille dans une université.



1
votes

Il y a EditorConfig, qui ressemble à son objectif d'être un outil pour appliquer des normes de codage à travers divers éditeurs. Le support et la fonctionnalité sont limités, mais c'est une bonne idée. http://editorconfig.org/


0 commentaires