Dans certains cas, même si l'indice n'est connu qu'à l'exécution, l'analyse statique peut détecter s'il n'a aucune chance d'être en dehors. Par exemple si tu as un tableau de 365 valeurs, indexé par le jour dans l'année, provenant d'une fonction définie comme retournant un entier entre 1 et 366, l'analyse statique peut te dire que ton tableau peut être dépassé. Et ne rien dire (normal) si tu utilises 366 valeurs.
Tu vas me dire que ce n'est pas vraiment "inconnu" à la compilation, du coup. C'est pas faux, mais parfois ça peut être plus dur à détecter. Là c'est un exemple simple, car tout le monde sait qu'il peut y avoir 366 jours dans une année, mais parfois ça peut être plus compliqué (par exemple quand tu fais des calculs d'angles et que tu es persuadé que ton angle est dans [0, 90[ alors qu'il est dans [0, 90] (mais ça ne te saute pas aux yeux car ton angle a été transformé 42 fois dans un algo), ou des choses comme ça. Un outil d'analyse statique peut détecter ce genre de problème (si c'est basé sur des langages t'encourageant à définir les bornes d'entrée/sortie des fonctions ou procédures)
Tous les nombres premiers sont impairs, sauf un. Tous les nombres premiers sont impairs, sauf deux.
[^] # Re: Chacun son style
Posté par 2PetitsVerres (Mastodon) . En réponse à la dépêche Naissance d'un géant : Java. Évalué à 3.
Dans certains cas, même si l'indice n'est connu qu'à l'exécution, l'analyse statique peut détecter s'il n'a aucune chance d'être en dehors. Par exemple si tu as un tableau de 365 valeurs, indexé par le jour dans l'année, provenant d'une fonction définie comme retournant un entier entre 1 et 366, l'analyse statique peut te dire que ton tableau peut être dépassé. Et ne rien dire (normal) si tu utilises 366 valeurs.
Tu vas me dire que ce n'est pas vraiment "inconnu" à la compilation, du coup. C'est pas faux, mais parfois ça peut être plus dur à détecter. Là c'est un exemple simple, car tout le monde sait qu'il peut y avoir 366 jours dans une année, mais parfois ça peut être plus compliqué (par exemple quand tu fais des calculs d'angles et que tu es persuadé que ton angle est dans [0, 90[ alors qu'il est dans [0, 90] (mais ça ne te saute pas aux yeux car ton angle a été transformé 42 fois dans un algo), ou des choses comme ça. Un outil d'analyse statique peut détecter ce genre de problème (si c'est basé sur des langages t'encourageant à définir les bornes d'entrée/sortie des fonctions ou procédures)
Tous les nombres premiers sont impairs, sauf un. Tous les nombres premiers sont impairs, sauf deux.