Bug 1544764 - Add description at review phase about defects found - clang-tidy. r=sylvestre
authorAndi-Bogdan Postelnicu <bpostelnicu@mozilla.com>
Thu, 18 Apr 2019 08:49:52 +0000
changeset 470063 dc185b8ee50e252d3219e71de31b28b098ec86db
parent 470062 b6b08e336e6f236189da007f79b6dcd4f3521b5e
child 470064 53793d2ea3ece905e5847018f9c7595585f8f388
push id112843
push useraiakab@mozilla.com
push dateFri, 19 Apr 2019 09:50:22 +0000
treeherdermozilla-inbound@c06f27cbfe40 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewerssylvestre
bugs1544764
milestone68.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 1544764 - Add description at review phase about defects found - clang-tidy. r=sylvestre Differential Revision: https://phabricator.services.mozilla.com/D27669
python/mozbuild/mozbuild/mach_commands.py
tools/clang-tidy/config.yaml
tools/clang-tidy/test/bugprone-argument-comment.json
tools/clang-tidy/test/bugprone-assert-side-effect.json
tools/clang-tidy/test/bugprone-bool-pointer-implicit-conversion.json
tools/clang-tidy/test/bugprone-forward-declaration-namespace.json
tools/clang-tidy/test/bugprone-incorrect-roundings.json
tools/clang-tidy/test/bugprone-integer-division.json
tools/clang-tidy/test/bugprone-macro-parentheses.json
tools/clang-tidy/test/bugprone-macro-repeated-side-effects.json
tools/clang-tidy/test/bugprone-misplaced-widening-cast.json
tools/clang-tidy/test/bugprone-sizeof-expression.json
tools/clang-tidy/test/bugprone-string-constructor.json
tools/clang-tidy/test/bugprone-string-integer-assignment.json
tools/clang-tidy/test/bugprone-suspicious-memset-usage.json
tools/clang-tidy/test/bugprone-suspicious-missing-comma.json
tools/clang-tidy/test/bugprone-suspicious-semicolon.json
tools/clang-tidy/test/bugprone-suspicious-string-compare.json
tools/clang-tidy/test/bugprone-swapped-arguments.json
tools/clang-tidy/test/bugprone-unused-raii.json
tools/clang-tidy/test/bugprone-use-after-move.json
tools/clang-tidy/test/clang-analyzer-core.CallAndMessage.json
tools/clang-tidy/test/clang-analyzer-core.DivideZero.json
tools/clang-tidy/test/clang-analyzer-core.NonNullParamChecker.json
tools/clang-tidy/test/clang-analyzer-core.NullDereference.json
tools/clang-tidy/test/clang-analyzer-core.UndefinedBinaryOperatorResult.json
tools/clang-tidy/test/clang-analyzer-core.uninitialized.Assign.json
tools/clang-tidy/test/clang-analyzer-core.uninitialized.Branch.json
tools/clang-tidy/test/clang-analyzer-cplusplus.NewDelete.json
tools/clang-tidy/test/clang-analyzer-cplusplus.NewDeleteLeaks.json
tools/clang-tidy/test/clang-analyzer-deadcode.DeadStores.json
tools/clang-tidy/test/clang-analyzer-security.FloatLoopCounter.json
tools/clang-tidy/test/clang-analyzer-security.insecureAPI.UncheckedReturn.json
tools/clang-tidy/test/clang-analyzer-security.insecureAPI.bcmp.json
tools/clang-tidy/test/clang-analyzer-security.insecureAPI.bcopy.json
tools/clang-tidy/test/clang-analyzer-security.insecureAPI.bzero.json
tools/clang-tidy/test/clang-analyzer-security.insecureAPI.getpw.json
tools/clang-tidy/test/clang-analyzer-security.insecureAPI.mkstemp.json
tools/clang-tidy/test/clang-analyzer-security.insecureAPI.mktemp.json
tools/clang-tidy/test/clang-analyzer-security.insecureAPI.vfork.json
tools/clang-tidy/test/clang-analyzer-unix.Malloc.json
tools/clang-tidy/test/clang-analyzer-unix.cstring.BadSizeArg.json
tools/clang-tidy/test/clang-analyzer-unix.cstring.NullArg.json
tools/clang-tidy/test/misc-non-copyable-objects.json
tools/clang-tidy/test/misc-redundant-expression.json
tools/clang-tidy/test/misc-unused-alias-decls.json
tools/clang-tidy/test/misc-unused-using-decls.json
tools/clang-tidy/test/modernize-loop-convert.json
tools/clang-tidy/test/modernize-raw-string-literal.json
tools/clang-tidy/test/modernize-shrink-to-fit.json
tools/clang-tidy/test/modernize-use-bool-literals.json
tools/clang-tidy/test/modernize-use-equals-default.json
tools/clang-tidy/test/modernize-use-equals-delete.json
tools/clang-tidy/test/modernize-use-nullptr.json
tools/clang-tidy/test/performance-faster-string-find.json
tools/clang-tidy/test/performance-for-range-copy.json
tools/clang-tidy/test/performance-implicit-conversion-in-loop.json
tools/clang-tidy/test/performance-inefficient-algorithm.json
tools/clang-tidy/test/performance-inefficient-string-concatenation.json
tools/clang-tidy/test/performance-inefficient-vector-operation.json
tools/clang-tidy/test/performance-move-const-arg.json
tools/clang-tidy/test/performance-move-constructor-init.json
tools/clang-tidy/test/performance-noexcept-move-constructor.json
tools/clang-tidy/test/performance-type-promotion-in-math-fn.json
tools/clang-tidy/test/performance-unnecessary-copy-initialization.json
tools/clang-tidy/test/performance-unnecessary-value-param.json
tools/clang-tidy/test/readability-braces-around-statements.json
tools/clang-tidy/test/readability-container-size-empty.json
tools/clang-tidy/test/readability-delete-null-pointer.json
tools/clang-tidy/test/readability-else-after-return.json
tools/clang-tidy/test/readability-inconsistent-declaration-parameter-name.json
tools/clang-tidy/test/readability-misleading-indentation.json
tools/clang-tidy/test/readability-non-const-parameter.json
tools/clang-tidy/test/readability-redundant-control-flow.json
tools/clang-tidy/test/readability-redundant-preprocessor.json
tools/clang-tidy/test/readability-redundant-smartptr-get.json
tools/clang-tidy/test/readability-redundant-string-cstr.json
tools/clang-tidy/test/readability-redundant-string-init.json
tools/clang-tidy/test/readability-simplify-boolean-expr.json
tools/clang-tidy/test/readability-static-accessed-through-instance.json
tools/clang-tidy/test/readability-uniqueptr-delete-release.json
--- a/python/mozbuild/mozbuild/mach_commands.py
+++ b/python/mozbuild/mozbuild/mach_commands.py
@@ -1610,22 +1610,29 @@ class StaticAnalysisSubCommand(SubComman
                             help='Print verbose output.'),
         ]
         for arg in args:
             after = arg(after)
         return after
 
 
 class StaticAnalysisMonitor(object):
-    def __init__(self, srcdir, objdir, total):
+    def __init__(self, srcdir, objdir, clang_tidy_config, total):
         self._total = total
         self._processed = 0
         self._current = None
         self._srcdir = srcdir
 
+        self._clang_tidy_config = clang_tidy_config['clang_checkers']
+        # Transform the configuration to support Regex
+        for item in self._clang_tidy_config:
+            if item['name'] == '-*':
+                continue
+            item['name'].replace('*', '.*')
+
         from mozbuild.compilation.warnings import (
             WarningsCollector,
             WarningsDatabase,
         )
 
         self._warnings_database = WarningsDatabase()
 
         def on_warning(warning):
@@ -1660,16 +1667,34 @@ class StaticAnalysisMonitor(object):
         if line.find('clang-tidy') != -1:
             filename = line.split(' ')[-1]
             if os.path.isfile(filename):
                 self._current = os.path.relpath(filename, self._srcdir)
             else:
                 self._current = None
             self._processed = self._processed + 1
             return (warning, False)
+        if warning is not None:
+            def get_reliability(checker_name):
+                # get the matcher from self._clang_tidy_config that is the 'name' field
+                reliability = None
+                for item in self._clang_tidy_config:
+                    if item['name'] == checker_name:
+                        reliability = item.get('reliability', 'low')
+                        break
+                    else:
+                        # We are using a regex in order to also match 'mozilla-.* like checkers'
+                        matcher = re.match(item['name'], checker_name)
+                        if matcher is not None and matcher.group(0) == checker_name:
+                            reliability = item.get('reliability', 'low')
+                            break
+                return reliability
+            reliability = get_reliability(warning['flag'])
+            if reliability is not None:
+                warning['reliability'] = reliability
         return (warning, True)
 
 
 @CommandProvider
 class StaticAnalysis(MachCommandBase):
     """Utilities for running C++ static analysis checks and format."""
 
     # List of file extension to consider (should start with dot)
