---
name: "Test::Valgrind::Tool"
section: "3pm"
platform: "linux"
package: "libtest-valgrind-perl"
version: "1.19-6"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Test::Valgrind::Tool"
---

# Test::Valgrind::Tool(3pm)

Base class for Test::Valgrind tools.

## NAME

Test::Valgrind::Tool - Base class for Test::Valgrind tools.

## VERSION

Version 1.19

## DESCRIPTION

This class is the base for Test::Valgrind tools.

They wrap around `"valgrind"` tools by parsing its output and sending reports to the parent session whenever an error occurs. They are expected to function both in suppressions generation and in analysis mode.

## METHODS

### "requires\_version"

```
    my $required_version = $tvt->requires_version;
```

The minimum `"valgrind"` version needed to run this tool. Defaults to `3.1.0`.

### "new"

```
    my $tvt = Test::Valgrind::Tool->new(tool => $tool);
```

Creates a new tool object of type `$tool` by requiring and redispatching the method call to the module named `$tool` if it contains `'::'` or to `"Test::Valgrind::Tool::$tool"` otherwise. The class represented by `$tool` must inherit this class.

### "new\_trainer"

```
    my $tvt_train = Test::Valgrind::Tool->new_trainer;
```

Creates a new tool object suitable for generating suppressions.

Defaults to return `"undef"`, which skips suppression generation.

### "parser\_class"

```
    my $parser_class = $tvt->parser_class($session);
```

Returns the class from which the parser for this tool output will be instantiated.

This method must be implemented when subclassing.

### "report\_class"

```
    my $report_class = $tvt->report_class($session);
```

Returns the class in which suppression reports generated by this tool will be blessed.

This method must be implemented when subclassing.

### "args"

```
    my @args = $tvt->args($session);
```

Returns the list of tool-specific arguments that are to be passed to `"valgrind"`. All the suppression arguments are already handled by the session.

Defaults to the empty list.

### "suppressions\_tag"

```
    my $tag = $tvt->suppressions_tag($session);
```

Returns a identifier that will be used to pick up the right suppressions for running the tool, or `"undef"` to indicate that no special suppressions are needed.

This method must be implemented when subclassing.

### "start"

```
    $tvt->start($session);
```

Called when the `$session` starts.

Defaults to set "started" in Test::Valgrind::Component.

### "filter"

```
    my $filtered_report = $tvt->filter($session, $report);
```

The `$session` calls this method after receiving a report from the parser and before letting the command filter it. You can either return a mangled `$report` (which does not need to be a clone of the original) or `"undef"` if you want the action to ignore it completely.

Defaults to the identity function.

### "finish"

```
    $tvt->finish($session);
```

Called when the `$session` finishes.

Defaults to clear "started" in Test::Valgrind::Component.

## SEE ALSO

Test::Valgrind, Test::Valgrind::Component, Test::Valgrind::Session.

## AUTHOR

Vincent Pit, `"<perl at profvince.com>"`, \<http://www.profvince.com\>.

You can contact me by mail or on `"irc.perl.org"` (vincent).

## BUGS

Please report any bugs or feature requests to `"bug-test-valgrind at rt.cpan.org"`, or through the web interface at \<http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Test-Valgrind\>. I will be notified, and then you'll automatically be notified of progress on your bug as I make changes.

## SUPPORT

You can find documentation for this module with the perldoc command.

```
    perldoc Test::Valgrind::Tool
```

## COPYRIGHT & LICENSE

Copyright 2009,2010,2011,2013,2015,2016 Vincent Pit, all rights reserved.

This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
