Skip to content

Commit dff2e7b

Browse files
committed
Make flatten function more understandable
1 parent 105c659 commit dff2e7b

1 file changed

Lines changed: 20 additions & 8 deletions

File tree

src/per_file.bzl

Lines changed: 20 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,13 @@ load("codechecker_config.bzl", "get_config_file")
3030
load("common.bzl", "SOURCE_ATTR")
3131

3232
def _flatten_depset(in_depset):
33+
"""
34+
in_depset - Multi level depset
35+
36+
Flattens the input depset by 1, like so:
37+
[[A,B],[C],[D,E]] -> [A,B,C,D,E]
38+
[[[A],[B]],[[C]]] -> [[A,B],[C]]
39+
"""
3340
depset_list = []
3441
for d_set in in_depset.to_list():
3542
depset_list.append(d_set)
@@ -63,12 +70,17 @@ def _run_code_checker(
6370
inputs = [compile_commands_json, config_file] + sources_and_headers
6471
else:
6572
# NOTE: we collect only headers, so CTU may not work!
66-
trans_depsets = [
67-
compilation_context.headers,
68-
_flatten_depset(target[SourceFilesInfo].headers)
69-
]
7073
headers = depset(direct = [],
71-
transitive = trans_depsets)
74+
transitive = [
75+
compilation_context.headers,
76+
# This is necessary because
77+
# target[SourceFilesInfo].headers contains
78+
# depsets of header files, and we can only
79+
# append depsets of files not depset of depsets
80+
# to the headers depset.
81+
_flatten_depset(target[SourceFilesInfo].headers)
82+
]
83+
)
7284
inputs = depset([compile_commands_json, config_file, src], transitive = [headers])
7385

7486
outputs = [clang_tidy_plist, clangsa_plist, codechecker_log]
@@ -155,9 +167,9 @@ def _per_file_impl(ctx):
155167
fail("Seems compile_commands.json file is incorrect!")
156168
sources_and_headers = _collect_all_sources_and_headers(ctx)
157169
options = ctx.attr.default_options + ctx.attr.options
158-
all_files = [compile_commands_json]
170+
all_files = [compile_commands]
159171
config_file, env_vars = get_config_file(ctx)
160-
_create_wrapper_script(ctx, options, compile_commands_json, config_file)
172+
_create_wrapper_script(ctx, options, compile_commands, config_file)
161173
for target in ctx.attr.targets:
162174
if not CcInfo in target:
163175
continue
@@ -179,7 +191,7 @@ def _per_file_impl(ctx):
179191
options,
180192
config_file,
181193
env_vars,
182-
compile_commands_json,
194+
compile_commands,
183195
compilation_context,
184196
sources_and_headers,
185197
)

0 commit comments

Comments
 (0)