Skip to content

Commit fbe5b69

Browse files
committed
Add an option to provide a pattern of excluded lines
1 parent d07f3a9 commit fbe5b69

2 files changed

Lines changed: 14 additions & 5 deletions

File tree

README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,8 @@ optional arguments:
5050
set include file or directory
5151
-E REGEXP, --exclude-pattern REGEXP
5252
set exclude file/directory pattern
53+
--exclude-lines-pattern REGEXP
54+
set exclude lines pattern
5355
-x EXT, --extension EXT
5456
set extension of files to process
5557
-y FILE, --coveralls-yaml FILE

cpp_coveralls/coverage.py

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)