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

Création module CPAN Tk

11 réponses
Avatar
genomart
Bonjour,

Je suis en train de cr=E9er un module Tk (que je souhaites mettre par la
suite sur le CPAN).
J'ai une question basique pour le connaisseur.

Pendant la cr=E9ation de la distribution (build test), j'ai un message
d'erreur :

t\pod-coverage....NOK 1/1# Failed test 'Pod coverage on
Tk::MonModule'
# at C:/Perl/site/lib/Test/Pod/Coverage.pm line 126.
# Coverage for Tk::MonModuleis 90.9%, with 1 naked subroutine:
# Populate
# Looks like you failed 1 test of 1.
t\pod-coverage....dubious
Test returned status 1 (wstat 256, 0x100)
DIED. FAILED test 1

Ceci est d=FB au fait que je n'ai pas comment=E9 dans mon pod la proc=E9dur=
e
populate. Comment faire pour que ce message d'erreur n'apparaisse
plus ? Car populate n'est pas une proc=E9dure externe pour le module.
Mes autres proc=E9dures internes sont pr=E9c=E9d=E9es d'un "_" donc, je n'a=
i
pas de soucis pour eux.

Merci

10 réponses

1 2
Avatar
Paul Gaborit
À (at) Tue, 24 Mar 2009 03:34:52 -0700 (PDT),
écrivait (wrote):
Pendant la création de la distribution (build test), j'ai un message
d'erreur :

tpod-coverage....NOK 1/1# Failed test 'Pod coverage on
Tk::MonModule'
# at C:/Perl/site/lib/Test/Pod/Coverage.pm line 126.
# Coverage for Tk::MonModuleis 90.9%, with 1 naked subroutine:
# Populate
# Looks like you failed 1 test of 1.
tpod-coverage....dubious
Test returned status 1 (wstat 256, 0x100)
DIED. FAILED test 1

Ceci est dû au fait que je n'ai pas commenté dans mon pod la procédure


[... "pas documenté" plutôt que "pas commenté"...]
populate. Comment faire pour que ce message d'erreur n'apparaisse
plus ? Car populate n'est pas une procédure externe pour le module.
Mes autres procédures internes sont précédées d'un "_" donc, je n'ai
pas de soucis pour eux.



La solution est évidente, non ?

Il faut documenter la subroutine 'Populate' (au passage, elle devrait
s'appeler 'populate' sans majuscule) ou alors l'appeler '_populate'...

;-)


--
Paul Gaborit - <http://perso.mines-albi.fr/~gaborit/>
Perl en français - <http://perl.mines-albi.fr/>
Avatar
genomart
On 24 mar, 14:02, Paul Gaborit wrote:
À (at) Tue, 24 Mar 2009 03:34:52 -0700 (PDT),
écrivait (wrote):> Pendant la création de la distr ibution (build test), j'ai un message
> d'erreur :

> tpod-coverage....NOK 1/1#   Failed test 'Pod coverage on
> Tk::MonModule'
> #   at C:/Perl/site/lib/Test/Pod/Coverage.pm line 126.
> # Coverage for Tk::MonModuleis 90.9%, with 1 naked subroutine:
> #       Populate
> # Looks like you failed 1 test of 1.
> tpod-coverage....dubious
>         Test returned status 1 (wstat 256, 0x100)
> DIED. FAILED test 1

> Ceci est dû au fait que je n'ai pas commenté dans mon pod la proc édure

[... "pas documenté" plutôt que "pas commenté"...]

> populate. Comment faire pour que ce message d'erreur n'apparaisse
> plus ? Car populate n'est pas une procédure externe pour le module.
> Mes autres procédures internes sont précédées d'un "_" donc, je n'ai
> pas de soucis pour eux.

La solution est évidente, non ?

Il faut documenter la subroutine 'Populate' (au passage, elle devrait
s'appeler 'populate' sans majuscule) ou alors l'appeler '_populate'...

;-)

--
Paul Gaborit - <http://perso.mines-albi.fr/~gaborit/>
Perl en français - <http://perl.mines-albi.fr/>



non!

Lorsqu'on souhaite créer un widget composite, on doit créer une
soubroutine Populate (avec un P majuscule et sans _) sinon ça ne
fonctionne pas.
Et si je la commente, elle apparaitra dans la doc html, hors ce n'est
pas nécessaire et ça n'a strictement aucun intérêt.

Vous n'avez vu de module Tk avec une méthode Populate je
suppose :-) !!!

Merci
Avatar
Paul Gaborit
À (at) Tue, 24 Mar 2009 06:32:00 -0700 (PDT),
écrivait (wrote):
Lorsqu'on souhaite créer un widget composite, on doit créer une
soubroutine Populate (avec un P majuscule et sans _) sinon ça ne
fonctionne pas.
Vous n'avez vu de module Tk avec une méthode Populate je
suppose :-) !!!



Vous voudrez bien m'excuser de ne pas avoir deviné que vous vouliez
créer un widget composite. D'autant que vous brouillez les pistes en
écrivant vous-même 'populate' au lieu de 'Populate'... ;-)