@@ -1764,17 +1789,17 @@ class StaticAnalysis(MachCommandBase):
 
         cwd = self.topobjdir
         self._compilation_commands_path = self.topobjdir
         if self._clang_tidy_config is None:
             self._clang_tidy_config = self._get_clang_tidy_config()
         args = self._get_clang_tidy_command(
             checks=checks, header_filter=header_filter, sources=source, jobs=jobs, fix=fix)
 
-        monitor = StaticAnalysisMonitor(self.topsrcdir, self.topobjdir, total)
+        monitor = StaticAnalysisMonitor(self.topsrcdir, self.topobjdir, self._clang_tidy_config, total)
 
         footer = StaticAnalysisFooter(self.log_manager.terminal, monitor)
         with StaticAnalysisOutputManager(self.log_manager, monitor, footer) as output_manager:
             rc = self.run_process(args=args, ensure_exit_code=False, line_handler=output_manager.on_line, cwd=cwd)
 
             self.log(logging.WARNING, 'warning_summary',
                      {'count': len(monitor.warnings_db)},
                      '{count} warnings present.')
@@ -2233,18 +2258,19 @@ class StaticAnalysis(MachCommandBase):
                 excludes.append(line.strip('\n'))
         return checkers, excludes
 
     def _get_clang_tidy_config(self):
         try:
             file_handler = open(mozpath.join(self.topsrcdir, "tools", "clang-tidy", "config.yaml"))
             config = yaml.safe_load(file_handler)
         except Exception:
-            print('Looks like config.yaml is not valid, we are going to use default'
-                  ' values for the rest of the analysis for clang-tidy.')
+            self.log(logging.ERROR, 'static-analysis', {},
+                    'Looks like config.yaml is not valid, we are going to use default'
+                    ' values for the rest of the analysis for clang-tidy.')
             return None
         return config
 
     def _get_cov_config(self):
         try:
             file_handler = open(mozpath.join(self.topsrcdir, "tools", "coverity", "config.yaml"))
             config = yaml.safe_load(file_handler)
         except Exception:
@@ -2547,16 +2573,20 @@ class StaticAnalysis(MachCommandBase):
             return self.TOOLS_CHECKER_FAILED_FILE
 
         failed_checks = []
         failed_checks_baseline = []
         for checker in items:
             test_file_path_json = mozpath.join(self._clang_tidy_base_path, "test", checker) + '.json'
             # Read the pre-determined issues
             baseline_issues = self._get_autotest_stored_issues(test_file_path_json)
+
+            # We also stored the 'reliability' index so strip that from the baseline_issues
+            baseline_issues[:] = [item for item in baseline_issues if 'reliability' not in item]
+
             found = all([element_base in issues for element_base in baseline_issues])
 
             if not found:
                 failed_checks.append(checker)
                 failed_checks_baseline.append(baseline_issues)
 
         if len(failed_checks) > 0:
             self.log(logging.ERROR, 'static-analysis', {}, 'The following check(s) failed for bulk analysis: ' + ' '.join(failed_checks))
@@ -2887,16 +2917,19 @@ class StaticAnalysis(MachCommandBase):
 
         # Verify to see if we got any issues, if not raise exception
         if not issues:
             checker_error['checker-error'] = self.TOOLS_CHECKER_RETURNED_NO_ISSUES
             checker_error['info1'] = clang_output
             checkers_results.append(checker_error)
             return self.TOOLS_CHECKER_RETURNED_NO_ISSUES
 
+        # Also store the 'reliability' index for this checker
+        issues.append({'reliability': item['reliability']})
+
         if self._dump_results:
             self._build_autotest_result(test_file_path_json, json.dumps(issues))
         else:
             if not os.path.exists(test_file_path_json):
                 # Result file for test not found maybe regenerate it?
                 checker_error['checker-error'] = self.TOOLS_CHECKER_RESULT_FILE_NOT_FOUND
                 checkers_results.append(checker_error)
                 return self.TOOLS_CHECKER_RESULT_FILE_NOT_FOUND
--- a/tools/clang-tidy/config.yaml
+++ b/tools/clang-tidy/config.yaml
@@ -18,157 +18,258 @@ platforms:
   - win64
 # Minimum clang-tidy version that is required for all the following checkers
 # to work properly.
 package_version: "8.0.0"
 clang_checkers:
   - name: -*
     publish: !!bool no
   - name: bugprone-argument-comment
+    reliability: high
   - name: bugprone-assert-side-effect
+    reliability: high
   - name: bugprone-bool-pointer-implicit-conversion
+    reliability: low
   - name: bugprone-forward-declaration-namespace
+    reliability: high
   - name: bugprone-incorrect-roundings
+    reliability: high
   - name: bugprone-integer-division
+    reliability: high
   - name: bugprone-macro-parentheses
+    reliability: medium
   - name: bugprone-macro-repeated-side-effects
+    reliability: high
   - name: bugprone-misplaced-widening-cast
+    reliability: high
   - name: bugprone-multiple-statement-macro
     # Incompatible with our code base, see bug 1496379.
     publish: !!bool no
+    reliability: high
   - name: bugprone-sizeof-expression
+    reliability: high
   - name: bugprone-string-constructor
+    reliability: high
   - name: bugprone-string-integer-assignment
+    reliability: high
   - name: bugprone-suspicious-memset-usage
+    reliability: high
   - name: bugprone-suspicious-missing-comma
+    reliability: high
   - name: bugprone-suspicious-semicolon
+    reliability: high
   - name: bugprone-suspicious-string-compare
+    reliability: high
   - name: bugprone-swapped-arguments
+    reliability: high
   - name: bugprone-unused-raii
+    reliability: high
   - name: bugprone-use-after-move
+    reliability: high
   - name: clang-analyzer-core.CallAndMessage
+    reliability: medium
   - name: clang-analyzer-core.DivideZero
+    reliability: high
   - name: clang-analyzer-core.NonNullParamChecker
+    reliability: high
   - name: clang-analyzer-core.NullDereference
+    reliability: medium
   - name: clang-analyzer-core.UndefinedBinaryOperatorResult
+    reliability: medium
   - name: clang-analyzer-core.uninitialized.Assign
+    reliability: medium
   - name: clang-analyzer-core.uninitialized.Branch
+    reliability: medium
   - name: clang-analyzer-cplusplus.NewDelete
+    reliability: medium
   - name: clang-analyzer-cplusplus.NewDeleteLeaks
+    reliability: medium
   - name: clang-analyzer-deadcode.DeadStores
+    reliability: high
   - name: clang-analyzer-security.FloatLoopCounter
+    reliability: high
   - name: clang-analyzer-security.insecureAPI.bcmp
+    reliability: high
   - name: clang-analyzer-security.insecureAPI.bcopy
+    reliability: high
   - name: clang-analyzer-security.insecureAPI.bzero
+    reliability: high
   - name: clang-analyzer-security.insecureAPI.getpw
+    reliability: high
   # We don't add clang-analyzer-security.insecureAPI.gets here; it's deprecated.
   - name: clang-analyzer-security.insecureAPI.mkstemp
+    reliability: high
   - name: clang-analyzer-security.insecureAPI.mktemp
+    reliability: high
   - name: clang-analyzer-security.insecureAPI.rand
+    reliability: low
     # C checker, that is outdated and doesn't check for the new std::rand calls.
     publish: !!bool no
   - name: clang-analyzer-security.insecureAPI.strcpy
+    reliability: low
     # The functions that should be used differ on POSIX and Windows, and there
     # isn't a consensus on how we should approach this.
     publish: !!bool no
   - name: clang-analyzer-security.insecureAPI.UncheckedReturn
+    reliability: low
   - name: clang-analyzer-security.insecureAPI.vfork
+    reliability: medium
   - name: clang-analyzer-unix.Malloc
+    reliability: high
   - name: clang-analyzer-unix.cstring.BadSizeArg
+    reliability: high
   - name: clang-analyzer-unix.cstring.NullArg
+    reliability: high
   - name: misc-non-copyable-objects
+    reliability: high
   - name: misc-redundant-expression
+    reliability: medium
   - name: misc-unused-alias-decls
+    reliability: high
   - name: misc-unused-using-decls
+    reliability: high
   - name: modernize-avoid-bind
     restricted-platforms:
       - win32
       - win64
+    reliability: medium
   - name: modernize-loop-convert
+    reliability: high
   - name: modernize-raw-string-literal
+    reliability: high
   - name: modernize-redundant-void-arg
+    reliability: high
     # We still have some old C code that is built with a C compiler, so this
     # might break the build.
     publish: !!bool no
   - name: modernize-shrink-to-fit
+    reliability: high
   - name: modernize-use-auto
+    reliability: high
     # Controversial, see bug 1371052.
     publish: !!bool no
   - name: modernize-use-bool-literals
