diff --git a/industrial_ci/src/tests/merge_fixes.py b/industrial_ci/src/tests/merge_fixes.py new file mode 100755 index 000000000..73ad4ad94 --- /dev/null +++ b/industrial_ci/src/tests/merge_fixes.py @@ -0,0 +1,48 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- + +# Copyright (c) 2022, Robert Haschke +# All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import yaml +import sys + + +def merge_fixes(files): + """Merge all fixes files into mergefile""" + # The fixes suggested by clang-tidy >= 4.0.0 are given under + # the top level key 'Diagnostics' in the output yaml files + mergefile = files[0] + mergekey = "Diagnostics" + merged = [] + for file in files: + try: + with open(file, 'r') as inp: + content = yaml.safe_load(inp) + if not content: + continue # Skip empty files. + merged.extend(content.get(mergekey, [])) + except FileNotFoundError: + pass + + with open(mergefile, 'w') as out: + if merged: + # Assemble output dict with MainSourceFile=''. + output = {'MainSourceFile': '', mergekey: merged} + yaml.safe_dump(output, out) + + +if __name__ == "__main__": + merge_fixes(sys.argv[1:]) diff --git a/industrial_ci/src/tests/source_tests.sh b/industrial_ci/src/tests/source_tests.sh index e1b7d1976..465779865 100644 --- a/industrial_ci/src/tests/source_tests.sh +++ b/industrial_ci/src/tests/source_tests.sh @@ -92,8 +92,24 @@ function run_clang_tidy_check { ici_hook "before_clang_tidy_checks" + # replace -export-fixes with temporary file + local fixes_final="" + local fixes_tmp + local num_args=${#clang_tidy_args[@]} + fixes_tmp=$(mktemp) + for (( i=0; i