- si je passe le test if (baz) qui a pu se retrouver là par inattention quand les corps de fonction sont assez gros (on a aussi pas mal de code multiplateforme et d'options en #ifdef), le return permettra de sortir de la fonction. Cependant si plus tard un autre fonction (ou la même) provoque une exception, on se retrouve dans la 4ème dimension, pour reprendre une expression des devs d'ici. Au mieux ça plante, au pire ça fait autre chose de bizarre, ou rien de visible immédiatement.
C'est bien ce que j'avais compris. Mais le point que je ne comprend pas, c'est comment tu te retrouves dans la quatrième dimension.
--drkm
Sébastien Kirche writes:
- si je passe le test if (baz) qui a pu se retrouver là par inattention
quand les corps de fonction sont assez gros (on a aussi pas mal de
code multiplateforme et d'options en #ifdef), le return permettra de
sortir de la fonction. Cependant si plus tard un autre fonction (ou la
même) provoque une exception, on se retrouve dans la 4ème dimension,
pour reprendre une expression des devs d'ici. Au mieux ça plante, au
pire ça fait autre chose de bizarre, ou rien de visible immédiatement.
C'est bien ce que j'avais compris. Mais le point que je ne
comprend pas, c'est comment tu te retrouves dans la quatrième
dimension.
- si je passe le test if (baz) qui a pu se retrouver là par inattention quand les corps de fonction sont assez gros (on a aussi pas mal de code multiplateforme et d'options en #ifdef), le return permettra de sortir de la fonction. Cependant si plus tard un autre fonction (ou la même) provoque une exception, on se retrouve dans la 4ème dimension, pour reprendre une expression des devs d'ici. Au mieux ça plante, au pire ça fait autre chose de bizarre, ou rien de visible immédiatement.
C'est bien ce que j'avais compris. Mais le point que je ne comprend pas, c'est comment tu te retrouves dans la quatrième dimension.
--drkm
drkm
Sébastien Kirche writes:
Le 24 July 2005 à 14:07, drkm a formulé :
S'il s'agit de choisir un outil pour implémenter ce vérificateur (qui serait par exemple appelé dans une cible check d'un Makefile), alors pourquoi pas.
C'est tout à fait ça. Un collègue implémenté ce genre de vérification dans des macros vb dans MS Visual Studio en parsant manuellement le code avec moult select case, if, recherche de texte, etc.
Ok. Alors, je pense que Semantic pourrait être adapté. Enfin, sous réserve, car je ne l'ai jamais vraiment employé, mais ça vaut le coup, ÀMHA, d'y jeter sérieusement un oeil.
C'est un équivalent de Yacc/Bison, qui contient déjà, je pense, une grammaire C complète, dont on peut hériter (ou que l'on peut étendre, je ne me souviens plus des termes des mécanismes d'extension de grammaires Wisent).
J'ai commencé à regarder les grammaires wisent pour voir comment ça s'utilisait. Je vois comment ça se compile pour générer le parseur, mais il faut que je voie comment le parseur est utilisé ensuite pour analyser le code par les modules supérieurs (exemple : pour rechercher une définition ou faire des stats).
Il y a plusieurs fichiers Infos dans Semantic. L'un d'eux s'appelle 'app-dev-guide' ou quelque chose comme ça. C'est le guide du développeur d'application se basant sur Semantic. Ce que tu cherches, je pense.
[...]
exemple bidon sur 2 tables : SERVICE (0x10; 'Services')
[...]
VEHICULE (0x10; 'Véhicules')
[...]
Partant de ça j'obtiens automagiquement 2 blocs
+---------+ +----------+ | SERVICE |---| VEHICULE | +---------+ +----------+
+---------+ +----------+
Car le parser aura "vu" que VEHICULE référence un champ de SERVICE.
Je ne vois pas vraiment comment il voit que VEHICULE référence un champ de SERVICE. Éventuellement, il peut détecter que deux champs ont le même nom et le même type (et que l'un a une contrainte d'unicité). Mais ça, c'est toi qui sais.
Si c'est faisable, après faut imaginer avec une base qui contient beaucoup plus de tables et de champs...
ÀMHA, si tu sais écrire une grammaire et que l'apprentissage de Semantic ne te pose pas de problèmes, c'est faisable. La grammaire n'a pas l'air a priori très complexe. Pour la génération des résultats, ben c'est toi qui vois comment interpréter les infos dont tu disposes.
Si l'info nécessaire se trouve dans le fichier d'entrée, alors tu pourras l'utiliser. Le tout est de savoir comment, mais ça, ce n'est plus du ressort de Semantic, ça fait partie du domaine d'application.
--drkm
Sébastien Kirche writes:
Le 24 July 2005 à 14:07, drkm a formulé :
S'il s'agit de choisir un outil pour implémenter ce
vérificateur (qui serait par exemple appelé dans une cible check
d'un Makefile), alors pourquoi pas.
C'est tout à fait ça. Un collègue implémenté ce genre de vérification
dans des macros vb dans MS Visual Studio en parsant manuellement le code
avec moult select case, if, recherche de texte, etc.
Ok. Alors, je pense que Semantic pourrait être adapté. Enfin,
sous réserve, car je ne l'ai jamais vraiment employé, mais ça
vaut le coup, ÀMHA, d'y jeter sérieusement un oeil.
C'est un équivalent de Yacc/Bison, qui contient déjà, je pense,
une grammaire C complète, dont on peut hériter (ou que l'on peut
étendre, je ne me souviens plus des termes des mécanismes
d'extension de grammaires Wisent).
J'ai commencé à regarder les grammaires wisent pour voir comment ça
s'utilisait. Je vois comment ça se compile pour générer le parseur, mais
il faut que je voie comment le parseur est utilisé ensuite pour analyser
le code par les modules supérieurs (exemple : pour rechercher une
définition ou faire des stats).
Il y a plusieurs fichiers Infos dans Semantic. L'un d'eux
s'appelle 'app-dev-guide' ou quelque chose comme ça. C'est le
guide du développeur d'application se basant sur Semantic. Ce
que tu cherches, je pense.
[...]
exemple bidon sur 2 tables :
SERVICE (0x10; 'Services')
[...]
VEHICULE (0x10; 'Véhicules')
[...]
Partant de ça j'obtiens automagiquement 2 blocs
+---------+ +----------+
| SERVICE |---| VEHICULE |
+---------+ +----------+
+---------+ +----------+
Car le parser aura "vu" que VEHICULE référence un champ de SERVICE.
Je ne vois pas vraiment comment il voit que VEHICULE référence
un champ de SERVICE. Éventuellement, il peut détecter que deux
champs ont le même nom et le même type (et que l'un a une
contrainte d'unicité). Mais ça, c'est toi qui sais.
Si c'est faisable, après faut imaginer avec une base qui contient
beaucoup plus de tables et de champs...
ÀMHA, si tu sais écrire une grammaire et que l'apprentissage de
Semantic ne te pose pas de problèmes, c'est faisable. La
grammaire n'a pas l'air a priori très complexe. Pour la
génération des résultats, ben c'est toi qui vois comment
interpréter les infos dont tu disposes.
Si l'info nécessaire se trouve dans le fichier d'entrée, alors
tu pourras l'utiliser. Le tout est de savoir comment, mais ça,
ce n'est plus du ressort de Semantic, ça fait partie du domaine
d'application.
S'il s'agit de choisir un outil pour implémenter ce vérificateur (qui serait par exemple appelé dans une cible check d'un Makefile), alors pourquoi pas.
C'est tout à fait ça. Un collègue implémenté ce genre de vérification dans des macros vb dans MS Visual Studio en parsant manuellement le code avec moult select case, if, recherche de texte, etc.
Ok. Alors, je pense que Semantic pourrait être adapté. Enfin, sous réserve, car je ne l'ai jamais vraiment employé, mais ça vaut le coup, ÀMHA, d'y jeter sérieusement un oeil.
C'est un équivalent de Yacc/Bison, qui contient déjà, je pense, une grammaire C complète, dont on peut hériter (ou que l'on peut étendre, je ne me souviens plus des termes des mécanismes d'extension de grammaires Wisent).
J'ai commencé à regarder les grammaires wisent pour voir comment ça s'utilisait. Je vois comment ça se compile pour générer le parseur, mais il faut que je voie comment le parseur est utilisé ensuite pour analyser le code par les modules supérieurs (exemple : pour rechercher une définition ou faire des stats).
Il y a plusieurs fichiers Infos dans Semantic. L'un d'eux s'appelle 'app-dev-guide' ou quelque chose comme ça. C'est le guide du développeur d'application se basant sur Semantic. Ce que tu cherches, je pense.
[...]
exemple bidon sur 2 tables : SERVICE (0x10; 'Services')
[...]
VEHICULE (0x10; 'Véhicules')
[...]
Partant de ça j'obtiens automagiquement 2 blocs
+---------+ +----------+ | SERVICE |---| VEHICULE | +---------+ +----------+
+---------+ +----------+
Car le parser aura "vu" que VEHICULE référence un champ de SERVICE.
Je ne vois pas vraiment comment il voit que VEHICULE référence un champ de SERVICE. Éventuellement, il peut détecter que deux champs ont le même nom et le même type (et que l'un a une contrainte d'unicité). Mais ça, c'est toi qui sais.
Si c'est faisable, après faut imaginer avec une base qui contient beaucoup plus de tables et de champs...
ÀMHA, si tu sais écrire une grammaire et que l'apprentissage de Semantic ne te pose pas de problèmes, c'est faisable. La grammaire n'a pas l'air a priori très complexe. Pour la génération des résultats, ben c'est toi qui vois comment interpréter les infos dont tu disposes.
Si l'info nécessaire se trouve dans le fichier d'entrée, alors tu pourras l'utiliser. Le tout est de savoir comment, mais ça, ce n'est plus du ressort de Semantic, ça fait partie du domaine d'application.
--drkm
Sébastien Kirche
Le 26 July 2005 à 15:07, drkm a formulé :
Il y a plusieurs fichiers Infos dans Semantic. L'un d'eux s'appelle 'app-dev-guide' ou quelque chose comme ça. C'est le guide du développeur d'application se basant sur Semantic. Ce que tu cherches, je pense.
> Car le parser aura "vu" que VEHICULE référence un champ de SERVICE.
Je ne vois pas vraiment comment il voit que VEHICULE référence un champ de SERVICE. Éventuellement, il peut détecter que deux champs ont le même nom et le même type (et que l'un a une contrainte d'unicité). Mais ça, c'est toi qui sais.
Oui c'est la convention employée ici : une table a ses champs (dont les noms sont préfixés par le nom de la table en abrégé), si un nom de champ n'est pas dans cet «espace de nommage», c'est une clé vers une autre table.
> Si c'est faisable, après faut imaginer avec une base qui contient > beaucoup plus de tables et de champs...
ÀMHA, si tu sais écrire une grammaire et que l'apprentissage de Semantic ne te pose pas de problèmes, c'est faisable. La grammaire n'a pas l'air a priori très complexe. Pour la génération des résultats, ben c'est toi qui vois comment interpréter les infos dont tu disposes.
Si l'info nécessaire se trouve dans le fichier d'entrée, alors tu pourras l'utiliser. Le tout est de savoir comment, mais ça, ce n'est plus du ressort de Semantic, ça fait partie du domaine d'application.
Ok, ça pourra me faire une mise en pratique de semantic.
Merci pour tes réflexions sur la question.
-- Sébastien Kirche
Le 26 July 2005 à 15:07, drkm a formulé :
Il y a plusieurs fichiers Infos dans Semantic. L'un d'eux
s'appelle 'app-dev-guide' ou quelque chose comme ça. C'est le
guide du développeur d'application se basant sur Semantic. Ce
que tu cherches, je pense.
> Car le parser aura "vu" que VEHICULE référence un champ de SERVICE.
Je ne vois pas vraiment comment il voit que VEHICULE référence
un champ de SERVICE. Éventuellement, il peut détecter que deux
champs ont le même nom et le même type (et que l'un a une
contrainte d'unicité). Mais ça, c'est toi qui sais.
Oui c'est la convention employée ici : une table a ses champs (dont les
noms sont préfixés par le nom de la table en abrégé), si un nom de champ
n'est pas dans cet «espace de nommage», c'est une clé vers une autre
table.
> Si c'est faisable, après faut imaginer avec une base qui contient
> beaucoup plus de tables et de champs...
ÀMHA, si tu sais écrire une grammaire et que l'apprentissage de
Semantic ne te pose pas de problèmes, c'est faisable. La
grammaire n'a pas l'air a priori très complexe. Pour la
génération des résultats, ben c'est toi qui vois comment
interpréter les infos dont tu disposes.
Si l'info nécessaire se trouve dans le fichier d'entrée, alors
tu pourras l'utiliser. Le tout est de savoir comment, mais ça,
ce n'est plus du ressort de Semantic, ça fait partie du domaine
d'application.
Ok, ça pourra me faire une mise en pratique de semantic.
Il y a plusieurs fichiers Infos dans Semantic. L'un d'eux s'appelle 'app-dev-guide' ou quelque chose comme ça. C'est le guide du développeur d'application se basant sur Semantic. Ce que tu cherches, je pense.
> Car le parser aura "vu" que VEHICULE référence un champ de SERVICE.
Je ne vois pas vraiment comment il voit que VEHICULE référence un champ de SERVICE. Éventuellement, il peut détecter que deux champs ont le même nom et le même type (et que l'un a une contrainte d'unicité). Mais ça, c'est toi qui sais.
Oui c'est la convention employée ici : une table a ses champs (dont les noms sont préfixés par le nom de la table en abrégé), si un nom de champ n'est pas dans cet «espace de nommage», c'est une clé vers une autre table.
> Si c'est faisable, après faut imaginer avec une base qui contient > beaucoup plus de tables et de champs...
ÀMHA, si tu sais écrire une grammaire et que l'apprentissage de Semantic ne te pose pas de problèmes, c'est faisable. La grammaire n'a pas l'air a priori très complexe. Pour la génération des résultats, ben c'est toi qui vois comment interpréter les infos dont tu disposes.
Si l'info nécessaire se trouve dans le fichier d'entrée, alors tu pourras l'utiliser. Le tout est de savoir comment, mais ça, ce n'est plus du ressort de Semantic, ça fait partie du domaine d'application.
Ok, ça pourra me faire une mise en pratique de semantic.
Merci pour tes réflexions sur la question.
-- Sébastien Kirche
Sébastien Kirche
Le 26 July 2005 à 15:07, Sébastien Kirche a formulé :
> Il y a plusieurs fichiers Infos dans Semantic. L'un d'eux > s'appelle 'app-dev-guide' ou quelque chose comme ça. C'est le > guide du développeur d'application se basant sur Semantic. Ce > que tu cherches, je pense.
Je pense aussi :)
[Après être retourné dans cedet/semantic/doc] je me dit que je suis assez idiot car j'avais trouvé la doc de la grammaire du C99 (mentionnée dans les entêtes du source wisent-c.wy) dans ce dossier et que je n'ai même pas eu l'idée de regarder ce qu'il y a avait d'autre...
En fait il y a plein de documentation là-dedans :)
Je crois que wisent/semantic est vraiment une option intéressante pour mes analyses de code.
-- Sébastien Kirche
Le 26 July 2005 à 15:07, Sébastien Kirche a formulé :
> Il y a plusieurs fichiers Infos dans Semantic. L'un d'eux
> s'appelle 'app-dev-guide' ou quelque chose comme ça. C'est le
> guide du développeur d'application se basant sur Semantic. Ce
> que tu cherches, je pense.
Je pense aussi :)
[Après être retourné dans cedet/semantic/doc] je me dit que je suis
assez idiot car j'avais trouvé la doc de la grammaire du C99 (mentionnée
dans les entêtes du source wisent-c.wy) dans ce dossier et que je n'ai
même pas eu l'idée de regarder ce qu'il y a avait d'autre...
En fait il y a plein de documentation là-dedans :)
Je crois que wisent/semantic est vraiment une option intéressante pour
mes analyses de code.
Le 26 July 2005 à 15:07, Sébastien Kirche a formulé :
> Il y a plusieurs fichiers Infos dans Semantic. L'un d'eux > s'appelle 'app-dev-guide' ou quelque chose comme ça. C'est le > guide du développeur d'application se basant sur Semantic. Ce > que tu cherches, je pense.
Je pense aussi :)
[Après être retourné dans cedet/semantic/doc] je me dit que je suis assez idiot car j'avais trouvé la doc de la grammaire du C99 (mentionnée dans les entêtes du source wisent-c.wy) dans ce dossier et que je n'ai même pas eu l'idée de regarder ce qu'il y a avait d'autre...
En fait il y a plein de documentation là-dedans :)
Je crois que wisent/semantic est vraiment une option intéressante pour mes analyses de code.
-- Sébastien Kirche
drkm
Sébastien Kirche writes:
Ok, ça pourra me faire une mise en pratique de semantic.
Tiens, ce pourrait être intéressant de documenter un poil tes recherches. Ou ce à quoi tu es arrivé (si le code peut être rendu public) et comment tu t'y es pris. Une sorte de tutorial par l'exemple à propos de Semantic, en français.
Au fait, quelqu'un sait-il s'il y a moyen de rendre l'accès public à certain de ses objets dans CPS ? De manière à pouvoir, sur EmacsFR, donner accès à une FAQ ou un Wiki que l'on crée dans son espace privé.
Éventuellement, s'il n'y a rien de prévu dans CPS, une solution serait peut-être de créer un espace de publication global « espaces privés » contenant un sous-espace (une « section », je pense) par utilisateur, avec les droits ad-hoc. Qu'en pensez-vous, Xavier et Matthieu ?
Merci pour tes réflexions sur la question.
Pas de quoi. C'est un investissement (cfr. ci-dessus) :-p
--drkm
Sébastien Kirche writes:
Ok, ça pourra me faire une mise en pratique de semantic.
Tiens, ce pourrait être intéressant de documenter un poil tes
recherches. Ou ce à quoi tu es arrivé (si le code peut être
rendu public) et comment tu t'y es pris. Une sorte de tutorial
par l'exemple à propos de Semantic, en français.
Au fait, quelqu'un sait-il s'il y a moyen de rendre l'accès
public à certain de ses objets dans CPS ? De manière à pouvoir,
sur EmacsFR, donner accès à une FAQ ou un Wiki que l'on crée dans
son espace privé.
Éventuellement, s'il n'y a rien de prévu dans CPS, une solution
serait peut-être de créer un espace de publication global
« espaces privés » contenant un sous-espace (une « section », je
pense) par utilisateur, avec les droits ad-hoc. Qu'en
pensez-vous, Xavier et Matthieu ?
Merci pour tes réflexions sur la question.
Pas de quoi. C'est un investissement (cfr. ci-dessus) :-p
Ok, ça pourra me faire une mise en pratique de semantic.
Tiens, ce pourrait être intéressant de documenter un poil tes recherches. Ou ce à quoi tu es arrivé (si le code peut être rendu public) et comment tu t'y es pris. Une sorte de tutorial par l'exemple à propos de Semantic, en français.
Au fait, quelqu'un sait-il s'il y a moyen de rendre l'accès public à certain de ses objets dans CPS ? De manière à pouvoir, sur EmacsFR, donner accès à une FAQ ou un Wiki que l'on crée dans son espace privé.
Éventuellement, s'il n'y a rien de prévu dans CPS, une solution serait peut-être de créer un espace de publication global « espaces privés » contenant un sous-espace (une « section », je pense) par utilisateur, avec les droits ad-hoc. Qu'en pensez-vous, Xavier et Matthieu ?
Merci pour tes réflexions sur la question.
Pas de quoi. C'est un investissement (cfr. ci-dessus) :-p
--drkm
Sébastien Kirche
Le 26 juillet 2005 à 17:07, drkm a dit :
> Ok, ça pourra me faire une mise en pratique de semantic.
Tiens, ce pourrait être intéressant de documenter un poil tes recherches. Ou ce à quoi tu es arrivé (si le code peut être rendu public) et comment tu t'y es pris. Une sorte de tutorial par l'exemple à propos de Semantic, en français.
Très bonne nouvelle pour moi : j'ai mis la main sur la grammaire du langage de description de la base (au format bnf). Ce qui devrait grandement aider à écrire une grammaire wisent et obtenir au minimum un font-locking.
Cependant il me sera absolument impossible de publier cette partie, aspect propriétaire oblige.
Par contre si j'arrive à appréhender la méthode, je peux toujours documenter à partir d'une autre grammaire.
-- Sébastien Kirche
Le 26 juillet 2005 à 17:07, drkm a dit :
> Ok, ça pourra me faire une mise en pratique de semantic.
Tiens, ce pourrait être intéressant de documenter un poil tes
recherches. Ou ce à quoi tu es arrivé (si le code peut être
rendu public) et comment tu t'y es pris. Une sorte de tutorial
par l'exemple à propos de Semantic, en français.
Très bonne nouvelle pour moi : j'ai mis la main sur la grammaire du
langage de description de la base (au format bnf). Ce qui devrait
grandement aider à écrire une grammaire wisent et obtenir au minimum un
font-locking.
Cependant il me sera absolument impossible de publier cette partie,
aspect propriétaire oblige.
Par contre si j'arrive à appréhender la méthode, je peux toujours
documenter à partir d'une autre grammaire.
> Ok, ça pourra me faire une mise en pratique de semantic.
Tiens, ce pourrait être intéressant de documenter un poil tes recherches. Ou ce à quoi tu es arrivé (si le code peut être rendu public) et comment tu t'y es pris. Une sorte de tutorial par l'exemple à propos de Semantic, en français.
Très bonne nouvelle pour moi : j'ai mis la main sur la grammaire du langage de description de la base (au format bnf). Ce qui devrait grandement aider à écrire une grammaire wisent et obtenir au minimum un font-locking.
Cependant il me sera absolument impossible de publier cette partie, aspect propriétaire oblige.
Par contre si j'arrive à appréhender la méthode, je peux toujours documenter à partir d'une autre grammaire.