@@ -30,6 +30,13 @@ load("codechecker_config.bzl", "get_config_file")
3030load ("common.bzl" , "SOURCE_ATTR" )
3131
3232def _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