pxmlw6n2f/Gazebo_Distributed_MPI/tools/gz_cloc.rb

57 lines
1.4 KiB
Ruby
Raw Normal View History

2019-04-18 10:27:54 +08:00
#!/usr/bin/env ruby
# Warning: This script will update the current repository!!
#
# How to use
# 1. Run this script in the root directory of Gazebo.
# 2. The output will be written to /tmp/gz_loc.csv
# 3. Load into a Google spreadsheet.
# 4. Generate a graph, and select Time Line as the graph type.
printf("Warning: This will modify the current repository.\n")
printf("Do you want to continue (Y/n): ")
char = gets
if char != "Y\n"
abort
end
startYear = 2007
f = File.open('/tmp/gz_loc.csv', 'w')
time = Time.new
f.printf("date,blank,comment,code\n")
# Loop through all the years.
for y in (startYear..time.year)
# Get the end month
endMonth = y == time.year ? time.month : 12
# Loop through all the months.
for m in (1..endMonth)
date = y.to_s + "-" + m.to_s
# Update the repo
`hg up -C -d "#{date}"`
# Count lines of code
result = `cloc --force-lang=\"C++\",cc --force-lang=\"C++\",c --force-lang=\"C++\",hh --force-lang=\"C++\",h --force-lang=\"C++\",hpp --exclude_dir=deps,Media,media,cmake,doc,build --csv --quiet --progress-rate=0 *`
lines = result.split("\n")
# Grab just C++ results
lines.each do |line|
if line.include?("C++")
parts = line.split(",")
printf("%d/01/%d, %s, %s, %s\n", m, y, parts[2], parts[3], parts[4])
f.printf("%d/01/%d, %s, %s, %s\n", m, y, parts[2], parts[3], parts[4])
end
end
end
end
f.close()