@@ -48,6 +48,9 @@ def create_args(params):
4848 parser .add_argument ('-E' , '--exclude-pattern' , dest = 'regexp' ,
4949 action = 'append' , metavar = 'REGEXP' , default = [],
5050 help = 'set exclude file/directory pattern' )
51+ parser .add_argument ('--exclude-lines-pattern' ,
52+ action = 'append' , metavar = 'REGEXP' , default = [],
53+ help = 'set exclude file/directory pattern' )
5154 parser .add_argument ('-x' , '--extension' , metavar = 'EXT' , action = 'append' ,
5255 help = 'set extension of files to process' )
5356 parser .add_argument ('-y' , '--coveralls-yaml' , default = '.coveralls.yml' ,
@@ -236,7 +239,7 @@ def run_gcov(args):
236239 os .path .join (root , files ))
237240
238241
239- def parse_gcov_file (fobj , filename ):
242+ def parse_gcov_file (args , fobj , filename ):
240243 """Parses the content of .gcov file
241244 """
242245 coverage = []
@@ -271,9 +274,7 @@ def parse_gcov_file(fobj, filename):
271274 # Avoid false positives.
272275 if (
273276 ignoring or
274- text .lstrip ().startswith (('inline' , 'static' )) or
275- text .strip () == '}' or
276- re .search (r'\bLCOV_EXCL_LINE\b' , text )
277+ any ([re .search (pattern , text ) for pattern in args .exclude_lines_pattern ])
277278 ):
278279 coverage .append (None )
279280 else :
@@ -379,6 +380,12 @@ def collect(args):
379380 if os .getenv ('COVERALLS_PARALLEL' , False ):
380381 report ['parallel' ] = 'true'
381382
383+ args .exclude_lines_pattern .extend ([
384+ r'\bLCOV_EXCL_LINE\b' ,
385+ r'^\s*};?\s*$' ,
386+ r'^\s*(inline|static)'
387+ ])
388+
382389 discovered_files = set ()
383390 src_files = {}
384391 abs_root = os .path .abspath (args .root )
@@ -447,7 +454,7 @@ def collect(args):
447454 with io .open (source_file_path , mode = 'rb' ) as src_file :
448455 src_report ['source_digest' ] = hashlib .md5 (src_file .read ()).hexdigest ()
449456
450- src_report ['coverage' ] = parse_gcov_file (fobj , gcov_path )
457+ src_report ['coverage' ] = parse_gcov_file (args , fobj , gcov_path )
451458 if src_path in src_files :
452459 src_files [src_path ] = combine_reports (src_files [src_path ], src_report )
453460 else :
0 commit comments