+    reliability: high
   - name: modernize-use-equals-default
+    reliability: high
   - name: modernize-use-equals-delete
+    reliability: high
   - name: modernize-use-nullptr
+    reliability: high
   - name: modernize-use-override
+    reliability: low
     # Too noisy because of the way how we implement NS_IMETHOD. See Bug 1420366.
     publish: !!bool no
   - name: mozilla-*
+    reliability: high
   - name: performance-faster-string-find
+    reliability: high
   - name: performance-for-range-copy
+    reliability: high
   - name: performance-implicit-conversion-in-loop
+    reliability: high
   - name: performance-inefficient-algorithm
     restricted-platforms:
       - linux64
       - macosx64
+    reliability: high
   - name: performance-inefficient-string-concatenation
+    reliability: high
   - name: performance-inefficient-vector-operation
+    reliability: high
   - name: performance-move-const-arg
+    reliability: high
   - name: performance-move-constructor-init
+    reliability: high
   - name: performance-noexcept-move-constructor
+    reliability: high
   - name: performance-type-promotion-in-math-fn
+    reliability: high
   - name: performance-unnecessary-copy-initialization
+    reliability: high
   - name: performance-unnecessary-value-param
+    reliability: high
   - name: readability-braces-around-statements
+    reliability: high
   # Note: this can be loosened up by using the ShortStatementLines option
   - name: readability-container-size-empty
+    reliability: high
   - name: readability-delete-null-pointer
+    reliability: high
   - name: readability-else-after-return
+    reliability: high
   - name: readability-implicit-bool-conversion
+    reliability: low
     # On automation the config flags act strange. Please see Bug 1500241.
     publish: !!bool no
     config:
       - key: AllowIntegerConditions
         # The check will allow conditional integer conversions.
         value: 1
       - key: AllowPointerConditions
         # The check will allow conditional pointer conversions.
         value: 1
   - name: readability-inconsistent-declaration-parameter-name
+    reliability: high
   - name: readability-misleading-indentation
+    reliability: high
   - name: readability-non-const-parameter
+    reliability: high
   - name: readability-redundant-control-flow
+    reliability: high
   - name: readability-redundant-preprocessor
+    reliability: high
   - name: readability-redundant-smartptr-get
+    reliability: high
   - name: readability-redundant-string-cstr
+    reliability: high
   - name: readability-redundant-string-init
+    reliability: high
   - name: readability-static-accessed-through-instance
+    reliability: high
   - name: readability-simplify-boolean-expr
+    reliability: high
   - name: readability-uniqueptr-delete-release
+    reliability: high
   # We don't publish the google checkers since we are interested in only having
   # a general idea how our code complies with the rules added by these checkers.
   - name: google-build-explicit-make-pair
+    reliability: low
     publish: !!bool no
   - name: google-build-namespaces
+    reliability: low
     publish: !!bool no
   - name: google-build-using-namespace
+    reliability: low
     publish: !!bool no
   - name: google-default-arguments
+    reliability: low
     publish: !!bool no
   - name: google-explicit-constructor
+    reliability: low
     publish: !!bool no
   - name: google-global-names-in-headers
+    reliability: low
     publish: !!bool no
   - name: google-readability-casting
+    reliability: low
     publish: !!bool no
   - name: google-readability-function-size
+    reliability: low
     publish: !!bool no
   - name: google-readability-namespace-comments
+    reliability: low
     publish: !!bool no
   - name: google-readability-todo
+    reliability: low
     publish: !!bool no
   - name: google-runtime-int
+    reliability: low
     publish: !!bool no
   - name: google-runtime-operator
+    reliability: low
     publish: !!bool no
   - name: google-runtime-references
+    reliability: low
     publish: !!bool no
 
 # Third party files from mozilla-central
 third_party: tools/rewriting/ThirdPartyPaths.txt
