1#!/usr/bin/perl -w 2 3$errfile = 0; 4$errfunc = 0; 5$errcount = 0; 6$errtotcount = 0; 7$totcount = 0; 8$totfile = 0; 9$filelib = "unknown"; 10$filename = "unknown"; 11$funcline = "Function 'undefined'\n"; 12 13open (LOG, ">embossdocreport.log") || die "Cannot open embossdocreport.log"; 14 15%badfiles = (); 16%badcount = (); 17%badtotfiles = (); 18 19while (<>) { 20 $newfunc = 0; 21 $newfile = 0; 22 if (/^Function (\S+)/) { 23 $funcline = $_; 24 $funcname = $1; 25 $newfunc = 1; 26 } 27 if (/^Function list (\S+)/) { 28 $funcline = $_; 29 $funcname = $1; 30 $newfunc = 1; 31 } 32 elsif (/^Obsolete (\S+)/) { 33 $funcline = $_; 34 $funcname = $1; 35 $newfunc = 1; 36 } 37 elsif (/^Datasection (\S+)/) { 38 $funcline = $_; 39 $funcname = $1; 40 $newfunc = 1; 41 } 42 elsif (/^Section (\S+)/) { 43 $funcline = $_; 44 $funcname = $1; 45 $newfunc = 1; 46 } 47 elsif (/^Filesection (\S+)/) { 48 $funcline = $_; 49 $funcname = $1; 50 $newfunc = 1; 51 } 52 elsif (/^Static function (\S+)/) { 53 $funcline = $_; 54 $funcname = $1; 55 $newfunc = 1; 56 } 57 elsif (/^Macro (\S+)/) { 58 $funcline = $_; 59 $funcname = $1; 60 $newfunc = 1; 61 } 62 elsif (/^Data type (\S+)/) { 63 $funcline = $_; 64 $funcname = $1; 65 $newfunc = 1; 66 } 67 elsif (/^Enumeration (\S+)/) { 68 $funcline = $_; 69 $funcname = $1; 70 $newfunc = 1; 71 } 72 elsif (/^Static data type (\S+)/) { 73 $funcline = $_; 74 $funcname = $1; 75 $newfunc = 1; 76 } 77 78 elsif (/^Typedef data type (\S+)/) { 79 $funcline = $_; 80 $funcname = $1; 81 $newfunc = 1; 82 } 83 84 elsif (/^set pubout \'([^\']+)\' lib \'([^\']+)\'/) { 85 $newfileline = $_; 86 $newfilename = $1; 87 $newfilelib = $2; 88 $newfile = 1; 89 if (/ type \'([^\']+)\'/) { 90 $newfiletype = $1; 91 } 92 else { 93 $newfiletype = ""; 94 } 95 } 96 97# elsif (/^bad or missing docheader for (\S+)/) { 98# $funcname = $1; 99# $newfunc = 1; 100# } 101# 102# elsif (/^bad docheader for (\S+) precedes (\S+)/) { 103# $funcname = $2; 104# $newfunc = 1; 105# } 106 107 elsif (/^bad (\S+)/) { 108 $badcount{$1}++; 109 if (!$errcount) { 110 if (!$errfile) { 111 print LOG "=============================\n"; 112 print LOG $newfileline; 113 } 114 print LOG " ".$funcline; 115 } 116 $errcount++; 117 print LOG " ".$_; 118 } 119 120 elsif (/^[*][*] [@]/) { 121 print LOG $_; 122 } 123 124 elsif (/^[.][.] File \/\S+\/([^\/]+)\/([^\/.]+)[.]([^\/.]+)$/) { 125 $newfileline = $_; 126 $newfilename = $2; 127 $newfilelib = $1; 128 $newfile = 1; 129 if ($3 eq 'c') { 130 $newfiletype = "source"; 131 } 132 elsif ($3 eq 'h') { 133 $newfiletype = "include"; 134 } 135 else { 136 $newfiletype = ""; 137 } 138 $funcline = ""; 139 $funcname = "unknown"; 140 } 141 142 if ($newfunc || $newfile) { 143 if ($errcount) { 144 $errtotcount += $errcount; 145 $totcount += $errcount; 146 $errfunc++; 147 $errfile++; 148 $errcount = 0; 149 } 150 } 151 if ($newfile) { 152 if ($errfile) { 153 $badfiles{$filelib."_".$filename}=$errfile; 154 $badtotfiles{$filelib."_".$filename}=$errtotcount; 155 $totfile++; 156 } 157 $errfile = 0; 158 $errtotcount = 0; 159 $filename = $newfilename; 160 if ($newfiletype ne "") { 161 if ($newfiletype eq "include") {$filename .= ".h"} 162 elsif ($newfiletype eq "source") {$filename .= ".c"} 163 else {$filename .= ".$newfiletype"} 164 } 165 $filelib = $newfilelib; 166 } 167 168 169} 170 171if ($errcount) { 172 $totcount += $errcount; 173 $errtotcount += $errcount; 174 $errfunc++; 175 if (!$errfile) { 176 $totfile++; 177 } 178 $errfile++; 179} 180 181if ($errfile) { 182 $badfiles{$filelib."_".$filename}=$errfile; 183 $badtotfiles{$filelib."_".$filename}=$errtotcount; 184 $totfile++; 185} 186 187foreach $x (sort (keys (%badfiles))) { 188 printf "%4d %4d %s\n", $badtotfiles{$x}, $badfiles{$x}, $x; 189} 190 191print STDERR "$totcount errors in $errfunc functions in $totfile files\n"; 192close LOG; 193 194foreach $b (sort(keys(%badcount))) { 195 printf STDERR "%4d %s\n", $badcount{$b},$b; 196} 197