X-Git-Url: http://git.vpit.fr/?a=blobdiff_plain;f=lib%2FTest%2FValgrind%2FTool%2Fmemcheck.pm;h=fef177a5f5c296e0abfcf95585c1efd60d7dc911;hb=08860dad1f820cce06758ec4add9353a4dbc8175;hp=87852cf5bed7757d23e8661cad90288f10462bc1;hpb=76e13d7ca56782de6f9fb8d6597856ad91c15ffb;p=perl%2Fmodules%2FTest-Valgrind.git diff --git a/lib/Test/Valgrind/Tool/memcheck.pm b/lib/Test/Valgrind/Tool/memcheck.pm index 87852cf..fef177a 100644 --- a/lib/Test/Valgrind/Tool/memcheck.pm +++ b/lib/Test/Valgrind/Tool/memcheck.pm @@ -9,11 +9,11 @@ Test::Valgrind::Tool::memcheck - Run an analysis through the memcheck tool. =head1 VERSION -Version 1.02 +Version 1.10 =cut -our $VERSION = '1.02'; +our $VERSION = '1.10'; =head1 DESCRIPTION @@ -58,8 +58,6 @@ sub new { $self->{callers} = $callers; - $self->{twig} = Test::Valgrind::Tool::memcheck::Twig->new(tool => $self); - $self; } @@ -73,23 +71,39 @@ Read-only accessor for the C option. sub callers { $_[0]->{callers} } -=head2 C +sub suppressions_tag { 'memcheck-' . $_[1]->version } + +=head2 C -Read-only accessor for the underlying L parser. +This tool uses a C parser in analysis mode, and a C parser in suppressions mode. =cut -sub twig { $_[0]->{twig} } +sub parser_class { + my ($self, $session) = @_; -sub suppressions_tag { 'memcheck-' . $_[1]->version } + my $class = $session->do_suppressions + ? 'Test::Valgrind::Parser::Suppressions::Text' + : 'Test::Valgrind::Parser::XML::Twig'; + + local $@; + eval "require $class"; + + return $class; +} -=head2 C +=head2 C This tool emits C object reports in analysis mode. =cut -sub report_class_analysis { 'Test::Valgrind::Tool::memcheck::Report' } +sub report_class { + my ($self, $session) = @_; + + $session->do_suppressions ? 'Test::Valgrind::Report::Suppressions' + : 'Test::Valgrind::Tool::memcheck::Report' +} sub args { my $self = shift; @@ -114,39 +128,6 @@ sub args { return @args; } -# We must store the session in ourselves because it's only possible to pass -# arguments to XML::Twig objects by a global stash. - -sub _session { @_ <= 1 ? $_[0]->{_session} : ($_[0]->{_session} = $_[1]) } - -sub start { - my ($self, $sess) = @_; - - $self->SUPER::start($sess); - $self->_session($sess); - - return; -} - -sub parse_analysis { - my ($self, $sess, $fh) = @_; - - my $twig = $self->twig; - $twig->parse($fh); - $twig->purge; - - return; -} - -sub finish { - my ($self, $sess) = @_; - - $self->_session(undef); - $self->SUPER::finish($sess); - - return; -} - =head1 SEE ALSO L, L. @@ -184,7 +165,7 @@ package Test::Valgrind::Tool::memcheck::Report; use base qw/Test::Valgrind::Report/; -our $VERSION = '1.02'; +our $VERSION = '1.10'; my @kinds = qw/ InvalidFree