1 #####################################################################
3 # The Perl::Tidy::Diagnostics class writes the DIAGNOSTICS file, which is
4 # useful for program development.
6 # Only one such file is created regardless of the number of input
7 # files processed. This allows the results of processing many files
8 # to be summarized in a single file.
10 # Output messages go to a file named DIAGNOSTICS, where
11 # they are labeled by file and line. This allows many files to be
12 # scanned at once for some particular condition of interest. It was
13 # particularly useful for developing guessing strategies.
15 # NOTE: This feature is deactivated in final releases but can be
16 # reactivated for debugging by un-commenting the 'I' options flag
18 #####################################################################
20 package Perl::Tidy::Diagnostics;
23 our $VERSION = '20190601';
29 _write_diagnostics_count => 0,
30 _last_diagnostic_file => "",
37 my ( $self, $input_file ) = @_;
38 $self->{_input_file} = $input_file;
42 sub write_diagnostics {
43 my ( $self, $msg ) = @_;
45 unless ( $self->{_write_diagnostics_count} ) {
46 open( $self->{_fh}, ">", "DIAGNOSTICS" )
47 or Perl::Tidy::Die("couldn't open DIAGNOSTICS: $!\n");
50 my $fh = $self->{_fh};
51 my $last_diagnostic_file = $self->{_last_diagnostic_file};
52 my $input_file = $self->{_input_file};
53 if ( $last_diagnostic_file ne $input_file ) {
54 $fh->print("\nFILE:$input_file\n");
56 $self->{_last_diagnostic_file} = $input_file;
57 my $input_line_number = Perl::Tidy::Tokenizer::get_input_line_number();
58 $fh->print("$input_line_number:\t$msg");
59 $self->{_write_diagnostics_count}++;