Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
parser = create_argument_parser()
cli_options = parser.parse_args(args=args)
# load the config
cfg_name = find_config_name(cli_options)
cfg_options = {}
if cfg_name is not None:
with io.open(cfg_name, encoding='UTF-8') as cfg_file:
cfg_options = parse_config_into_dict(
parse_config_file(cfg_file, filename=cfg_name))
options_dict = merge_options_and_set_defaults(
[cfg_options, cli_options.__dict__])
options = Options(**options_dict)
logger = Logger(options.verbose)
if cli_options.version:
logger.msg(
"gcovr {version}\n"
"\n"
"{copyright}",
version=__version__, copyright=COPYRIGHT)
sys.exit(0)
if options.html_medium_threshold > options.html_high_threshold:
logger.error(
"value of --html-medium-threshold={} should be\n"
"lower than or equal to the value of --html-high-threshold={}.",
options.html_medium_threshold, options.html_high_threshold)
sys.exit(1)
for f in keys:
cdata = covdata[f]
filtered_fname = options.root_filter.sub('', f)
files.append(filtered_fname)
dirs.append(os.path.dirname(filtered_fname) + os.sep)
cdata_fname[f] = filtered_fname
if not details:
cdata_sourcefile[f] = None
else:
cdata_sourcefile[f] = _make_short_sourcename(
output_file, filtered_fname)
# Define the common root directory, which may differ from options.root
# when source files share a common prefix.
if len(files) > 1:
commondir = commonpath(files)
if commondir != '':
data['DIRECTORY'] = commondir
else:
dir_, file_ = os.path.split(filtered_fname)
if dir_ != '':
data['DIRECTORY'] = dir_ + os.sep
nrows = 0
for f in keys:
cdata = covdata[f] # type: FileCoverage
class_lines = 0
class_hits = 0
class_branches = 0
class_branch_hits = 0
class_lines, class_hits, _ = cdata.line_coverage()
b_total, b_hits, _ = cdata.branch_coverage()
"version", "gcovr %s" % (__version__,)
)
# Generate the element: this is either the root directory
# (specified by --root), or the CWD.
# sources = doc.createElement("sources")
sources = etree.SubElement(root, "sources")
# Generate the coverage output (on a per-package basis)
# packageXml = doc.createElement("packages")
packageXml = etree.SubElement(root, "packages")
packages = {}
for f in sorted(covdata):
data = covdata[f]
filename = presentable_filename(f, root_filter=options.root_filter)
if '/' in filename:
directory, fname = filename.rsplit('/', 1)
else:
directory, fname = '', filename
package = packages.setdefault(
directory, [etree.Element("package"), {}, 0, 0, 0, 0]
)
c = etree.Element("class")
# The Cobertura DTD requires a methods section, which isn't
# trivial to get from gcov (so we will leave it blank)
etree.SubElement(c, "methods")
lines = etree.SubElement(c, "lines")
class_lines = 0
class_hits = 0
def fail_under(covdata, threshold_line, threshold_branch):
(lines_total, lines_covered, percent,
branches_total, branches_covered,
percent_branches) = get_global_stats(covdata)
if branches_total == 0:
percent_branches = 100.0
if percent < threshold_line and percent_branches < threshold_branch:
sys.exit(6)
if percent < threshold_line:
sys.exit(2)
if percent_branches < threshold_branch:
sys.exit(4)
with io.open(cfg_name, encoding='UTF-8') as cfg_file:
cfg_options = parse_config_into_dict(
parse_config_file(cfg_file, filename=cfg_name))
options_dict = merge_options_and_set_defaults(
[cfg_options, cli_options.__dict__])
options = Options(**options_dict)
logger = Logger(options.verbose)
if cli_options.version:
logger.msg(
"gcovr {version}\n"
"\n"
"{copyright}",
version=__version__, copyright=COPYRIGHT)
sys.exit(0)
if options.html_medium_threshold > options.html_high_threshold:
logger.error(
"value of --html-medium-threshold={} should be\n"
"lower than or equal to the value of --html-high-threshold={}.",
options.html_medium_threshold, options.html_high_threshold)
sys.exit(1)
if options.output is not None:
options.output = os.path.abspath(options.output)
if options.objdir is not None:
if not options.objdir:
logger.error(
"empty --object-directory option.\n"
def main(options, args):
if options.version:
sys.stdout.write(
"gcovr %s\n"
"\n"
"Copyright (2013) Sandia Corporation. Under the terms of Contract\n"
"DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government\n"
"retains certain rights in this software.\n"
% (version_str(), )
)
sys.exit(0)
if options.objdir:
tmp = options.objdir.replace('/', os.sep).replace('\\', os.sep)
while os.sep + os.sep in tmp:
tmp = tmp.replace(os.sep + os.sep, os.sep)
if normpath(options.objdir) != tmp:
sys.stderr.write(
"(WARNING) relative referencing in --object-directory.\n"
"\tthis could cause strange errors when gcovr attempts to\n"
"\tidentify the original gcc working directory.\n")
if not os.path.exists(normpath(options.objdir)):
sys.stderr.write(
"(ERROR) Bad --object-directory option.\n"
"\tThe specified directory does not exist.\n")
def main(args=None):
parser = create_argument_parser()
cli_options = parser.parse_args(args=args)
# load the config
cfg_name = find_config_name(cli_options)
cfg_options = {}
if cfg_name is not None:
with io.open(cfg_name, encoding='UTF-8') as cfg_file:
cfg_options = parse_config_into_dict(
parse_config_file(cfg_file, filename=cfg_name))
options_dict = merge_options_and_set_defaults(
[cfg_options, cli_options.__dict__])
options = Options(**options_dict)
logger = Logger(options.verbose)
if cli_options.version:
logger.msg(
"gcovr {version}\n"
"\n"
"{copyright}",
version=__version__, copyright=COPYRIGHT)
sys.exit(0)
if options.html_medium_threshold > options.html_high_threshold:
logger.error(
"value of --html-medium-threshold={} should be\n"
"lower than or equal to the value of --html-high-threshold={}.",
options.html_medium_threshold, options.html_high_threshold)
def main(args=None):
parser = create_argument_parser()
cli_options = parser.parse_args(args=args)
# load the config
cfg_name = find_config_name(cli_options)
cfg_options = {}
if cfg_name is not None:
with io.open(cfg_name, encoding='UTF-8') as cfg_file:
cfg_options = parse_config_into_dict(
parse_config_file(cfg_file, filename=cfg_name))
options_dict = merge_options_and_set_defaults(
[cfg_options, cli_options.__dict__])
options = Options(**options_dict)
logger = Logger(options.verbose)
if cli_options.version:
logger.msg(
"gcovr {version}\n"
"\n"
"{copyright}",
version=__version__, copyright=COPYRIGHT)
sys.exit(0)
if options.html_medium_threshold > options.html_high_threshold:
logger.error(
"value of --html-medium-threshold={} should be\n"
"Can be specified multiple times. "
"If no filters are provided, defaults to --root.",
action="append",
type=FilterOption,
default=[],
),
GcovrConfigOption(
"exclude", ["-e", "--exclude"],
group="filter_options",
help="Exclude source files that match this filter. "
"Can be specified multiple times.",
action="append",
type=FilterOption.NonEmpty,
default=[],
),
GcovrConfigOption(
"gcov_filter", ["--gcov-filter"],
group="filter_options",
help="Keep only gcov data files that match this filter. "
"Can be specified multiple times.",
action="append",
type=FilterOption,
default=[],
),
GcovrConfigOption(
"gcov_exclude", ["--gcov-exclude"],
group="filter_options",
help="Exclude gcov data files that match this filter. "
"Can be specified multiple times.",
action="append",
type=FilterOption,
default=[],
"Must match the compiler you are using, "
"e.g. 'llvm-cov gcov' for Clang. "
"Can include additional arguments. "
"Defaults to the GCOV environment variable, "
"or 'gcov': '{default!s}'.",
default=os.environ.get('GCOV', 'gcov'),
),
GcovrConfigOption(
"exclude_unreachable_branches", ["--exclude-unreachable-branches"],
group="gcov_options",
help="Exclude branch coverage from lines without useful source code "
"(often, compiler-generated \"dead\" code). "
"Default: {default!s}.",
action="store_true",
),
GcovrConfigOption(
"exclude_throw_branches", ["--exclude-throw-branches"],
group="gcov_options",
help="For branch coverage, exclude branches "
"that the compiler generates for exception handling. "
"This often leads to more \"sensible\" coverage reports. "
"Default: {default!s}.",
action="store_true"
),
GcovrConfigOption(
"gcov_files", ["-g", "--use-gcov-files"],
group="gcov_options",
help="Use existing gcov files for analysis. Default: {default!s}.",
action="store_true",
),
GcovrConfigOption(
"gcov_ignore_parse_errors", ['--gcov-ignore-parse-errors'],