J'ai déjà dû voir des modules Tk avec une méthode Populate mais comme
je ne l'appelle jamais directement, je l'avais oubliée...

Donc le nom est imposé par Tk::composite qui ne respecte pas les
conventions de nommage habituelles de Perl.

Et si je la commente, elle apparaitra dans la doc html, hors ce n'est
pas nécessaire et ça n'a strictement aucun intérêt.



J'insiste : pas "commente" mais "documente" ! ;-)

Cette documentation est nécessaire pour indiquer que cette méthode,
bien que portant un nom non privé (sans _ devant), existe uniquement
pour que Tk::composite fonctionne et non pour que l'utilisateur
l'appelle lui-même. Cela suffit pour rendre Test::Pod::Coverage
content et pour expliquer le non respect des conventions de nommage de
Perl. Ça peut se mettre dans une section 'gory details'...

--
Paul Gaborit - <http://perso.mines-albi.fr/~gaborit/>
Perl en français - <http://perl.mines-albi.fr/>
Avatar
mirod
wrote:
Bonjour,

Je suis en train de créer un module Tk (que je souhaites mettre par la
suite sur le CPAN).
J'ai une question basique pour le connaisseur.

Pendant la création de la distribution (build test), j'ai un message
d'erreur :

tpod-coverage....NOK 1/1# Failed test 'Pod coverage on
Tk::MonModule'
# at C:/Perl/site/lib/Test/Pod/Coverage.pm line 126.
# Coverage for Tk::MonModuleis 90.9%, with 1 naked subroutine:
# Populate
# Looks like you failed 1 test of 1.
tpod-coverage....dubious
Test returned status 1 (wstat 256, 0x100)
DIED. FAILED test 1

Ceci est dû au fait que je n'ai pas commenté dans mon pod la procédure
populate. Comment faire pour que ce message d'erreur n'apparaisse
plus ? Car populate n'est pas une procédure externe pour le module.
Mes autres procédures internes sont précédées d'un "_" donc, je n'ai
pas de soucis pour eux.



Si je comprends bien la doc, un peu confuse, de Test::Pod::Coverage, tu devrais
pouvoir ajouter un parametre pour déclarer les fonctions commençant par un
majuscule (ou même juste Populate) comme privées:

remplace l'appel à all_pod_coverage_ok() par
pod_coverage_ok(
"Tk::MonModuleis",
{ also_private => [ qr/^[A-Z_]/ ], },
"functions starting with an upper case are required by Tk and are private",
);

Absolument non testé! Il est peut être possible de passer le paramètre
directement à all_pod_coverage_ok().

--
mirod
Avatar
genomart
On 24 mar, 15:20, mirod wrote:
wrote:
> Bonjour,

> Je suis en train de créer un module Tk (que je souhaites mettre par l a
> suite sur le CPAN).
> J'ai une question basique pour le connaisseur.

> Pendant la création de la distribution (build test), j'ai un message
> d'erreur :

> tpod-coverage....NOK 1/1#   Failed test 'Pod coverage on
> Tk::MonModule'
> #   at C:/Perl/site/lib/Test/Pod/Coverage.pm line 126.
> # Coverage for Tk::MonModuleis 90.9%, with 1 naked subroutine:
> #       Populate
> # Looks like you failed 1 test of 1.
> tpod-coverage....dubious
>         Test returned status 1 (wstat 256, 0x100)
> DIED. FAILED test 1

> Ceci est dû au fait que je n'ai pas commenté dans mon pod la proc édure
> populate. Comment faire pour que ce message d'erreur n'apparaisse
> plus ? Car populate n'est pas une procédure externe pour le module.
> Mes autres procédures internes sont précédées d'un "_" donc, je n'ai
> pas de soucis pour eux.

Si je comprends bien la doc, un peu confuse, de Test::Pod::Coverage, tu d evrais
pouvoir ajouter un parametre pour déclarer les fonctions commençant p ar un
majuscule (ou même juste Populate) comme privées:

remplace l'appel à all_pod_coverage_ok() par
pod_coverage_ok(
         "Tk::MonModuleis",
         { also_private => [ qr/^[A-Z_]/ ], },
         "functions starting with an upper case are required by Tk and are private",
     );

Absolument non testé! Il est peut être possible de passer le paramè tre
directement à all_pod_coverage_ok().

--
mirod



Ca passe dans all_pod_coverage_ok().

Désolé Paul pour mon message un peu confus.

Merci pour vos réponses.
Avatar
genomart
Autre question.

J'ai un .pm pour lequel il n' y a pas de pod. Comment empêcher que mon
fichier pod-coverage.t ne me mette comme message :

# Tk::MonModule: couldn't find pod

Merci
Avatar
Olivier Schwander
On 2009-03-27, wrote:
J'ai un .pm pour lequel il n' y a pas de pod. Comment empêcher que mon
fichier pod-coverage.t ne me mette comme message :

# Tk::MonModule: couldn't find pod



