diff --git a/src/codechecker.bzl b/src/codechecker.bzl index 899ad917..7698f3e7 100644 --- a/src/codechecker.bzl +++ b/src/codechecker.bzl @@ -43,6 +43,18 @@ load( "per_file_test", ) +def _codechecker_resource_set(_os_name, input_count): + """ + Requests thread count based on number of input files. + + If requested thread count is higher than available + bazel schedules the job to run alone. + This may not work with remote machines. + """ + return { + "cpu": input_count, # analysis is run for most input files + } + def get_platform_alias(platform): """ Get platform alias for full platform names being used @@ -139,6 +151,7 @@ def _codechecker_impl(ctx): # arguments = [ctx.outputs.codechecker_script.path], mnemonic = "CodeChecker", progress_message = "CodeChecker %s" % str(ctx.label), + resource_set = _codechecker_resource_set, # use_default_shell_env = True, ) diff --git a/src/per_file_script.py b/src/per_file_script.py index ab9901dc..b6c93d22 100644 --- a/src/per_file_script.py +++ b/src/per_file_script.py @@ -93,6 +93,7 @@ def _run_codechecker() -> None: + ["--skip", SKIP_FILE] + ["--config", CONFIG_FILE] + [COMPILE_COMMANDS_ABSOLUTE] + + ["-j 1"] # Analysis of a single file should use a single thread! ) log(f"CodeChecker command: {' '.join(codechecker_cmd)}\n") log("===-----------------------------------------------------===\n")