Il modo corretto è quello di iniziare sempre con Makefile.PL/Build.PL, proprio come risposta selezionata suggerisce. Tuttavia, a volte non sei quello che ha iniziato, quindi ...
ho usato per fare un makefile falso:
% cat Makefile
test:
prove -Ilib -r t
Quanto segue sembra anche al lavoro (w/o di toccare qualsiasi file sul disco):
cover -t -make 'prove -Ilib -r t; echo >/dev/null'
e 'un brutto hack comunque e potrebbe smettere di funzionare se gli autori di copertura decidono di citare -Fare opzione più strettamente. Inoltre non dovrebbe funzionare sotto Windows. Vorrei che l'cover
avesse invece un'opzione -prove
.
Questo genera ancora la copertura per * .t così come i moduli CPAN in posizioni non standard. Questo comportamento può essere risolto utilizzando + selezionare le opzioni/+ ignore (vedere la Devel::Cover's manpage):
cover -t +select ^lib +ignore^
Così il tl; dr comando di "magia" è
cover -t +select ^lib +ignore^-make 'prove -Ilib -r t; exit $?'
EDIT Quanto segue non ha lavoro per me - è stampata solo breve riassunto:
PERL5OPT="$PERL5OPT -MDevel::Cover" prove -Ilib -r t
cover -t +select ^lib +ignore^
Nota che prove -MSomething
applica Something
-prove
stesso e non lo passa (diversamente da -I).
Non è un progetto distribuibile. c'è solo una directory "lib" completa di * .pm e una "t" senza makefile. –
@ Berov, ho avuto lo stesso problema e il suggerimento di Daxim è corretto. Puoi ancora aggiungere uno scheletro Makefile.PL o Build.PL al tuo progetto e quindi ottenere il tuo rapporto sulla copertura. Se aiuta, ho contattato l'autore di Devel :: Cover e ha confermato che questo è il modo per farlo. – oalders
Incredibilmente questo ha funzionato bene. Ho creato un Makefile.PL barebone, ho eseguito cover-test, e ora ho un set completo di pagine HTML nella cartella cover_db. CHI immagina che sarà così semplice ... Grazie mille. –