Question

J'ai l'obligation de créer une grande quantité de code conforme à la norme MISRA.
Première question: quelqu'un peut-il donner une estimation pour passer du code bien écrit pour un système intégré basé sur l'expérience? Je comprends que " bien écrit " est mal défini et vague, alors je demande une estimation brute.
Deuxième question: toute recommandation d'outil pouvant être personnalisable (c'est-à-dire autoriser la suppression d'avertissements spécifiques) et utilisée dans un environnement de construction automatique (interface de ligne de commande, i.e)
Toute autre suggestion utile pouvant vous aider dans cette tâche.
Merci Ilya.

Était-ce utile?

La solution

Je recommande également vivement PC-Lint. Si vous compilez votre code avec Visual Studio, je vous recommande un plug-in 'Visual Lint' de Riverblade. Si vous ne pouvez pas compiler le code dans Visual Studio, vous pouvez toujours exécuter PC-Lint à partir de la ligne de commande pour obtenir de bons résultats.

Certains compilateurs de systèmes intégrés proposent des tests de conformité MISRA sous forme d’avertissements du compilateur. J'utilise le compilateur IAR pour le développement Arm7 / Arm9. Il fournit une liste de contrôle de conformité MISRA facile à configurer directement dans la configuration du compilateur.

Il est difficile de trouver une règle empirique pour estimer le temps qu'il vous faudrait pour mettre du code bien écrit conforme à la norme MISRA. Beaucoup dépend des habitudes de programmation existantes des programmeurs et de la manière dont ils suivent les règles de la MISRA.

Estimations approximatives:
2 à 3 jours pour maîtriser l'utilisation de PC-Lint.
Passage initial à la mise en conformité du code existant avec MISRA: 10 à 25% du temps passé à l’écriture du code.
Garder le code conforme à MISRA: 5 à 10% ajoutés au développement du code. La moitié de ce coût est en train de changer les habitudes de vos codeurs pour qu'ils se conforment à la «méthode MISRA». L'autre moitié représente le coût supplémentaire des tests et des inspections de code pour assurer la conformité à la MISRA.

Autres conseils

Rendre le code conforme à Misra n’est pas une corvée - si vous suivez des pratiques de programmation plutôt bonnes. Vous trouverez peut-être certaines règles de pointeur un peu délicates, si le code que vous essayez de rendre conforme a une arithmétique de pointeur étrange et merveilleuse.

J'appuie en second lieu la recommandation de Greg pour PC Lint, mais Splint, un logiciel à code source ouvert, mérite également une attention particulière, bien qu'entre eux (et le système d'alerte du compilateur), j'estime que vous ne pourrez toujours couvrir que 80% les règles Misra - le reste devra probablement être révisé manuellement.

J'utilise PC Lint pour l'analyse statique du code C et C ++. Il peut être configuré pour indiquer quelles règles MISRA ont été violées et il possède une interface de ligne de commande.

J'ai utilisé un outil commercial appelé QAC . Cet outil est en mesure d'appliquer la MISRA

.

Il possède une interface de ligne de commande, vous pouvez donc le configurer pour qu’il s’exécute à partir d’un environnement de construction automatisé. Les règles à appliquer sont configurables, mais attendez-vous à ce que quelqu'un passe du temps à le définir u. L'application de la MISRA est assez simple et a assez bien fonctionné. On m'a dit (et ce n'est que de la 3ème main) qu'il s'agit d'un des outils utilisés par certaines agences (telles que la FDA) pour évaluer le code. Comme la plupart des outils d'analyse statique, il y a du bruit (faux positifs) à traiter. La dernière fois que je l'ai utilisé, il ne disposait pas d'un bon moyen de marquer / empêcher un faux positif de se reproduire (sans changer le code dont il se plaignait).

Je pense qu’un ingénieur débutant mettra jusqu’à une semaine (4 à 5 jours) pour le configurer (s’ils sont déterminés à le faire fonctionner à votre guise).

Par ailleurs, d’autres outils d’analyse statique commerciaux ont probablement également à faire appliquer la loi MISRA. Selon leurs informations, Klocwork le fait.

Nous avons eu un problème similaire de mise à niveau des règles Misra. Nous avions des problèmes de qualité de code sur un projet de grande envergure et avons décidé d'utiliser MISRA pour améliorer la qualité du code.

Nous utilisons le compilateur Green Hills qui prend en charge les règles MISRA C. Il y a aussi des contrôleurs autonomes disponibles. En fonction de ce que vous voulez faire, cela peut être un peu trop compliqué de basculer sur toutes les règles. Nous avons activé une règle à la fois pour donner aux gens le temps de résoudre un nombre limité de problèmes similaires, sans quoi le nombre d'erreurs vous écrasait complètement.

Puisque nos avertissements ont été générés par le compilateur et non par un outil autonome, vous voyez les erreurs au fur et à mesure que vous vous développez et pas seulement lorsque vous exécutez le vérificateur. Au fur et à mesure de notre développement, nous avons obtenu notre code conforme et non pas en un seul coup. Cela évite également que de vieilles habitudes gâchent le nouveau code et vous obligent à le retravailler ultérieurement.

Il est parfois difficile de se conformer à l'ancien code car personne ne sait exactement comment le code fonctionne. J'espère que vous avez des tests unitaires.

Je comprends que cette question est ancienne, mais pour le bénéfice de tout autre archéologue (ou chercheur), il est important de se rappeler que MISRA fournit des directives qu'il ne faut pas toujours suivre aveuglément.

Je recommande d’écrire un nouveau code en gardant à l’esprit MISRA; par conséquent, il sera beaucoup plus facile de rester conforme.

Cependant, cela n’est pas toujours possible - et en particulier, lorsque vous essayez de faire de l’ingénierie inverse pour respecter le code. Dans ce cas, je vous suggère de vous concentrer sur les règles obligatoires et de traiter les avertissements comme un bonus.

N'oubliez pas non plus qu'il existe un processus de déviation - il est préférable de garder du code propre et maintenable avec une déviation, plutôt que de créer des spaghettis conformes mais illisibles.

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