Pourquoi ne pas mettre du pod dedans ? Ne serait-ce que pour dire "Rien
d'intéressant là-dedans".

Olivier
Avatar
genomart
On 27 mar, 13:09, Olivier Schwander
wrote:
On 2009-03-27, wrote:

> J'ai un .pm pour lequel il n' y a pas de pod. Comment empêcher que mo n
> fichier pod-coverage.t ne me mette comme message :

> # Tk::MonModule: couldn't find pod

Pourquoi ne pas mettre du pod dedans ? Ne serait-ce que pour dire "Rien
d'intéressant là-dedans".

Olivier



Pour l'instant, ma distribution contient 3 .pm
2 des .pm ont un but précis, donc j'ai fait un pod.
le dernier me sert juste à y mettre des procédures utiles pour mes
2 .pm, par exemple faire un calcul tout bete, ou autre chose.

Si je fais un pod pour ce module, et quand je mettrais ce module sur
le CPAN, il aura donc une page web de documentation. Or j'ai pas envie
vu qu'il n'a strictement aucun intérêt.

J'attends vos remarques, je me trompe peut être. Tout conseil est le
bienvenu.

Merci
Avatar
Paul Gaborit
À (at) Fri, 27 Mar 2009 05:58:47 -0700 (PDT),
écrivait (wrote):
Pour l'instant, ma distribution contient 3 .pm
2 des .pm ont un but précis, donc j'ai fait un pod.
le dernier me sert juste à y mettre des procédures utiles pour mes
2 .pm, par exemple faire un calcul tout bete, ou autre chose.

Si je fais un pod pour ce module, et quand je mettrais ce module sur
le CPAN, il aura donc une page web de documentation. Or j'ai pas envie
vu qu'il n'a strictement aucun intérêt.

J'attends vos remarques, je me trompe peut être. Tout conseil est le
bienvenu.



Le principe général, c'est que *tout* doit être documenté. C'est quand
même du logiciel libre et si vous voulez que d'autres puissent
corriger, amender, améliorer ou reprendre votre code, il est
indispensable que la documentation soit présente partout.

Ensuite, il est tout à fait faisable de créer un module utilaire avec
une documentation succincte (pour dire à il sert) et ne contenant que
des fonctions commençant par _ pour indiquer qu'elles sont
internes. Il est même possible ne pas les mettre dans un fichier
séparé mais de les intégrer à un module existant. Je rappelle qu'un
fichier .pm peut contenir plusieurs packages.

--
Paul Gaborit - <http://perso.mines-albi.fr/~gaborit/>
Perl en français - <http://perl.mines-albi.fr/>
Avatar
genomart
On 27 mar, 14:08, Paul Gaborit wrote:
À (at) Fri, 27 Mar 2009 05:58:47 -0700 (PDT),
écrivait (wrote):

> Pour l'instant, ma distribution contient 3 .pm
> 2 des .pm ont un but précis, donc j'ai fait un pod.
> le dernier me sert juste à y mettre des procédures utiles pour mes
> 2 .pm, par exemple faire un calcul tout bete, ou autre chose.

> Si je fais un pod pour ce module, et quand je mettrais ce module sur
> le CPAN, il aura donc une page web de documentation. Or j'ai pas envie
> vu qu'il n'a strictement aucun intérêt.

> J'attends vos remarques, je me trompe peut être. Tout conseil est le
> bienvenu.

Le principe général, c'est que *tout* doit être documenté. C'est quand
même du logiciel libre et si vous voulez que d'autres puissent
corriger, amender, améliorer ou reprendre votre code, il est
indispensable que la documentation soit présente partout.

Ensuite, il est tout à fait faisable de créer un module utilaire avec
une documentation succincte (pour dire à il sert) et ne contenant que
des fonctions commençant par _ pour indiquer qu'elles sont
internes. Il est même possible ne pas les mettre dans un fichier
séparé mais de les intégrer à un module existant. Je rappelle qu' un
fichier .pm peut contenir plusieurs packages.

--
Paul Gaborit - <http://perso.mines-albi.fr/~gaborit/>
Perl en français - <http://perl.mines-albi.fr/>



Je sais qu'on n'est pas obligé de créer plusieurs .pm et qu'on peut
tout regrouper en un, mais c'est pas mon souhait.

je suis conscient que le principe est de tout documenter, mais comme
je voyais sur le CPAN qu'il y avait des distribution tels DBI,
Regexp::common, GDGraph contenant des modules sans pod, je pensais
que c'était une des démarches à suivre. Par exemple, j'en ai pris un
au piff http://search.cpan.org/~metzzo/XML-RDB-1.1/, on remarque qu'il
y a des modules sans lien.

Bon sinon, quand je regarde le module CGI (http://search.cpan.org/~lds/
CGI.pm-3.42/) , je remarque que le créateur a tout de même fait un pod
pour son module CGI::Utils (http://search.cpan.org/~lds/CGI.pm-3.42/
CGI/Util.pm), puis je faire la même chose, c'est peut être suffisant,
non ?
1 2