Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

vérifier la cohérence des exceptions ?

5 réponses
Avatar
ALB
existe-t-il un logiciel d'analyse de code qui permettent de d=E9terminer
les sp=E9cifications des exceptions que chaque m=E9thode et fonction
devraient avoir ?

5 réponses

Avatar
Luc Hermitte
On 6 oct, 23:58, ALB wrote:
existe-t-il un logiciel d'analyse de code qui permettent de déterminer
les spécifications des exceptions que chaque méthode et fonction
devraient avoir ?



Même si cela existait (je ne le crois pas, mais on ne sait jamais),
cela
ne résoudrait pas le fait que les vérifications seront toujours
réalisées
de façon dynamique.
Voulons-nous vraiment un programme qui plante en opération à cause
d'un petit oubli couplé à une modification un peu trop hâtive ?

Dernièrement, Scott Meyer a montré sur artima une façon [1] de
vérifier statiquement que les fonctions d'une famille donnée
appellent
bien des fonctions de sous-familles compatibles.

[1] Sauf que quand ça compile sur notre compilateur, il ne faut
vraiment
pas être pressé. C'est plus une démonstration de faisabilité qu'aut re
chose.

--
Luc Hermitte
Avatar
ALB
On 7 oct, 16:35, Luc Hermitte wrote:
On 6 oct, 23:58, ALB wrote:

> existe-t-il un logiciel d'analyse de code qui permettent de détermine r
> les spécifications des exceptions que chaque méthode et fonction
> devraient avoir ?

Même si cela existait (je ne le crois pas, mais on ne sait jamais),
cela
ne résoudrait pas le fait que les vérifications seront toujours
réalisées
de façon dynamique.
Voulons-nous vraiment un programme qui plante en opération à cause
d'un petit oubli couplé à une modification un peu trop hâtive ?

Dernièrement, Scott Meyer a montré sur artima une façon [1] de
vérifier statiquement que les fonctions d'une famille donnée
appellent
bien des fonctions de sous-familles compatibles.

[1] Sauf que quand ça compile sur notre compilateur, il ne faut
vraiment
pas être pressé. C'est plus une démonstration de faisabilité qu'a utre
chose.

--
Luc Hermitte



Hors problème de complexité (liée à la sémantique du langage), je ne
vois pas pourquoi il n'existe d'analyse (statique) du code.
(Je suis tout à fait d'accord, notamment pour des raisons de
compatibilité historique, avec le fait que la gestion des exceptions
se fait de manières dynamiques.)
A priori, ce qui me semble le plus difficile à analyser serait les
pointeurs de fonctions car la spécification des erreurs ne fait pas
partie de la signature mais il est néanmoins possible de faire la
liste de toutes les fonctions ayant une signature donnée et de lister
toutes les exceptions qu'elles peuvent lancer.

S'agit-il de l'article <http://www.artima.com/cppsource/
codefeatures.html> ?

Le finalité de ma question est d'être sur d'avoir un code exception-
safe.

Adrien
Avatar
Alp Mestan
A ma connaissance, aucun outil ne fait ce que tu veux. Ca doit pouvoir
se faire... Mais tu ne peux toutefois pas tout prévoir. Tu peux te
chopper un bad_alloc à l'exécution que tu n'aurais pu prévoir lors de
la lecture du code par ton outil ou d'une éventuelle simulation de
code pour tester le comportement face aux exceptions.
Avatar
James Kanze
On Oct 7, 5:45 pm, ALB wrote:
On 7 oct, 16:35, Luc Hermitte wrote:
> On 6 oct, 23:58, ALB wrote:



> > existe-t-il un logiciel d'analyse de code qui permettent
> > de déterminer les spécifications des exceptions que chaque
> > méthode et fonction devraient avoir ?



> Même si cela existait (je ne le crois pas, mais on ne sait
> jamais), cela ne résoudrait pas le fait que les
> vérifications seront toujours réalisées de façon dynamique.
> Voulons-nous vraiment un programme qui plante en opération à
> cause d'un petit oubli couplé à une modification un peu trop
> hâtive ?



> Dernièrement, Scott Meyer a montré sur artima une façon [1]
> de vérifier statiquement que les fonctions d'une famille
> donnée appellent bien des fonctions de sous-familles
> compatibles.



> [1] Sauf que quand ça compile sur notre compilateur, il ne
> faut vraiment pas être pressé. C'est plus une démonstration
> de faisabilité qu'autre chose.



Hors problème de complexité (liée à la sémantique du langage),



Je ne crois pas que ça soit lié à la sémantique du language.
Mais...

je ne vois pas pourquoi il n'existe d'analyse (statique) du
code.



Parce que l'état actuel de la technologie ne permet pas une
analyse réelement intéressante. Il y a en fait deux aspects,
assez distinct :

-- Ce que la fonction ne peut pas faire. Dans la pratique, le
seul point intéressant ici, c'est la garantie que la
fonction ne peut pas lever une exception ; dès qu'elle peut
en lever une, qu'importe le type, il faut que ton code le
prend en compte. À mon avis, l'analyse statique pourrait
être appliquée ici, à condition de renoncer à la compilation
separée (ou à condition de modifier profondement le modèle
de compilation -- ce qui n'est pas forcément une mauvaise
idée). Tout ce que je peux dire, c'est que cette analyse ne
s'est pas imposée dans d'autres langages non plus, et que le
C++ (à l'encontre de beaucoup d'autres langages) permet au
moins une vérification à l'exécution.

-- Ce que la fonction fait. C-à-d que dans le cas de telle ou
telle erreur, et lève réelement une exception d'un type
donné. Actuellement, malheureusement, ça dépasse la
technologie disponible.

Dans l'ensemble, je trouve que le C++ pourrait faire mieux à cet
égard, mais les autres langages que je connais (par exemple le
Java) font encore moins.

--
James Kanze (GABI Software) email:
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
Avatar
Luc Hermitte
On 7 oct, 17:45, ALB wrote:
> Dernièrement, Scott Meyer a montré sur artima une façon [1] de
> vérifier statiquement que les fonctions d'une famille donnée
> appellent bien des fonctions de sous-familles compatibles.



S'agit-il de l'article <http://www.artima.com/cppsource/
codefeatures.html>



Oui.

--
Luc Hermitte