]> git.donarmstrong.com Git - lilypond.git/blob - buildscripts/coverage.py
build-coverage.sh script.
[lilypond.git] / buildscripts / coverage.py
1 #!/bin/sh
2 import os
3 import glob
4 import re
5
6 cmds = """
7 ./configure --enable-config=cov --disable-optimising
8 make conf=cov -j2
9 make conf=cov test LILYPOND_JOBS=          
10
11 cd out-cov
12 ln ../lily/* .
13 ln ../lily/out-conv/*cc .
14 mkdir include
15 ln ../lily/include/* include/
16 for a in *[cyl] ; do  gcov -o ../lily/out-cov/  -p $a > $a.gcov-summary ; done 
17 """
18
19 os.chdir ('out-cov')
20
21 #File 'accidental-engraver.cc'
22 #Lines executed:87.70% of 252
23
24 results = []
25 for f in glob.glob ('*.gcov-summary'):
26     str = open (f).read ()
27     m = re.search ("File '([^']+.cc)'\s*Lines executed:([0-9.]+)% of ([0-9]+)", str)
28     if '/usr/lib' in m.group (1):
29         continue
30    
31     if m:
32         cov = float (m.group (2))
33         lines = int (m.group (3))
34         pain = lines * (100.0 - cov)
35         file = m.group (1)
36         tup = (pain, locals ().copy())
37         
38         results.append(tup)
39
40 results.sort ()
41 results.reverse()
42 for (pain, d) in results:
43     print '%(cov)5.2f (%(lines)6d): %(file)s' % d
44