MATLAB: Est-ce que j’obtiens des valeurs «non calculées» pour les mesures de complexité du code: utilisation de la pile de programmes à l’aide de Polyspace Code Prover Access R2020a

Dans le prouveur de code Polyspace, je voudrais déterminer les métriques de complexité du code « Programmer une utilisation maximale de la pile » et « Programmer une utilisation minimale de la pile ».
J’ai utilisé l’option ‘-code-metrics’ et j’ai également activé les vérificateurs PROG_MAX_STACK et PROG_MIN_STACK, mais je ne suis toujours pas en mesure de voir les mesures correspondantes dans mon tableau de bord Access.
(Dans la liste des résultats, je peux trouver des valeurs d’utilisation de pile pour les fonctions, mais j’obtiens « Non calculé » au niveau du projet.)
Le projet de code n’a pas de contrôles rouges d’exécution «ouverts», donc je ne comprends pas pourquoi la valeur n’est pas calculée.
J’ai eu une vérification rouge liée à la boucle infinie, mais je l’ai justifiée car il s’agit d’une boucle destinée à gérer la tâche d’arrière-plan.

Meilleure réponse

  • Si l’utilisation de la taille de pile est *« Non calculé » * il y a 3 raisons courantes:
    • Veuillez vérifier si la fonction ou son appelé contient une vérification rouge (erreur d’exécution définitive). Si oui, l’erreur doit être corrigée. Si votre programme contient une coche rouge, vous ne voyez pas cette mesure. La raison en est que le code suivant une vérification rouge n’est pas analysé. Si ce code contient des appels de fonction, toute valeur métrique affichée serait inexacte.
    • Même s’il existe des boucles infinies intentionnelles comme while (1) {} ou une boucle rouge qui était justifiée, cela empêcherait également le calcul de ces mesures.
    • Vous ne voyez pas non plus cette métrique si votre code a des appels à des fonctions récursives. Veuillez vérifier si la fonction ou son appelé contient un appel à une fonction récursive. S’il vous plaît, sachez également que c’est le cas, s’il y a une récursivité potentielle (si la récursivité pourrait être évitée avec certaines conditions)
    Afin de repérer les endroits où la récursivité est utilisée, vous pouvez activer le vérificateur MISRA suivant « MISRA C: 2012 Rule 17.2 » et vérifier les résultats pour les violations de règles de codage.
    Veuillez consulter le lien ci-dessous pour plus de documentation:
    https://www.mathworks.com/help/releases/R2020a/bugfinder/ref/misrac2012rule17.2.html