File: source_tree_stats.pl

package info (click to toggle)
trilinos 16.1.0-4
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 994,012 kB
  • sloc: cpp: 3,764,859; ansic: 425,011; fortran: 160,684; python: 101,476; xml: 74,329; sh: 37,044; makefile: 22,641; perl: 7,525; f90: 6,424; csh: 5,285; objc: 2,620; lex: 1,646; lisp: 810; yacc: 603; javascript: 552; awk: 364; ml: 281; php: 145
file content (87 lines) | stat: -rwxr-xr-x 4,479 bytes parent folder | download | duplicates (7)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
#!/usr/bin/perl -w
#
# Must be run from the base directory

use FileHandle;
use Cwd;

my $basedir = Cwd::cwd();

my ($num_hpp_files,  $num_hpp_lines, $num_hpp_semicolons) = get_files_lines_semicolons_counts("hpp");
my ($num_cpp_files, $num_cpp_lines, $num_cpp_semicolons)  = get_files_lines_semicolons_counts("cpp");
my ($num_H_files,   $num_H_lines, $num_H_semicolons)    = get_files_lines_semicolons_counts("H");
my ($num_C_files,   $num_C_lines, $num_C_semicolons)    = get_files_lines_semicolons_counts("C");
my ($num_h_files,   $num_h_lines, $num_h_semicolons)    = get_files_lines_semicolons_counts("h");
my ($num_c_files,   $num_c_lines, $num_c_semicolons)    = get_files_lines_semicolons_counts("c");
my ($num_f_files,   $num_f_lines, $num_f_semicolons)    = get_files_lines_semicolons_counts("f");
my ($num_F_files,   $num_F_lines, $num_F_semicolons)    = get_files_lines_semicolons_counts("F");

my $num_total_files = $num_hpp_files + $num_cpp_files + $num_H_files + $num_C_files + $num_h_files + $num_c_files + $num_f_files + $num_F_files;
my $num_total_lines = $num_hpp_lines + $num_cpp_lines + $num_H_lines + $num_C_lines + $num_h_lines + $num_c_lines + $num_f_lines + $num_F_lines;
my $num_total_semicolons = $num_hpp_semicolons + $num_cpp_semicolons + $num_H_semicolons + $num_C_semicolons + $num_h_semicolons
  + $num_c_semicolons + $num_f_semicolons + $num_F_semicolons;

my @pwd_list = split("/",$ENV{PWD});
print "\nStatistics for source files for ", $pwd_list[-1], " ...\n\n";

if($num_hpp_files) { print "Number of *.hpp files = $num_hpp_files\n"; }
if($num_cpp_files) { print "Number of *.cpp files = $num_cpp_files\n"; }
if($num_H_files)   { print "Number of *.H files   = $num_H_files\n"; }
if($num_C_files)   { print "Number of *.C files   = $num_C_files\n"; }
if($num_h_files)   { print "Number of *.h files   = $num_h_files\n"; }
if($num_c_files)   { print "Number of *.c files   = $num_c_files\n"; }
if($num_f_files)   { print "Number of *.f files   = $num_f_files\n"; }
if($num_F_files)   { print "Number of *.F files   = $num_F_files\n"; }
print "\n";
print "Total number of files = $num_total_files\n";

print "\n";

if($num_hpp_files) { print "Number of lines in *.hpp files = $num_hpp_lines\n"; }
if($num_cpp_files) { print "Number of lines in *.cpp files = $num_cpp_lines\n"; }
if($num_H_files)   { print "Number of lines in *.H files   = $num_H_lines\n"; }
if($num_C_files)   { print "Number of lines in *.C files   = $num_C_lines\n"; }
if($num_h_files)   { print "Number of lines in *.h files   = $num_h_lines\n"; }
if($num_c_files)   { print "Number of lines in *.c files   = $num_c_lines\n"; }
if($num_f_files)   { print "Number of lines in *.f files   = $num_f_lines\n"; }
if($num_F_files)   { print "Number of lines in *.F files   = $num_F_lines\n"; }
print "\n";
print "Total lines of code            = $num_total_lines\n";

print "\n";

if($num_hpp_files) { print "Number of semicolons in *.hpp files = $num_hpp_semicolons\n"; }
if($num_cpp_files) { print "Number of semicolons in *.cpp files = $num_cpp_semicolons\n"; }
if($num_H_files)   { print "Number of semicolons in *.H files   = $num_H_semicolons\n"; }
if($num_C_files)   { print "Number of semicolons in *.C files   = $num_C_semicolons\n"; }
if($num_h_files)   { print "Number of semicolons in *.h files   = $num_h_semicolons\n"; }
if($num_c_files)   { print "Number of semicolons in *.c files   = $num_c_semicolons\n"; }
#if($num_f_files)   { print "Number of semicolons in *.f files   = $num_f_semicolons\n"; }
#if($num_F_files)   { print "Number of semicolons in *.F files   = $num_F_semicolons\n"; }
print "\n";
print "Total number of semicolons          = $num_total_semicolons\n";

print "\n";

sub get_files_lines_semicolons_counts {
  my $file_ext = shift;
  my $output = `find $basedir -name "*.$file_ext" -exec wc -l '{}' ';'`;
  my @output_lines = split('\n',$output);
  my $num_files = 0;
  my $num_lines = 0;
  foreach(@output_lines) {
    ++$num_files;
    $num_lines += (split(" ",$_))[0];
#	  print "num_lines = $num_lines\n";
  }
  my $num_semicolons = 0;
  #$output = `find $basedir -name *.$file_ext -exec grep -Hc '\;' '{}' ';'`;
  $output = `find $basedir -name "*.$file_ext" -exec grep -Hc '\\;' '{}' ';'`;
  #print "output =\n$output\n";
  @output_lines = split('\n',$output);
  foreach(@output_lines) {
    $num_semicolons += (split(":",$_))[1];
#	  print "num_semicolons = $num_semicolons\n";
  }
  return ( $num_files, $num_lines, $num_semicolons );
}