--- a/tools/clang-tidy/test/bugprone-argument-comment.json
+++ b/tools/clang-tidy/test/bugprone-argument-comment.json
@@ -1,1 +1,1 @@
-[["warning", "argument name 'y' in comment does not match parameter name 'x'", "bugprone-argument-comment"], ["warning", "argument name 'z' in comment does not match parameter name 'y'", "bugprone-argument-comment"]]
\ No newline at end of file
+[["warning", "argument name 'y' in comment does not match parameter name 'x'", "bugprone-argument-comment"], ["warning", "argument name 'z' in comment does not match parameter name 'y'", "bugprone-argument-comment"], {"reliability": "high"}]
\ No newline at end of file
--- a/tools/clang-tidy/test/bugprone-assert-side-effect.json
+++ b/tools/clang-tidy/test/bugprone-assert-side-effect.json
@@ -1,1 +1,1 @@
-[["warning", "found assert() with side effect", "bugprone-assert-side-effect"]]
\ No newline at end of file
+[["warning", "found assert() with side effect", "bugprone-assert-side-effect"], {"reliability": "high"}]
\ No newline at end of file
--- a/tools/clang-tidy/test/bugprone-bool-pointer-implicit-conversion.json
+++ b/tools/clang-tidy/test/bugprone-bool-pointer-implicit-conversion.json
@@ -1,1 +1,1 @@
-[["warning", "dubious check of 'bool *' against 'nullptr', did you mean to dereference it?", "bugprone-bool-pointer-implicit-conversion"]]
\ No newline at end of file
+[["warning", "dubious check of 'bool *' against 'nullptr', did you mean to dereference it?", "bugprone-bool-pointer-implicit-conversion"], {"reliability": "low"}]
\ No newline at end of file
--- a/tools/clang-tidy/test/bugprone-forward-declaration-namespace.json
+++ b/tools/clang-tidy/test/bugprone-forward-declaration-namespace.json
@@ -1,1 +1,1 @@
-[["warning", "no definition found for 'A', but a definition with the same name 'A' found in another namespace 'nb'", "bugprone-forward-declaration-namespace"]]
\ No newline at end of file
+[["warning", "no definition found for 'A', but a definition with the same name 'A' found in another namespace 'nb'", "bugprone-forward-declaration-namespace"], {"reliability": "high"}]
\ No newline at end of file
--- a/tools/clang-tidy/test/bugprone-incorrect-roundings.json
+++ b/tools/clang-tidy/test/bugprone-incorrect-roundings.json
@@ -1,1 +1,1 @@
-[["warning", "casting (double + 0.5) to integer leads to incorrect rounding; consider using lround (#include <cmath>) instead", "bugprone-incorrect-roundings"]]
\ No newline at end of file
+[["warning", "casting (double + 0.5) to integer leads to incorrect rounding; consider using lround (#include <cmath>) instead", "bugprone-incorrect-roundings"], {"reliability": "high"}]
\ No newline at end of file
--- a/tools/clang-tidy/test/bugprone-integer-division.json
+++ b/tools/clang-tidy/test/bugprone-integer-division.json
@@ -1,1 +1,1 @@
-[["warning", "result of integer division used in a floating point context; possible loss of precision", "bugprone-integer-division"]]
\ No newline at end of file
+[["warning", "result of integer division used in a floating point context; possible loss of precision", "bugprone-integer-division"], {"reliability": "high"}]
\ No newline at end of file
--- a/tools/clang-tidy/test/bugprone-macro-parentheses.json
+++ b/tools/clang-tidy/test/bugprone-macro-parentheses.json
@@ -1,1 +1,1 @@
-[["warning", "macro replacement list should be enclosed in parentheses", "bugprone-macro-parentheses"], ["warning", "macro replacement list should be enclosed in parentheses", "bugprone-macro-parentheses"], ["warning", "macro argument should be enclosed in parentheses", "bugprone-macro-parentheses"], ["warning", "macro argument should be enclosed in parentheses", "bugprone-macro-parentheses"], ["warning", "macro argument should be enclosed in parentheses", "bugprone-macro-parentheses"]]
\ No newline at end of file
+[["warning", "macro replacement list should be enclosed in parentheses", "bugprone-macro-parentheses"], ["warning", "macro replacement list should be enclosed in parentheses", "bugprone-macro-parentheses"], ["warning", "macro argument should be enclosed in parentheses", "bugprone-macro-parentheses"], ["warning", "macro argument should be enclosed in parentheses", "bugprone-macro-parentheses"], ["warning", "macro argument should be enclosed in parentheses", "bugprone-macro-parentheses"], {"reliability": "medium"}]
\ No newline at end of file
--- a/tools/clang-tidy/test/bugprone-macro-repeated-side-effects.json
+++ b/tools/clang-tidy/test/bugprone-macro-repeated-side-effects.json
@@ -1,1 +1,1 @@
-[["warning", "side effects in the 1st macro argument 'x' are repeated in macro expansion", "bugprone-macro-repeated-side-effects"]]
\ No newline at end of file
+[["warning", "side effects in the 1st macro argument 'x' are repeated in macro expansion", "bugprone-macro-repeated-side-effects"], {"reliability": "high"}]
\ No newline at end of file
--- a/tools/clang-tidy/test/bugprone-misplaced-widening-cast.json
+++ b/tools/clang-tidy/test/bugprone-misplaced-widening-cast.json
@@ -1,1 +1,1 @@
-[["warning", "either cast from 'int' to 'long' is ineffective, or there is loss of precision before the conversion", "bugprone-misplaced-widening-cast"]]
\ No newline at end of file
+[["warning", "either cast from 'int' to 'long' is ineffective, or there is loss of precision before the conversion", "bugprone-misplaced-widening-cast"], {"reliability": "high"}]
\ No newline at end of file
--- a/tools/clang-tidy/test/bugprone-sizeof-expression.json
+++ b/tools/clang-tidy/test/bugprone-sizeof-expression.json
@@ -1,1 +1,1 @@
-[["warning", "suspicious usage of 'sizeof(this)'; did you mean 'sizeof(*this)'", "bugprone-sizeof-expression"]]
\ No newline at end of file
+[["warning", "suspicious usage of 'sizeof(this)'; did you mean 'sizeof(*this)'", "bugprone-sizeof-expression"], {"reliability": "high"}]
\ No newline at end of file
--- a/tools/clang-tidy/test/bugprone-string-constructor.json
+++ b/tools/clang-tidy/test/bugprone-string-constructor.json
@@ -1,1 +1,1 @@
-[["warning", "string constructor parameters are probably swapped; expecting string(count, character)", "bugprone-string-constructor"], ["warning", "length is bigger then string literal size", "bugprone-string-constructor"], ["warning", "constructor creating an empty string", "bugprone-string-constructor"]]
\ No newline at end of file
+[["warning", "string constructor parameters are probably swapped; expecting string(count, character)", "bugprone-string-constructor"], ["warning", "length is bigger then string literal size", "bugprone-string-constructor"], ["warning", "constructor creating an empty string", "bugprone-string-constructor"], {"reliability": "high"}]
\ No newline at end of file
--- a/tools/clang-tidy/test/bugprone-string-integer-assignment.json
+++ b/tools/clang-tidy/test/bugprone-string-integer-assignment.json
@@ -1,1 +1,1 @@
-[["warning", "an integer is interpreted as a character code when assigning it to a string; if this is intended, cast the integer to the appropriate character type; if you want a string representation, use the appropriate conversion facility", "bugprone-string-integer-assignment"], ["warning", "an integer is interpreted as a character code when assigning it to a string; if this is intended, cast the integer to the appropriate character type; if you want a string representation, use the appropriate conversion facility", "bugprone-string-integer-assignment"]]
\ No newline at end of file
+[["warning", "an integer is interpreted as a character code when assigning it to a string; if this is intended, cast the integer to the appropriate character type; if you want a string representation, use the appropriate conversion facility", "bugprone-string-integer-assignment"], ["warning", "an integer is interpreted as a character code when assigning it to a string; if this is intended, cast the integer to the appropriate character type; if you want a string representation, use the appropriate conversion facility", "bugprone-string-integer-assignment"], {"reliability": "high"}]
\ No newline at end of file
--- a/tools/clang-tidy/test/bugprone-suspicious-memset-usage.json
+++ b/tools/clang-tidy/test/bugprone-suspicious-memset-usage.json
@@ -1,1 +1,1 @@
-[["warning", "memset fill value is char '0', potentially mistaken for int 0", "bugprone-suspicious-memset-usage"], ["warning", "memset fill value is out of unsigned character range, gets truncated", "bugprone-suspicious-memset-usage"], ["warning", "memset of size zero, potentially swapped arguments", "bugprone-suspicious-memset-usage"]]
\ No newline at end of file
+[["warning", "memset fill value is char '0', potentially mistaken for int 0", "bugprone-suspicious-memset-usage"], ["warning", "memset fill value is out of unsigned character range, gets truncated", "bugprone-suspicious-memset-usage"], ["warning", "memset of size zero, potentially swapped arguments", "bugprone-suspicious-memset-usage"], {"reliability": "high"}]
\ No newline at end of file
--- a/tools/clang-tidy/test/bugprone-suspicious-missing-comma.json
+++ b/tools/clang-tidy/test/bugprone-suspicious-missing-comma.json
@@ -1,1 +1,1 @@
-[["warning", "suspicious string literal, probably missing a comma", "bugprone-suspicious-missing-comma"]]
\ No newline at end of file
+[["warning", "suspicious string literal, probably missing a comma", "bugprone-suspicious-missing-comma"], {"reliability": "high"}]
\ No newline at end of file
--- a/tools/clang-tidy/test/bugprone-suspicious-semicolon.json
+++ b/tools/clang-tidy/test/bugprone-suspicious-semicolon.json
@@ -1,1 +1,1 @@
-[["warning", "potentially unintended semicolon", "bugprone-suspicious-semicolon"]]
\ No newline at end of file
+[["warning", "potentially unintended semicolon", "bugprone-suspicious-semicolon"], {"reliability": "high"}]
\ No newline at end of file
--- a/tools/clang-tidy/test/bugprone-suspicious-string-compare.json
+++ b/tools/clang-tidy/test/bugprone-suspicious-string-compare.json
@@ -1,1 +1,1 @@
-[["warning", "function 'strcmp' is called without explicitly comparing result", "bugprone-suspicious-string-compare"]]
\ No newline at end of file
+[["warning", "function 'strcmp' is called without explicitly comparing result", "bugprone-suspicious-string-compare"], {"reliability": "high"}]
\ No newline at end of file
--- a/tools/clang-tidy/test/bugprone-swapped-arguments.json
+++ b/tools/clang-tidy/test/bugprone-swapped-arguments.json
@@ -1,1 +1,1 @@
-[["warning", "argument with implicit conversion from 'double' to 'int' followed by argument converted from 'int' to 'double', potentially swapped arguments.", "bugprone-swapped-arguments"], ["warning", "argument with implicit conversion from 'int' to 'double' followed by argument converted from 'double' to 'int', potentially swapped arguments.", "bugprone-swapped-arguments"], ["warning", "argument with implicit conversion from 'int' to 'double' followed by argument converted from 'double' to 'int', potentially swapped arguments.", "bugprone-swapped-arguments"], ["warning", "argument with implicit conversion from 'double' to 'int' followed by argument converted from 'int' to 'double', potentially swapped arguments.", "bugprone-swapped-arguments"]]
\ No newline at end of file
+[["warning", "argument with implicit conversion from 'double' to 'int' followed by argument converted from 'int' to 'double', potentially swapped arguments.", "bugprone-swapped-arguments"], ["warning", "argument with implicit conversion from 'int' to 'double' followed by argument converted from 'double' to 'int', potentially swapped arguments.", "bugprone-swapped-arguments"], ["warning", "argument with implicit conversion from 'int' to 'double' followed by argument converted from 'double' to 'int', potentially swapped arguments.", "bugprone-swapped-arguments"], ["warning", "argument with implicit conversion from 'double' to 'int' followed by argument converted from 'int' to 'double', potentially swapped arguments.", "bugprone-swapped-arguments"], {"reliability": "high"}]
\ No newline at end of file
--- a/tools/clang-tidy/test/bugprone-unused-raii.json
+++ b/tools/clang-tidy/test/bugprone-unused-raii.json
@@ -1,1 +1,1 @@
-[["warning", "object destroyed immediately after creation; did you mean to name the object?", "bugprone-unused-raii"]]
\ No newline at end of file
+[["warning", "object destroyed immediately after creation; did you mean to name the object?", "bugprone-unused-raii"], {"reliability": "high"}]
\ No newline at end of file
--- a/tools/clang-tidy/test/bugprone-use-after-move.json
+++ b/tools/clang-tidy/test/bugprone-use-after-move.json
@@ -1,1 +1,1 @@
-[["warning", "'ptr' used after it was moved", "bugprone-use-after-move"]]
\ No newline at end of file
+[["warning", "'ptr' used after it was moved", "bugprone-use-after-move"], {"reliability": "high"}]
\ No newline at end of file
--- a/tools/clang-tidy/test/clang-analyzer-core.CallAndMessage.json
+++ b/tools/clang-tidy/test/clang-analyzer-core.CallAndMessage.json
@@ -1,1 +1,1 @@
-[["warning", "Passed-by-value struct argument contains uninitialized data (e.g., field: 'x')", "clang-analyzer-core.CallAndMessage"]]
\ No newline at end of file
+[["warning", "Passed-by-value struct argument contains uninitialized data (e.g., field: 'x')", "clang-analyzer-core.CallAndMessage"], {"reliability": "medium"}]
\ No newline at end of file
--- a/tools/clang-tidy/test/clang-analyzer-core.DivideZero.json
+++ b/tools/clang-tidy/test/clang-analyzer-core.DivideZero.json
@@ -1,1 +1,1 @@
-[["warning", "Division by zero", "clang-analyzer-core.DivideZero"]]
\ No newline at end of file
+[["warning", "Division by zero", "clang-analyzer-core.DivideZero"], {"reliability": "high"}]
\ No newline at end of file
--- a/tools/clang-tidy/test/clang-analyzer-core.NonNullParamChecker.json
+++ b/tools/clang-tidy/test/clang-analyzer-core.NonNullParamChecker.json
@@ -1,1 +1,1 @@
-[["warning", "Null pointer passed as an argument to a 'nonnull' parameter", "clang-analyzer-core.NonNullParamChecker"]]
\ No newline at end of file
+[["warning", "Null pointer passed as an argument to a 'nonnull' parameter", "clang-analyzer-core.NonNullParamChecker"], {"reliability": "high"}]
\ No newline at end of file
--- a/tools/clang-tidy/test/clang-analyzer-core.NullDereference.json
+++ b/tools/clang-tidy/test/clang-analyzer-core.NullDereference.json
@@ -1,1 +1,1 @@
-[["warning", "Access to field 'x' results in a dereference of a null pointer (loaded from variable 'pc')", "clang-analyzer-core.NullDereference"]]
\ No newline at end of file
+[["warning", "Access to field 'x' results in a dereference of a null pointer (loaded from variable 'pc')", "clang-analyzer-core.NullDereference"], {"reliability": "medium"}]
\ No newline at end of file
--- a/tools/clang-tidy/test/clang-analyzer-core.UndefinedBinaryOperatorResult.json
+++ b/tools/clang-tidy/test/clang-analyzer-core.UndefinedBinaryOperatorResult.json
@@ -1,1 +1,1 @@
-[["warning", "The left operand of '+' is a garbage value", "clang-analyzer-core.UndefinedBinaryOperatorResult"]]
\ No newline at end of file
+[["warning", "The left operand of '+' is a garbage value", "clang-analyzer-core.UndefinedBinaryOperatorResult"], {"reliability": "medium"}]
\ No newline at end of file
--- a/tools/clang-tidy/test/clang-analyzer-core.uninitialized.Assign.json
+++ b/tools/clang-tidy/test/clang-analyzer-core.uninitialized.Assign.json
@@ -1,1 +1,1 @@
-[["warning", "The left expression of the compound assignment is an uninitialized value. The computed value will also be garbage", "clang-analyzer-core.uninitialized.Assign"]]
\ No newline at end of file
+[["warning", "The left expression of the compound assignment is an uninitialized value. The computed value will also be garbage", "clang-analyzer-core.uninitialized.Assign"], {"reliability": "medium"}]
\ No newline at end of file
--- a/tools/clang-tidy/test/clang-analyzer-core.uninitialized.Branch.json
+++ b/tools/clang-tidy/test/clang-analyzer-core.uninitialized.Branch.json
@@ -1,1 +1,1 @@
-[["warning", "Branch condition evaluates to a garbage value", "clang-analyzer-core.uninitialized.Branch"]]
\ No newline at end of file
+[["warning", "Branch condition evaluates to a garbage value", "clang-analyzer-core.uninitialized.Branch"], {"reliability": "medium"}]
\ No newline at end of file
--- a/tools/clang-tidy/test/clang-analyzer-cplusplus.NewDelete.json
+++ b/tools/clang-tidy/test/clang-analyzer-cplusplus.NewDelete.json
@@ -1,1 +1,1 @@
-[["warning", "Use of memory after it is freed", "clang-analyzer-cplusplus.NewDelete"], ["warning", "Use of memory after it is freed", "clang-analyzer-cplusplus.NewDelete"], ["warning", "Attempt to free released memory", "clang-analyzer-cplusplus.NewDelete"], ["warning", "Argument to 'delete' is the address of the local variable 'i', which is not memory allocated by 'new'", "clang-analyzer-cplusplus.NewDelete"]]
\ No newline at end of file
+[["warning", "Use of memory after it is freed", "clang-analyzer-cplusplus.NewDelete"], ["warning", "Use of memory after it is freed", "clang-analyzer-cplusplus.NewDelete"], ["warning", "Attempt to free released memory", "clang-analyzer-cplusplus.NewDelete"], ["warning", "Argument to 'delete' is the address of the local variable 'i', which is not memory allocated by 'new'", "clang-analyzer-cplusplus.NewDelete"], {"reliability": "medium"}]
\ No newline at end of file
--- a/tools/clang-tidy/test/clang-analyzer-cplusplus.NewDeleteLeaks.json
+++ b/tools/clang-tidy/test/clang-analyzer-cplusplus.NewDeleteLeaks.json
@@ -1,1 +1,1 @@
-[["warning", "Potential leak of memory pointed to by 'p'", "clang-analyzer-cplusplus.NewDeleteLeaks"]]
\ No newline at end of file
+[["warning", "Potential leak of memory pointed to by 'p'", "clang-analyzer-cplusplus.NewDeleteLeaks"], {"reliability": "medium"}]
\ No newline at end of file
--- a/tools/clang-tidy/test/clang-analyzer-deadcode.DeadStores.json
+++ b/tools/clang-tidy/test/clang-analyzer-deadcode.DeadStores.json
@@ -1,1 +1,1 @@
-[["warning", "Value stored to 'x' is never read", "clang-analyzer-deadcode.DeadStores"]]
\ No newline at end of file
+[["warning", "Value stored to 'x' is never read", "clang-analyzer-deadcode.DeadStores"], {"reliability": "high"}]
\ No newline at end of file
--- a/tools/clang-tidy/test/clang-analyzer-security.FloatLoopCounter.json
+++ b/tools/clang-tidy/test/clang-analyzer-security.FloatLoopCounter.json
@@ -1,1 +1,1 @@
-[["warning", "Variable 'x' with floating point type 'float' should not be used as a loop counter", "clang-analyzer-security.FloatLoopCounter"]]
\ No newline at end of file
+[["warning", "Variable 'x' with floating point type 'float' should not be used as a loop counter", "clang-analyzer-security.FloatLoopCounter"], {"reliability": "high"}]
\ No newline at end of file
--- a/tools/clang-tidy/test/clang-analyzer-security.insecureAPI.UncheckedReturn.json
+++ b/tools/clang-tidy/test/clang-analyzer-security.insecureAPI.UncheckedReturn.json
@@ -1,1 +1,1 @@
-[["warning", "The return value from the call to 'setuid' is not checked.  If an error occurs in 'setuid', the following code may execute with unexpected privileges", "clang-analyzer-security.insecureAPI.UncheckedReturn"]]
\ No newline at end of file
+[["warning", "The return value from the call to 'setuid' is not checked.  If an error occurs in 'setuid', the following code may execute with unexpected privileges", "clang-analyzer-security.insecureAPI.UncheckedReturn"], {"reliability": "low"}]
\ No newline at end of file
--- a/tools/clang-tidy/test/clang-analyzer-security.insecureAPI.bcmp.json
+++ b/tools/clang-tidy/test/clang-analyzer-security.insecureAPI.bcmp.json
@@ -1,1 +1,1 @@
-[["warning", "The bcmp() function is obsoleted by memcmp()", "clang-analyzer-security.insecureAPI.bcmp"]]
\ No newline at end of file
+[["warning", "The bcmp() function is obsoleted by memcmp()", "clang-analyzer-security.insecureAPI.bcmp"], {"reliability": "high"}]
\ No newline at end of file
--- a/tools/clang-tidy/test/clang-analyzer-security.insecureAPI.bcopy.json
+++ b/tools/clang-tidy/test/clang-analyzer-security.insecureAPI.bcopy.json
@@ -1,1 +1,1 @@
-[["warning", "The bcopy() function is obsoleted by memcpy() or memmove()", "clang-analyzer-security.insecureAPI.bcopy"]]
\ No newline at end of file
+[["warning", "The bcopy() function is obsoleted by memcpy() or memmove()", "clang-analyzer-security.insecureAPI.bcopy"], {"reliability": "high"}]
\ No newline at end of file
--- a/tools/clang-tidy/test/clang-analyzer-security.insecureAPI.bzero.json
+++ b/tools/clang-tidy/test/clang-analyzer-security.insecureAPI.bzero.json
@@ -1,1 +1,1 @@
-[["warning", "The bzero() function is obsoleted by memset()", "clang-analyzer-security.insecureAPI.bzero"]]
\ No newline at end of file
+[["warning", "The bzero() function is obsoleted by memset()", "clang-analyzer-security.insecureAPI.bzero"], {"reliability": "high"}]
\ No newline at end of file
--- a/tools/clang-tidy/test/clang-analyzer-security.insecureAPI.getpw.json
+++ b/tools/clang-tidy/test/clang-analyzer-security.insecureAPI.getpw.json
@@ -1,1 +1,1 @@
-[["warning", "The getpw() function is dangerous as it may overflow the provided buffer. It is obsoleted by getpwuid()", "clang-analyzer-security.insecureAPI.getpw"]]
\ No newline at end of file
+[["warning", "The getpw() function is dangerous as it may overflow the provided buffer. It is obsoleted by getpwuid()", "clang-analyzer-security.insecureAPI.getpw"], {"reliability": "high"}]
\ No newline at end of file
--- a/tools/clang-tidy/test/clang-analyzer-security.insecureAPI.mkstemp.json
+++ b/tools/clang-tidy/test/clang-analyzer-security.insecureAPI.mkstemp.json
@@ -1,1 +1,1 @@
-[["warning", "Call to 'mkstemp' should have at least 6 'X's in the format string to be secure (2 'X's seen)", "clang-analyzer-security.insecureAPI.mkstemp"]]
\ No newline at end of file
+[["warning", "Call to 'mkstemp' should have at least 6 'X's in the format string to be secure (2 'X's seen)", "clang-analyzer-security.insecureAPI.mkstemp"], {"reliability": "high"}]
\ No newline at end of file
--- a/tools/clang-tidy/test/clang-analyzer-security.insecureAPI.mktemp.json
+++ b/tools/clang-tidy/test/clang-analyzer-security.insecureAPI.mktemp.json
@@ -1,1 +1,1 @@
-[["warning", "Call to function 'mktemp' is insecure as it always creates or uses insecure temporary file.  Use 'mkstemp' instead", "clang-analyzer-security.insecureAPI.mktemp"]]
\ No newline at end of file
+[["warning", "Call to function 'mktemp' is insecure as it always creates or uses insecure temporary file.  Use 'mkstemp' instead", "clang-analyzer-security.insecureAPI.mktemp"], {"reliability": "high"}]
\ No newline at end of file
--- a/tools/clang-tidy/test/clang-analyzer-security.insecureAPI.vfork.json
+++ b/tools/clang-tidy/test/clang-analyzer-security.insecureAPI.vfork.json
@@ -1,1 +1,1 @@
-[["warning", "Call to function 'vfork' is insecure as it can lead to denial of service situations in the parent process. Replace calls to vfork with calls to the safer 'posix_spawn' function", "clang-analyzer-security.insecureAPI.vfork"]]
\ No newline at end of file
+[["warning", "Call to function 'vfork' is insecure as it can lead to denial of service situations in the parent process. Replace calls to vfork with calls to the safer 'posix_spawn' function", "clang-analyzer-security.insecureAPI.vfork"], {"reliability": "medium"}]
\ No newline at end of file
--- a/tools/clang-tidy/test/clang-analyzer-unix.Malloc.json
+++ b/tools/clang-tidy/test/clang-analyzer-unix.Malloc.json
@@ -1,1 +1,1 @@
-[["warning", "Attempt to free released memory", "clang-analyzer-unix.Malloc"], ["warning", "Use of memory after it is freed", "clang-analyzer-unix.Malloc"], ["warning", "Potential leak of memory pointed to by 'p'", "clang-analyzer-unix.Malloc"], ["warning", "Argument to free() is the address of the local variable 'a', which is not memory allocated by malloc()", "clang-analyzer-unix.Malloc"], ["warning", "Argument to free() is offset by -4 bytes from the start of memory allocated by malloc()", "clang-analyzer-unix.Malloc"]]
\ No newline at end of file
+[["warning", "Attempt to free released memory", "clang-analyzer-unix.Malloc"], ["warning", "Use of memory after it is freed", "clang-analyzer-unix.Malloc"], ["warning", "Potential leak of memory pointed to by 'p'", "clang-analyzer-unix.Malloc"], ["warning", "Argument to free() is the address of the local variable 'a', which is not memory allocated by malloc()", "clang-analyzer-unix.Malloc"], ["warning", "Argument to free() is offset by -4 bytes from the start of memory allocated by malloc()", "clang-analyzer-unix.Malloc"], {"reliability": "high"}]
\ No newline at end of file
--- a/tools/clang-tidy/test/clang-analyzer-unix.cstring.BadSizeArg.json
+++ b/tools/clang-tidy/test/clang-analyzer-unix.cstring.BadSizeArg.json
@@ -1,1 +1,1 @@
-[["warning", "Potential buffer overflow. Replace with 'sizeof(dest) - strlen(dest) - 1' or use a safer 'strlcat' API", "clang-analyzer-unix.cstring.BadSizeArg"]]
\ No newline at end of file
+[["warning", "Potential buffer overflow. Replace with 'sizeof(dest) - strlen(dest) - 1' or use a safer 'strlcat' API", "clang-analyzer-unix.cstring.BadSizeArg"], {"reliability": "high"}]
\ No newline at end of file
--- a/tools/clang-tidy/test/clang-analyzer-unix.cstring.NullArg.json
+++ b/tools/clang-tidy/test/clang-analyzer-unix.cstring.NullArg.json
@@ -1,1 +1,1 @@
-[["warning", "Null pointer argument in call to string length function", "clang-analyzer-unix.cstring.NullArg"]]
\ No newline at end of file
+[["warning", "Null pointer argument in call to string length function", "clang-analyzer-unix.cstring.NullArg"], {"reliability": "high"}]
\ No newline at end of file
--- a/tools/clang-tidy/test/misc-non-copyable-objects.json
+++ b/tools/clang-tidy/test/misc-non-copyable-objects.json
@@ -1,1 +1,1 @@
-[["warning", "'f' declared as type 'FILE', which is unsafe to copy; did you mean 'FILE *'?", "misc-non-copyable-objects"]]
\ No newline at end of file
+[["warning", "'f' declared as type 'FILE', which is unsafe to copy; did you mean 'FILE *'?", "misc-non-copyable-objects"], {"reliability": "high"}]
\ No newline at end of file
--- a/tools/clang-tidy/test/misc-redundant-expression.json
+++ b/tools/clang-tidy/test/misc-redundant-expression.json
@@ -1,1 +1,1 @@
-[["warning", "both sides of operator are equivalent", "misc-redundant-expression"]]
\ No newline at end of file
+[["warning", "both sides of operator are equivalent", "misc-redundant-expression"], {"reliability": "medium"}]
\ No newline at end of file
--- a/tools/clang-tidy/test/misc-unused-alias-decls.json
+++ b/tools/clang-tidy/test/misc-unused-alias-decls.json
@@ -1,1 +1,1 @@
-[["warning", "namespace alias decl 'n1_unused' is unused", "misc-unused-alias-decls"], ["warning", "namespace alias decl 'n12_unused' is unused", "misc-unused-alias-decls"]]
\ No newline at end of file
+[["warning", "namespace alias decl 'n1_unused' is unused", "misc-unused-alias-decls"], ["warning", "namespace alias decl 'n12_unused' is unused", "misc-unused-alias-decls"], {"reliability": "high"}]
\ No newline at end of file
--- a/tools/clang-tidy/test/misc-unused-using-decls.json
+++ b/tools/clang-tidy/test/misc-unused-using-decls.json
@@ -1,1 +1,1 @@
-[["warning", "using decl 'C' is unused", "misc-unused-using-decls"]]
\ No newline at end of file
+[["warning", "using decl 'C' is unused", "misc-unused-using-decls"], {"reliability": "high"}]
\ No newline at end of file
--- a/tools/clang-tidy/test/modernize-loop-convert.json
+++ b/tools/clang-tidy/test/modernize-loop-convert.json
@@ -1,1 +1,1 @@
-[["warning", "use range-based for loop instead", "modernize-loop-convert"]]
\ No newline at end of file
+[["warning", "use range-based for loop instead", "modernize-loop-convert"], {"reliability": "high"}]
\ No newline at end of file
--- a/tools/clang-tidy/test/modernize-raw-string-literal.json
+++ b/tools/clang-tidy/test/modernize-raw-string-literal.json
@@ -1,1 +1,1 @@
-[["warning", "escaped string literal can be written as a raw string literal", "modernize-raw-string-literal"]]
\ No newline at end of file
+[["warning", "escaped string literal can be written as a raw string literal", "modernize-raw-string-literal"], {"reliability": "high"}]
\ No newline at end of file
--- a/tools/clang-tidy/test/modernize-shrink-to-fit.json
+++ b/tools/clang-tidy/test/modernize-shrink-to-fit.json
@@ -1,1 +1,1 @@
-[["warning", "the shrink_to_fit method should be used to reduce the capacity of a shrinkable container", "modernize-shrink-to-fit"], ["warning", "the shrink_to_fit method should be used to reduce the capacity of a shrinkable container", "modernize-shrink-to-fit"]]
\ No newline at end of file
+[["warning", "the shrink_to_fit method should be used to reduce the capacity of a shrinkable container", "modernize-shrink-to-fit"], ["warning", "the shrink_to_fit method should be used to reduce the capacity of a shrinkable container", "modernize-shrink-to-fit"], {"reliability": "high"}]
\ No newline at end of file
--- a/tools/clang-tidy/test/modernize-use-bool-literals.json
+++ b/tools/clang-tidy/test/modernize-use-bool-literals.json
@@ -1,1 +1,1 @@
-[["warning", "converting integer literal to bool, use bool literal instead", "modernize-use-bool-literals"], ["warning", "converting integer literal to bool, use bool literal instead", "modernize-use-bool-literals"], ["warning", "converting integer literal to bool, use bool literal instead", "modernize-use-bool-literals"], ["warning", "converting integer literal to bool, use bool literal instead", "modernize-use-bool-literals"]]
\ No newline at end of file
+[["warning", "converting integer literal to bool, use bool literal instead", "modernize-use-bool-literals"], ["warning", "converting integer literal to bool, use bool literal instead", "modernize-use-bool-literals"], ["warning", "converting integer literal to bool, use bool literal instead", "modernize-use-bool-literals"], ["warning", "converting integer literal to bool, use bool literal instead", "modernize-use-bool-literals"], {"reliability": "high"}]
\ No newline at end of file
--- a/tools/clang-tidy/test/modernize-use-equals-default.json
+++ b/tools/clang-tidy/test/modernize-use-equals-default.json
@@ -1,1 +1,1 @@
-[["warning", "use '= default' to define a trivial default constructor", "modernize-use-equals-default"], ["warning", "use '= default' to define a trivial destructor", "modernize-use-equals-default"]]
\ No newline at end of file
+[["warning", "use '= default' to define a trivial default constructor", "modernize-use-equals-default"], ["warning", "use '= default' to define a trivial destructor", "modernize-use-equals-default"], {"reliability": "high"}]
\ No newline at end of file
--- a/tools/clang-tidy/test/modernize-use-equals-delete.json
+++ b/tools/clang-tidy/test/modernize-use-equals-delete.json
@@ -1,1 +1,1 @@
-[["warning", "use '= delete' to prohibit calling of a special member function", "modernize-use-equals-delete"], ["warning", "use '= delete' to prohibit calling of a special member function", "modernize-use-equals-delete"], ["warning", "use '= delete' to prohibit calling of a special member function", "modernize-use-equals-delete"], ["warning", "use '= delete' to prohibit calling of a special member function", "modernize-use-equals-delete"]]
\ No newline at end of file
+[["warning", "use '= delete' to prohibit calling of a special member function", "modernize-use-equals-delete"], ["warning", "use '= delete' to prohibit calling of a special member function", "modernize-use-equals-delete"], ["warning", "use '= delete' to prohibit calling of a special member function", "modernize-use-equals-delete"], ["warning", "use '= delete' to prohibit calling of a special member function", "modernize-use-equals-delete"], {"reliability": "high"}]
\ No newline at end of file
--- a/tools/clang-tidy/test/modernize-use-nullptr.json
+++ b/tools/clang-tidy/test/modernize-use-nullptr.json
@@ -1,1 +1,1 @@
-[["warning", "use nullptr", "modernize-use-nullptr"]]
\ No newline at end of file
+[["warning", "use nullptr", "modernize-use-nullptr"], {"reliability": "high"}]
\ No newline at end of file
--- a/tools/clang-tidy/test/performance-faster-string-find.json
+++ b/tools/clang-tidy/test/performance-faster-string-find.json
@@ -1,1 +1,1 @@
-[["warning", "'find' called with a string literal consisting of a single character; consider using the more effective overload accepting a character", "performance-faster-string-find"]]
\ No newline at end of file
+[["warning", "'find' called with a string literal consisting of a single character; consider using the more effective overload accepting a character", "performance-faster-string-find"], {"reliability": "high"}]
\ No newline at end of file
--- a/tools/clang-tidy/test/performance-for-range-copy.json
+++ b/tools/clang-tidy/test/performance-for-range-copy.json
@@ -1,1 +1,1 @@
-[["warning", "the loop variable's type is not a reference type; this creates a copy in each iteration; consider making this a reference", "performance-for-range-copy"]]
\ No newline at end of file
+[["warning", "the loop variable's type is not a reference type; this creates a copy in each iteration; consider making this a reference", "performance-for-range-copy"], {"reliability": "high"}]
\ No newline at end of file
--- a/tools/clang-tidy/test/performance-implicit-conversion-in-loop.json
+++ b/tools/clang-tidy/test/performance-implicit-conversion-in-loop.json
@@ -1,1 +1,1 @@
-[["warning", "the type of the loop variable 'foo' is different from the one returned by the iterator and generates an implicit conversion; you can either change the type to the matching one ('const SimpleClass &' but 'const auto&' is always a valid option) or remove the reference to make it explicit that you are creating a new value", "performance-implicit-conversion-in-loop"]]
\ No newline at end of file
+[["warning", "the type of the loop variable 'foo' is different from the one returned by the iterator and generates an implicit conversion; you can either change the type to the matching one ('const SimpleClass &' but 'const auto&' is always a valid option) or remove the reference to make it explicit that you are creating a new value", "performance-implicit-conversion-in-loop"], {"reliability": "high"}]
\ No newline at end of file
--- a/tools/clang-tidy/test/performance-inefficient-algorithm.json
+++ b/tools/clang-tidy/test/performance-inefficient-algorithm.json
@@ -1,1 +1,1 @@
-[["warning", "this STL algorithm call should be replaced with a container method", "performance-inefficient-algorithm"]]
\ No newline at end of file
+[["warning", "this STL algorithm call should be replaced with a container method", "performance-inefficient-algorithm"], {"reliability": "high"}]
\ No newline at end of file
--- a/tools/clang-tidy/test/performance-inefficient-string-concatenation.json
+++ b/tools/clang-tidy/test/performance-inefficient-string-concatenation.json
@@ -1,1 +1,1 @@
-[["warning", "string concatenation results in allocation of unnecessary temporary strings; consider using 'operator+=' or 'string::append()' instead", "performance-inefficient-string-concatenation"]]
\ No newline at end of file
+[["warning", "string concatenation results in allocation of unnecessary temporary strings; consider using 'operator+=' or 'string::append()' instead", "performance-inefficient-string-concatenation"], {"reliability": "high"}]
\ No newline at end of file
--- a/tools/clang-tidy/test/performance-inefficient-vector-operation.json
+++ b/tools/clang-tidy/test/performance-inefficient-vector-operation.json
@@ -1,1 +1,1 @@
-[["warning", "'push_back' is called inside a loop; consider pre-allocating the vector capacity before the loop", "performance-inefficient-vector-operation"]]
\ No newline at end of file
+[["warning", "'push_back' is called inside a loop; consider pre-allocating the vector capacity before the loop", "performance-inefficient-vector-operation"], {"reliability": "high"}]
\ No newline at end of file
--- a/tools/clang-tidy/test/performance-move-const-arg.json
+++ b/tools/clang-tidy/test/performance-move-const-arg.json
@@ -1,1 +1,1 @@
-[["warning", "std::move of the variable 'obj' of the trivially-copyable type 'TriviallyCopyable' has no effect; remove std::move()", "performance-move-const-arg"]]
\ No newline at end of file
+[["warning", "std::move of the variable 'obj' of the trivially-copyable type 'TriviallyCopyable' has no effect; remove std::move()", "performance-move-const-arg"], {"reliability": "high"}]
\ No newline at end of file
--- a/tools/clang-tidy/test/performance-move-constructor-init.json
+++ b/tools/clang-tidy/test/performance-move-constructor-init.json
@@ -1,1 +1,1 @@
-[["warning", "move constructor initializes base class by calling a copy constructor", "performance-move-constructor-init"]]
\ No newline at end of file
+[["warning", "move constructor initializes base class by calling a copy constructor", "performance-move-constructor-init"], {"reliability": "high"}]
\ No newline at end of file
--- a/tools/clang-tidy/test/performance-noexcept-move-constructor.json
+++ b/tools/clang-tidy/test/performance-noexcept-move-constructor.json
@@ -1,1 +1,1 @@
-[["warning", "move constructors should be marked noexcept", "performance-noexcept-move-constructor"], ["warning", "move assignment operators should be marked noexcept", "performance-noexcept-move-constructor"]]
\ No newline at end of file
+[["warning", "move constructors should be marked noexcept", "performance-noexcept-move-constructor"], ["warning", "move assignment operators should be marked noexcept", "performance-noexcept-move-constructor"], {"reliability": "high"}]
\ No newline at end of file
--- a/tools/clang-tidy/test/performance-type-promotion-in-math-fn.json
+++ b/tools/clang-tidy/test/performance-type-promotion-in-math-fn.json
@@ -1,1 +1,1 @@
-[["warning", "call to 'acos' promotes float to double", "performance-type-promotion-in-math-fn"]]
\ No newline at end of file
+[["warning", "call to 'acos' promotes float to double", "performance-type-promotion-in-math-fn"], {"reliability": "high"}]
\ No newline at end of file
--- a/tools/clang-tidy/test/performance-unnecessary-copy-initialization.json
+++ b/tools/clang-tidy/test/performance-unnecessary-copy-initialization.json
@@ -1,1 +1,1 @@
-[["warning", "the const qualified variable 'UnnecessaryCopy' is copy-constructed from a const reference; consider making it a const reference", "performance-unnecessary-copy-initialization"]]
\ No newline at end of file
+[["warning", "the const qualified variable 'UnnecessaryCopy' is copy-constructed from a const reference; consider making it a const reference", "performance-unnecessary-copy-initialization"], {"reliability": "high"}]
\ No newline at end of file
--- a/tools/clang-tidy/test/performance-unnecessary-value-param.json
+++ b/tools/clang-tidy/test/performance-unnecessary-value-param.json
@@ -1,1 +1,1 @@
-[["warning", "the const qualified parameter 'Value' is copied for each invocation; consider making it a reference", "performance-unnecessary-value-param"]]
\ No newline at end of file
+[["warning", "the const qualified parameter 'Value' is copied for each invocation; consider making it a reference", "performance-unnecessary-value-param"], {"reliability": "high"}]
\ No newline at end of file
--- a/tools/clang-tidy/test/readability-braces-around-statements.json
+++ b/tools/clang-tidy/test/readability-braces-around-statements.json
@@ -1,1 +1,1 @@
-[["warning", "statement should be inside braces", "readability-braces-around-statements"], ["warning", "statement should be inside braces", "readability-braces-around-statements"], ["warning", "statement should be inside braces", "readability-braces-around-statements"], ["warning", "statement should be inside braces", "readability-braces-around-statements"], ["warning", "statement should be inside braces", "readability-braces-around-statements"], ["warning", "statement should be inside braces", "readability-braces-around-statements"]]
\ No newline at end of file
+[["warning", "statement should be inside braces", "readability-braces-around-statements"], ["warning", "statement should be inside braces", "readability-braces-around-statements"], ["warning", "statement should be inside braces", "readability-braces-around-statements"], ["warning", "statement should be inside braces", "readability-braces-around-statements"], ["warning", "statement should be inside braces", "readability-braces-around-statements"], ["warning", "statement should be inside braces", "readability-braces-around-statements"], {"reliability": "high"}]
\ No newline at end of file
--- a/tools/clang-tidy/test/readability-container-size-empty.json
+++ b/tools/clang-tidy/test/readability-container-size-empty.json
@@ -1,1 +1,1 @@
-[["warning", "the 'empty' method should be used to check for emptiness instead of 'size'", "readability-container-size-empty"]]
\ No newline at end of file
+[["warning", "the 'empty' method should be used to check for emptiness instead of 'size'", "readability-container-size-empty"], {"reliability": "high"}]
\ No newline at end of file
--- a/tools/clang-tidy/test/readability-delete-null-pointer.json
+++ b/tools/clang-tidy/test/readability-delete-null-pointer.json
@@ -1,1 +1,1 @@
-[["warning", "'if' statement is unnecessary; deleting null pointer has no effect", "readability-delete-null-pointer"]]
\ No newline at end of file
+[["warning", "'if' statement is unnecessary; deleting null pointer has no effect", "readability-delete-null-pointer"], {"reliability": "high"}]
\ No newline at end of file
--- a/tools/clang-tidy/test/readability-else-after-return.json
+++ b/tools/clang-tidy/test/readability-else-after-return.json
@@ -1,1 +1,1 @@
-[["warning", "do not use 'else' after 'return'", "readability-else-after-return"]]
\ No newline at end of file
+[["warning", "do not use 'else' after 'return'", "readability-else-after-return"], {"reliability": "high"}]
\ No newline at end of file
--- a/tools/clang-tidy/test/readability-inconsistent-declaration-parameter-name.json
+++ b/tools/clang-tidy/test/readability-inconsistent-declaration-parameter-name.json
@@ -1,1 +1,1 @@
-[["warning", "function 'S::f' has a definition with different parameter names", "readability-inconsistent-declaration-parameter-name"]]
\ No newline at end of file
+[["warning", "function 'S::f' has a definition with different parameter names", "readability-inconsistent-declaration-parameter-name"], {"reliability": "high"}]
\ No newline at end of file
--- a/tools/clang-tidy/test/readability-misleading-indentation.json
+++ b/tools/clang-tidy/test/readability-misleading-indentation.json
@@ -1,1 +1,1 @@
-[["warning", "different indentation for 'if' and corresponding 'else'", "readability-misleading-indentation"]]
\ No newline at end of file
+[["warning", "different indentation for 'if' and corresponding 'else'", "readability-misleading-indentation"], {"reliability": "high"}]
\ No newline at end of file
--- a/tools/clang-tidy/test/readability-non-const-parameter.json
+++ b/tools/clang-tidy/test/readability-non-const-parameter.json
@@ -1,1 +1,1 @@
-[["warning", "pointer parameter 'last' can be pointer to const", "readability-non-const-parameter"]]
\ No newline at end of file
+[["warning", "pointer parameter 'last' can be pointer to const", "readability-non-const-parameter"], {"reliability": "high"}]
\ No newline at end of file
--- a/tools/clang-tidy/test/readability-redundant-control-flow.json
+++ b/tools/clang-tidy/test/readability-redundant-control-flow.json
@@ -1,1 +1,1 @@
-[["warning", "redundant return statement at the end of a function with a void return type", "readability-redundant-control-flow"]]
\ No newline at end of file
+[["warning", "redundant return statement at the end of a function with a void return type", "readability-redundant-control-flow"], {"reliability": "high"}]
\ No newline at end of file
--- a/tools/clang-tidy/test/readability-redundant-preprocessor.json
+++ b/tools/clang-tidy/test/readability-redundant-preprocessor.json
@@ -1,1 +1,1 @@
-[["warning", "nested redundant #ifdef; consider removing it", "readability-redundant-preprocessor"]]
\ No newline at end of file
+[["warning", "nested redundant #ifdef; consider removing it", "readability-redundant-preprocessor"], {"reliability": "high"}]
\ No newline at end of file
--- a/tools/clang-tidy/test/readability-redundant-smartptr-get.json
+++ b/tools/clang-tidy/test/readability-redundant-smartptr-get.json
@@ -1,1 +1,1 @@
-[["warning", "redundant get() call on smart pointer", "readability-redundant-smartptr-get"]]
\ No newline at end of file
+[["warning", "redundant get() call on smart pointer", "readability-redundant-smartptr-get"], {"reliability": "high"}]
\ No newline at end of file
--- a/tools/clang-tidy/test/readability-redundant-string-cstr.json
+++ b/tools/clang-tidy/test/readability-redundant-string-cstr.json
@@ -1,1 +1,1 @@
-[["warning", "redundant call to 'c_str'", "readability-redundant-string-cstr"]]
\ No newline at end of file
+[["warning", "redundant call to 'c_str'", "readability-redundant-string-cstr"], {"reliability": "high"}]
\ No newline at end of file
--- a/tools/clang-tidy/test/readability-redundant-string-init.json
+++ b/tools/clang-tidy/test/readability-redundant-string-init.json
@@ -1,1 +1,1 @@
-[["warning", "redundant string initialization", "readability-redundant-string-init"]]
\ No newline at end of file
+[["warning", "redundant string initialization", "readability-redundant-string-init"], {"reliability": "high"}]
\ No newline at end of file
--- a/tools/clang-tidy/test/readability-simplify-boolean-expr.json
+++ b/tools/clang-tidy/test/readability-simplify-boolean-expr.json
@@ -1,1 +1,1 @@
-[["warning", "redundant boolean literal supplied to boolean operator", "readability-simplify-boolean-expr"]]
\ No newline at end of file
+[["warning", "redundant boolean literal supplied to boolean operator", "readability-simplify-boolean-expr"], {"reliability": "high"}]
\ No newline at end of file
--- a/tools/clang-tidy/test/readability-static-accessed-through-instance.json
+++ b/tools/clang-tidy/test/readability-static-accessed-through-instance.json
@@ -1,1 +1,1 @@
-[["warning", "static member accessed through instance", "readability-static-accessed-through-instance"]]
\ No newline at end of file
+[["warning", "static member accessed through instance", "readability-static-accessed-through-instance"], {"reliability": "high"}]
\ No newline at end of file
--- a/tools/clang-tidy/test/readability-uniqueptr-delete-release.json
+++ b/tools/clang-tidy/test/readability-uniqueptr-delete-release.json
@@ -1,1 +1,1 @@
-[["warning", "prefer '= nullptr' to 'delete x.release()' to reset unique_ptr<> objects", "readability-uniqueptr-delete-release"]]
\ No newline at end of file
+[["warning", "prefer '= nullptr' to 'delete x.release()' to reset unique_ptr<> objects", "readability-uniqueptr-delete-release"], {"reliability": "high"}]
\ No newline at end of file