Changeset View
Changeset View
Standalone View
Standalone View
cmake/utils/filter-lcov.py
#!/usr/bin/env python3 | #!/usr/bin/env python3 | ||||
# Copyright (c) 2020 The Bitcoin developers | # Copyright (c) 2020 The Bitcoin developers | ||||
# Distributed under the MIT software license, see the accompanying | # Distributed under the MIT software license, see the accompanying | ||||
# file COPYING or http://www.opensource.org/licenses/mit-license.php. | # file COPYING or http://www.opensource.org/licenses/mit-license.php. | ||||
import argparse | import argparse | ||||
parser = argparse.ArgumentParser( | parser = argparse.ArgumentParser( | ||||
description='Remove the coverage data from a tracefile for all files matching the pattern.') | description=( | ||||
parser.add_argument('--pattern', '-p', action='append', | "Remove the coverage data from a tracefile for all files matching the pattern." | ||||
help='the pattern of files to remove', required=True) | ) | ||||
) | |||||
parser.add_argument( | parser.add_argument( | ||||
'tracefile', help='the tracefile to remove the coverage data from') | "--pattern", | ||||
parser.add_argument('outfile', help='filename for the output to be written to') | "-p", | ||||
action="append", | |||||
help="the pattern of files to remove", | |||||
required=True, | |||||
) | |||||
parser.add_argument("tracefile", help="the tracefile to remove the coverage data from") | |||||
parser.add_argument("outfile", help="filename for the output to be written to") | |||||
args = parser.parse_args() | args = parser.parse_args() | ||||
tracefile = args.tracefile | tracefile = args.tracefile | ||||
pattern = args.pattern | pattern = args.pattern | ||||
outfile = args.outfile | outfile = args.outfile | ||||
in_remove = False | in_remove = False | ||||
with open(tracefile, 'r', encoding="utf8") as f: | with open(tracefile, "r", encoding="utf8") as f: | ||||
with open(outfile, 'w', encoding="utf8") as wf: | with open(outfile, "w", encoding="utf8") as wf: | ||||
for line in f: | for line in f: | ||||
for p in pattern: | for p in pattern: | ||||
if line.startswith("SF:") and p in line: | if line.startswith("SF:") and p in line: | ||||
in_remove = True | in_remove = True | ||||
if not in_remove: | if not in_remove: | ||||
wf.write(line) | wf.write(line) | ||||
if line == 'end_of_record\n': | if line == "end_of_record\n": | ||||
in_remove = False | in_remove = False |