static analysis of C/C++ code
This report summarizes scanner evidence for cppcheck-opensource/cppcheck, a C++ project with 6,790 GitHub stars. SynthScan examined 624,574 lines of code across 1305 source files, recording 977 pattern matches distributed across 18 syntactic categories. The legacy adjusted pattern signal is 1.7 (Low pattern signal); it is not an authorship estimate.
Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.
Use each vector to guide manual verification of the underlying findings.
Payload schema: 1.0.0 · Engine: 2.0.0 · Scoring: heuristic-density-v1 · Scan date: 2026-10-31.
Can maintainers explain intent, assumptions, and trade-offs? 887 finding(s).
Are imports declared and package/API names verified? 15 finding(s).
Are wrappers, guards, and repeated structures necessary? 441 finding(s).
Which changes need focused human review? 977 finding(s).
This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.
Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.
This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.
The scanner identified 977 distinct pattern matches across 18 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | .uncrustify.cfg | 101 | # 'catch' are on the same line, as in 'catch (decl) <here> {'. | COMMENT |
| LOW | .uncrustify.cfg | 121 | # Whether to indent the body of a 'namespace'. | COMMENT |
| LOW | .uncrustify.cfg | 141 | # Whether to collapse empty blocks between '{' and '}' for functions only. | COMMENT |
| LOW | .uncrustify.cfg | 161 | # The value might be used twice: | COMMENT |
| LOW | democlient/democlient.cpp | 21 | #include "errortypes.h" | COMMENT |
| LOW | tools/daca2-getpackages.py | 61 | #-rw-r--r-- 2 dak debadmin 56730 Dec 26 2016 0xffff_0.7-2_armel.deb | COMMENT |
| LOW | tools/release-check-premium-ids.py | 1 | #!/usr/bin/env python3 | COMMENT |
| LOW | tools/tweak-compile-commands.py | 1 | #!/usr/bin/env python3 | COMMENT |
| LOW | tools/tweak-compile-commands.py | 21 | # --isystem-to-i --exclude-folder lib1: | COMMENT |
| LOW | tools/donate-cpu.py | 1 | #!/usr/bin/env python3 | COMMENT |
| LOW | tools/donate-cpu.py | 21 | # | COMMENT |
| LOW | tools/matchcompiler.py | 1 | #!/usr/bin/env python3 | COMMENT |
| LOW | tools/test-my-pr.py | 61 | #-rw-r--r-- 2 dak debadmin 60254 Dec 26 2016 0xffff_0.7-2_i386.deb | COMMENT |
| LOW | tools/dmake/dmake.cpp | 21 | #include <algorithm> | COMMENT |
| LOW | tools/triage/mainwindow.cpp | 21 | #include "codeeditor.h" | COMMENT |
| LOW | tools/triage/mainwindow.cpp | 41 | #include <QFileInfo> | COMMENT |
| LOW | test/helpers.cpp | 21 | #include "filelister.h" | COMMENT |
| LOW | test/testnullpointer.cpp | 21 | #include "ctu.h" | COMMENT |
| LOW | test/testthreadexecutor.cpp | 21 | COMMENT | |
| LOW | test/testvalueflow.cpp | 21 | #include "helpers.h" | COMMENT |
| LOW | test/testclangimport.cpp | 1 | // Cppcheck - A tool for static C/C++ code analysis | COMMENT |
| LOW | test/testclangimport.cpp | 21 | #include "settings.h" | COMMENT |
| LOW | test/redirect.h | 1 | // Cppcheck - A tool for static C/C++ code analysis | COMMENT |
| LOW | test/testimportproject.cpp | 21 | #include "helpers.h" | COMMENT |
| LOW | test/testimportproject.cpp | 861 | // a shorter version as simply less than a longer one, not equal to it | COMMENT |
| LOW | test/testimportproject.cpp | 1081 | // operators <, >, <=, >=. Real MSBuild documents <, >, <=, >= as usable | COMMENT |
| LOW | test/testimportproject.cpp | 1101 | // MSBuildVersion's own zero-padded equality (used by | COMMENT |
| LOW | test/testimportproject.cpp | 1121 | // path should affect the case where both sides are literally the | COMMENT |
| LOW | test/testimportproject.cpp | 1141 | // Regression coverage for property-name identifier parsing rejecting '-'. | COMMENT |
| LOW | test/testimportproject.cpp | 1161 | // NOT consumed as part of the method name. | COMMENT |
| LOW | test/testimportproject.cpp | 1181 | cppcheck::testing::expandMSBuildExpression("prefix-$(CppcheckTest-Hyphen-Prop)-suffix")); | COMMENT |
| LOW | test/testimportproject.cpp | 1241 | ASSERT_EQUALS("/a/b/c", cppcheck::testing::expandMSBuildExpression("$([MSBuild]::NormalizePath ('/a', 'b', 'c | COMMENT |
| LOW | test/testimportproject.cpp | 1441 | return fs.filename().find("main.cpp") != std::string::npos; | COMMENT |
| LOW | test/testimportproject.cpp | 1461 | // "Current" <= "18.0" -> {18,0} <= {18,0} -> true | COMMENT |
| LOW | test/testimportproject.cpp | 1481 | // the plain, case-sensitive findAndReplace() instead of | COMMENT |
| LOW | test/testsingleexecutor.cpp | 21 | #include "fixture.h" | COMMENT |
| LOW | test/testpreprocessor.cpp | 21 | // the code for a known configuration, it generates the code for each configuration. | COMMENT |
| LOW | test/testtokenize.cpp | 21 | #include "helpers.h" | COMMENT |
| LOW | test/fixture.h | 21 | #define fixtureH | COMMENT |
| LOW | test/fixture.h | 321 | #define ASSERT_LOC_MSG( CONDITION, MSG, FILE_, LINE_ ) assert_(FILE_, LINE_, (CONDITION), MSG) | COMMENT |
| LOW | test/fixture.h | 341 | COMMENT | |
| LOW | test/testsymboldatabase.cpp | 21 | #include "helpers.h" | COMMENT |
| LOW | test/testcmdlineparser.cpp | 21 | #include "cmdlineparser.h" | COMMENT |
| LOW | test/options.cpp | 1 | // Cppcheck - A tool for static C/C++ code analysis | COMMENT |
| LOW | test/fixture.cpp | 21 | #include "errortypes.h" | COMMENT |
| LOW | test/testtokenlist.cpp | 21 | #include "helpers.h" | COMMENT |
| LOW | test/options.h | 1 | // Cppcheck - A tool for static C/C++ code analysis | COMMENT |
| LOW | test/testexecutor.cpp | 21 | #include "errortypes.h" | COMMENT |
| LOW | test/precompiled.h | 21 | // IWYU pragma: begin_keep | COMMENT |
| LOW | test/testcppcheck.cpp | 21 | #include "color.h" | COMMENT |
| LOW | test/testlibrary.cpp | 21 | #include "helpers.h" | COMMENT |
| LOW | test/testprocessexecutor.cpp | 21 | COMMENT | |
| LOW | test/testsimplifytemplate.cpp | 21 | #include "helpers.h" | COMMENT |
| LOW | test/helpers.h | 21 | COMMENT | |
| LOW | test/testsuppressions.cpp | 21 | #include "cppcheck.h" | COMMENT |
| LOW | test/tools/donate_cpu_lib_test.py | 1 | #!/usr/bin/env python | COMMENT |
| LOW | test/tools/test_matchcompiler.py | 1 | #!/usr/bin/env python3 | COMMENT |
| LOW | test/cli/vcxproj_split_configs_test.py | 1 | COMMENT | |
| LOW | test/cli/vcxproj_item_macro_path_missing_config_test.py | 1 | COMMENT | |
| LOW | test/cli/props_dirs_test.py | 1 | COMMENT | |
| 286 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tools/release-check-premium-ids.py | 59 | def get_is_premium_enabled_ids(): | CODE |
| LOW | tools/donate_cpu_lib.py | 122 | def checkout_cppcheck_version(repo_path, version, cppcheck_path): | CODE |
| LOW | tools/donate-cpu-server.py | 61 | def handle_uncaught_exception(exc_type, exc_value, exc_traceback): | CODE |
| LOW | tools/donate-cpu-server.py | 456 | def generate_package_diff_statistics(filename: str) -> None: | CODE |
| LOW | tools/donate-cpu-server.py | 1010 | def check_library_function_name(result_path: str, function_name: str, query_params: dict, nonfunc_id: str='') -> str: | CODE |
| LOW | test/tools/donate_cpu_server_test.py | 35 | def test_file_outside_result_path(tmp_path): | CODE |
| LOW | test/cli/vcxproj_split_configs_test.py | 32 | def test_vcxproj_split_configs(): | CODE |
| LOW | test/cli/vcxproj_item_macro_path_missing_config_test.py | 33 | def test_vcxproj_item_macro_path_missing_config(): | CODE |
| LOW | test/cli/props_dirs_test.py | 49 | def test_props_dirs_defines_and_standard(): | CODE |
| LOW | test/cli/project-suppressions.py | 6 | def test_cli_and_project_suppressions(tmp_path): | CODE |
| LOW | test/cli/project-suppressions.py | 20 | def test_multiple_cli_and_project_suppressions(tmp_path): | CODE |
| LOW | test/cli/suppress-syntaxError_test.py | 20 | def test_safety_suppress_syntax_error_implicitly(tmpdir): | CODE |
| LOW | test/cli/suppress-syntaxError_test.py | 27 | def test_safety_suppress_syntax_error_explicitly(): | CODE |
| LOW | test/cli/lookup_test.py | 117 | def test_lib_lookup_notfound_project(tmpdir): # #13938 | CODE |
| LOW | test/cli/lookup_test.py | 137 | def test_lib_lookup_notfound_compdb(tmpdir): | CODE |
| LOW | test/cli/lookup_test.py | 156 | def test_lib_lookup_ext_notfound(tmpdir): | CODE |
| LOW | test/cli/lookup_test.py | 176 | def test_lib_lookup_relative_notfound(tmpdir): | CODE |
| LOW | test/cli/lookup_test.py | 196 | def test_lib_lookup_relative_noext_notfound(tmpdir): | CODE |
| LOW | test/cli/lookup_test.py | 217 | def test_lib_lookup_relative_noext_trailing_notfound(tmpdir): | CODE |
| LOW | test/cli/lookup_test.py | 393 | def test_platform_lookup_builtin(tmpdir): | CODE |
| LOW | test/cli/lookup_test.py | 447 | def test_platform_lookup_path(tmpdir): | CODE |
| LOW | test/cli/lookup_test.py | 477 | def test_platform_lookup_notfound(tmpdir): | CODE |
| LOW | test/cli/lookup_test.py | 502 | def test_platform_lookup_notfound_project(tmpdir): # #13939 | CODE |
| LOW | test/cli/lookup_test.py | 528 | def test_platform_lookup_notfound_compdb(tmpdir): | CODE |
| LOW | test/cli/lookup_test.py | 549 | def test_platform_lookup_ext_notfound(tmpdir): | CODE |
| LOW | test/cli/lookup_test.py | 572 | def test_platform_lookup_relative_notfound(tmpdir): | CODE |
| LOW | test/cli/lookup_test.py | 595 | def test_platform_lookup_relative_noext_notfound(tmpdir): | CODE |
| LOW | test/cli/lookup_test.py | 619 | def test_platform_lookup_relative_noext_trailing_notfound(tmpdir): | CODE |
| LOW | test/cli/lookup_test.py | 642 | def test_platform_lookup_absolute(tmpdir): | CODE |
| LOW | test/cli/lookup_test.py | 802 | def test_addon_lookup_notfound(tmpdir): | CODE |
| LOW | test/cli/lookup_test.py | 822 | def test_addon_lookup_notfound_project(tmpdir): # #13940 / #13941 | CODE |
| LOW | test/cli/lookup_test.py | 841 | def test_addon_lookup_notfound_compdb(tmpdir): | CODE |
| LOW | test/cli/lookup_test.py | 859 | def test_addon_lookup_ext_notfound(tmpdir): | CODE |
| LOW | test/cli/lookup_test.py | 879 | def test_addon_lookup_relative_notfound(tmpdir): | CODE |
| LOW | test/cli/lookup_test.py | 900 | def test_addon_lookup_relative_noext_notfound(tmpdir): | CODE |
| LOW | test/cli/lookup_test.py | 921 | def test_addon_lookup_relative_noext_trailing_notfound(tmpdir): | CODE |
| LOW | test/cli/lookup_test.py | 942 | def test_addon_lookup_absolute(tmpdir): | CODE |
| LOW | test/cli/lookup_test.py | 960 | def test_addon_lookup_absolute_notfound(tmpdir): | CODE |
| LOW | test/cli/lookup_test.py | 977 | def test_addon_lookup_absolute_noext_notfound(tmpdir): | CODE |
| LOW | test/cli/lookup_test.py | 995 | def test_addon_lookup_absolute_noext_trailing_notfound(tmpdir): | CODE |
| LOW | test/cli/lookup_test.py | 1040 | def test_addon_lookup_invalid(tmpdir): | CODE |
| LOW | test/cli/lookup_test.py | 1086 | def test_config_lookup_notfound(tmpdir): | CODE |
| LOW | test/cli/lookup_test.py | 262 | def test_lib_lookup_absolute_notfound(tmpdir): | STRING |
| LOW | test/cli/lookup_test.py | 282 | def test_lib_lookup_absolute_noext_notfound(tmpdir): | STRING |
| LOW | test/cli/lookup_test.py | 303 | def test_lib_lookup_absolute_noext_trailing_notfound(tmpdir): | STRING |
| LOW | test/cli/lookup_test.py | 663 | def test_platform_lookup_absolute_notfound(tmpdir): | STRING |
| LOW | test/cli/lookup_test.py | 680 | def test_platform_lookup_absolute_noext_notfound(tmpdir): | STRING |
| LOW | test/cli/lookup_test.py | 698 | def test_platform_lookup_absolute_noext_trailing_notfound(tmpdir): | STRING |
| LOW | test/cli/lookup_test.py | 717 | def test_platform_lookup_nofile(tmpdir): | STRING |
| LOW | test/cli/lookup_test.py | 740 | def test_platform_lookup_invalid(tmpdir): | STRING |
| LOW | test/cli/vcxproj_item_macro_path_invariant_test.py | 32 | def test_vcxproj_item_macro_path_invariant(): | CODE |
| LOW | test/cli/vcxproj_forced_includes_test.py | 14 | def test_vcxproj_forced_includes_debug(): | CODE |
| LOW | test/cli/vcxproj_forced_includes_test.py | 38 | def test_vcxproj_forced_includes_release(): | CODE |
| LOW | test/cli/vcxproj_item_macro_path_test.py | 48 | def test_vcxproj_item_macro_path(): | CODE |
| LOW⚡ | test/cli/unused_function_test.py | 74 | def test_unused_functions_builddir(tmpdir): | CODE |
| LOW⚡ | test/cli/unused_function_test.py | 80 | def test_unused_functions_builddir_j_thread(tmpdir): | CODE |
| LOW⚡ | test/cli/unused_function_test.py | 87 | def test_unused_functions_builddir_j_process(tmpdir): | CODE |
| LOW⚡ | test/cli/unused_function_test.py | 93 | def __test_unused_functions_project(extra_args): | CODE |
| LOW | test/cli/unused_function_test.py | 111 | def test_unused_functions_project(): | CODE |
| LOW | test/cli/unused_function_test.py | 115 | def test_unused_functions_project_j(): | CODE |
| 306 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tools/daca2-getpackages.py | 42 | CODE | |
| LOW | tools/release-set-version.py | 43 | CODE | |
| LOW | tools/reduce.py | 144 | CODE | |
| LOW | tools/reduce.py | 205 | CODE | |
| LOW | tools/donate_cpu_lib.py | 347 | CODE | |
| LOW | tools/donate_cpu_lib.py | 439 | CODE | |
| LOW | tools/donate_cpu_lib.py | 581 | CODE | |
| LOW | tools/donate_cpu_lib.py | 737 | CODE | |
| LOW | tools/MT-Unsafe.py | 51 | CODE | |
| LOW | tools/matchcompiler.py | 198 | CODE | |
| LOW | tools/matchcompiler.py | 305 | CODE | |
| LOW | tools/matchcompiler.py | 350 | CODE | |
| LOW | tools/matchcompiler.py | 455 | CODE | |
| LOW | tools/test-my-pr.py | 42 | CODE | |
| LOW | tools/donate-cpu-server.py | 164 | CODE | |
| LOW | tools/donate-cpu-server.py | 204 | CODE | |
| LOW | tools/donate-cpu-server.py | 308 | CODE | |
| LOW | tools/donate-cpu-server.py | 420 | CODE | |
| LOW | tools/donate-cpu-server.py | 495 | CODE | |
| LOW | tools/donate-cpu-server.py | 525 | CODE | |
| LOW | tools/donate-cpu-server.py | 591 | CODE | |
| LOW | tools/donate-cpu-server.py | 662 | CODE | |
| LOW | tools/donate-cpu-server.py | 707 | CODE | |
| LOW | tools/donate-cpu-server.py | 748 | CODE | |
| LOW | tools/donate-cpu-server.py | 858 | CODE | |
| LOW | tools/donate-cpu-server.py | 921 | CODE | |
| LOW | tools/donate-cpu-server.py | 1010 | CODE | |
| LOW | tools/donate-cpu-server.py | 1068 | CODE | |
| LOW | tools/donate-cpu-server.py | 1297 | CODE | |
| LOW | tools/donate-cpu-server.py | 1336 | CODE | |
| LOW | tools/donate-cpu-server.py | 1178 | CODE | |
| LOW | tools/release-trac-fixed-open-tickets.py | 104 | CODE | |
| LOW | tools/daca2-download.py | 41 | CODE | |
| LOW | tools/daca2-download.py | 80 | CODE | |
| LOW | tools/daca2-download.py | 125 | CODE | |
| LOW | test/cli/lookup_test.py | 1134 | CODE | |
| LOW | test/cli/testutils.py | 94 | CODE | |
| LOW | test/cli/testutils.py | 168 | CODE | |
| LOW | test/cli/sarif_test.py | 302 | CODE | |
| LOW | test/scripts/extracttests.py | 82 | CODE | |
| LOW | addons/namingng.py | 199 | CODE | |
| LOW | addons/misc.py | 48 | CODE | |
| LOW | addons/misc.py | 87 | CODE | |
| LOW | addons/misra_9.py | 396 | CODE | |
| LOW | addons/misra_9.py | 488 | CODE | |
| LOW | addons/misra_9.py | 525 | CODE | |
| LOW | addons/misra_9.py | 222 | CODE | |
| LOW | addons/misra_9.py | 367 | CODE | |
| LOW | addons/y2038.py | 214 | CODE | |
| LOW | addons/y2038.py | 302 | CODE | |
| LOW | addons/cppcheckdata.py | 1461 | CODE | |
| LOW | addons/cppcheckdata.py | 1566 | CODE | |
| LOW | addons/cppcheckdata.py | 362 | CODE | |
| LOW | addons/cppcheckdata.py | 880 | CODE | |
| LOW | addons/cppcheckdata.py | 1229 | CODE | |
| LOW | addons/cppcheckdata.py | 1284 | CODE | |
| LOW | addons/threadsafety.py | 290 | CODE | |
| LOW | addons/misra.py | 87 | CODE | |
| LOW | addons/misra.py | 569 | CODE | |
| LOW | addons/misra.py | 620 | CODE | |
| 74 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | tools/donate_cpu_lib.py | 427 | except subprocess.TimeoutExpired: | CODE |
| HIGH | tools/donate_cpu_lib.py | 745 | except IOError: | CODE |
| HIGH | tools/donate_cpu_lib.py | 395 | except OSError: | CODE |
| HIGH | tools/donate_cpu_lib.py | 397 | except AttributeError: | CODE |
| HIGH | test/cli/testutils.py | 153 | except subprocess.TimeoutExpired: | CODE |
| HIGH | addons/y2038.py | 293 | except (AttributeError, TypeError, ValueError): | CODE |
| HIGH | addons/misra.py | 30 | except ImportError: | CODE |
| HIGH | addons/misra.py | 2611 | except ValueError: | CODE |
| HIGH | addons/misra.py | 2672 | except ValueError: | CODE |
| HIGH | addons/test/util.py | 44 | except ValueError: | CODE |
| HIGH | gui/manualtest/run.py | 52 | except (ImportError, OSError): | CODE |
| HIGH | gui/manualtest/web.py | 459 | except KeyboardInterrupt: | CODE |
| HIGH | gui/manualtest/guitest.py | 181 | except ProcessLookupError: | CODE |
| HIGH | gui/manualtest/guitest.py | 310 | except Exception: | CODE |
| HIGH | gui/manualtest/guitest.py | 320 | except Exception: | CODE |
| HIGH | gui/manualtest/guitest.py | 465 | except Exception: | CODE |
| HIGH | gui/manualtest/guitest.py | 709 | except OSError: | CODE |
| HIGH | gui/manualtest/guitest.py | 247 | except Exception: | CODE |
| HIGH | gui/manualtest/guitest.py | 207 | except (ProcessLookupError, PermissionError): | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tools/release-set-version.py | 26 | except Exception: | CODE |
| MEDIUM | tools/release-set-version.py | 23 | def egrep(args): | CODE |
| MEDIUM | tools/reduce.py | 87 | print('Error: {}\n{}'.format(stdout, stderr)) | CODE |
| MEDIUM⚡ | tools/donate_cpu_lib.py | 647 | print('Error: Result upload not performed - only make build binaries are currently fully supported') | CODE |
| MEDIUM⚡ | tools/donate_cpu_lib.py | 662 | print('Error: Information upload not performed - only make build binaries are currently fully supported') | CODE |
| MEDIUM | tools/donate_cpu_lib.py | 47 | print("Error: a make command ({}) is required".format(','.join(make_cmds))) | CODE |
| MEDIUM | tools/donate_cpu_lib.py | 69 | print("Error: '{}' is required".format(app)) | CODE |
| MEDIUM | tools/donate_cpu_lib.py | 76 | print("Error: {}. Module is required.".format(e)) | CODE |
| MEDIUM | tools/donate_cpu_lib.py | 324 | print('Error: ' + destfile + ' exists but it is not a file! Please check the path and delete it manually.') | CODE |
| MEDIUM | tools/donate_cpu_lib.py | 158 | def get_cppcheck_info(cppcheck_path): | CODE |
| LOW⚡ | tools/donate_cpu_lib.py | 653 | except Exception as e: | CODE |
| LOW⚡ | tools/donate_cpu_lib.py | 668 | except Exception as e: | CODE |
| LOW⚡ | tools/donate_cpu_lib.py | 678 | except Exception as e: | CODE |
| LOW | tools/donate_cpu_lib.py | 230 | except Exception as e: | CODE |
| LOW | tools/donate_cpu_lib.py | 239 | except Exception as e: | CODE |
| LOW | tools/donate_cpu_lib.py | 314 | except Exception as e: | CODE |
| MEDIUM | tools/donate-cpu.py | 95 | print('Error: Max. packages value "{}" is invalid. Must be a positive number or 0.'.format(arg_value)) | CODE |
| MEDIUM | tools/donate-cpu.py | 141 | print('Error: Bandwidth limit value "' + bandwidth_limit + '" is invalid.') | CODE |
| LOW | tools/donate-cpu.py | 160 | except Exception as e: | CODE |
| MEDIUM | tools/donate-cpu.py | 161 | print('Error: Failed to clone Cppcheck ({}), retry later'.format(e)) | CODE |
| LOW | tools/donate-cpu.py | 178 | except Exception as e: | CODE |
| LOW | tools/donate-cpu.py | 194 | except Exception as e: | CODE |
| LOW | tools/donate-cpu.py | 210 | except Exception as e: | CODE |
| MEDIUM | tools/donate-cpu.py | 211 | print('Error: Failed to get package ({}), retry later'.format(e)) | CODE |
| MEDIUM | tools/test-my-pr.py | 154 | print("Error: Check requirements") | CODE |
| LOW | tools/test-my-pr.py | 177 | except Exception as e: | CODE |
| LOW | tools/test-my-pr.py | 183 | except Exception as e: | CODE |
| MEDIUM | tools/test-my-pr.py | 200 | print('Error: {}'.format(e)) | CODE |
| MEDIUM | tools/test-my-pr.py | 250 | print('Error: 101') | CODE |
| MEDIUM | tools/test-my-pr.py | 263 | print('Error: 101') | CODE |
| MEDIUM | tools/test-my-pr.py | 27 | def ftp_get(url): | CODE |
| MEDIUM | tools/compare-valueflow-options.py | 63 | print("Error: Check requirements") | CODE |
| LOW | tools/compare-valueflow-options.py | 90 | except Exception as e: | CODE |
| MEDIUM | tools/release-trac-fixed-open-tickets.py | 52 | print('Error: no tags found', file=sys.stderr) | CODE |
| LOW | tools/bisect/bisect_hang.py | 47 | except Exception as e: | CODE |
| LOW | tools/bisect/bisect_res.py | 43 | except Exception as e: | CODE |
| LOW | addons/namingng.py | 86 | except Exception as e: | CODE |
| MEDIUM | addons/naming.py | 19 | print('Error: "{}" is not a valid regular expression.'.format(expr)) | CODE |
| MEDIUM | addons/misra.py | 5109 | print("Error: Please specify rule texts file with --rule-texts=<file>") | STRING |
| LOW | gui/manualtest/guitest.py | 247 | except Exception: | CODE |
| LOW | gui/manualtest/guitest.py | 281 | except Exception: | CODE |
| LOW⚡ | gui/manualtest/guitest.py | 310 | except Exception: | CODE |
| LOW⚡ | gui/manualtest/guitest.py | 320 | except Exception: | CODE |
| LOW⚡ | gui/manualtest/guitest.py | 330 | except Exception: | CODE |
| LOW | gui/manualtest/guitest.py | 465 | except Exception: | CODE |
| MEDIUM | gui/manualtest/guitest.py | 40 | def load_state(): | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | tools/matchcompiler.py | 176 | return '(tok->tokType() == Token::eBitOp && tok->str() == MatchCompiler::makeConstString("|") )' | CODE |
| HIGH | tools/matchcompiler.py | 178 | return '(tok->tokType() == Token::eLogicalOp && tok->str() == MatchCompiler::makeConstString("||"))' | CODE |
| HIGH | tools/matchcompiler.py | 231 | ret += ' if (!tok || tok->str().size() != 1U || !strchr("' + tok[1:-1] + '", tok->str()[0]))\n' | CODE |
| HIGH | tools/matchcompiler.py | 260 | ret += ' if (tok && tok->str() == MatchCompiler::makeConstString("' + tok[2:] + '"))\n' | CODE |
| HIGH | test/cli/other_test.py | 738 | "_comment1": "these should all be arrays, or null, or not set", | CODE |
| HIGH | test/addon/conftest.py | 111 | if (flag && limit > 1) { | CODE |
| HIGH | test/addon/conftest.py | 134 | int log_or = a || b; | CODE |
| HIGH | test/addon/conftest.py | 155 | return less && v.empty(); | CODE |
| HIGH | addons/namingng.py | 16 | # "RE_PRIVATE_MEMBER_VARIABLE": null, | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM⚡ | addons/y2038.py | 43 | # -------------------------------- | COMMENT |
| MEDIUM⚡ | addons/y2038.py | 45 | # -------------------------------- | COMMENT |
| MEDIUM⚡ | addons/y2038.py | 51 | # -------------------------------------------- | COMMENT |
| MEDIUM⚡ | addons/y2038.py | 53 | # -------------------------------------------- | COMMENT |
| MEDIUM | addons/y2038.py | 79 | # -------------------------------------------- | COMMENT |
| MEDIUM | addons/y2038.py | 81 | # -------------------------------------------- | COMMENT |
| MEDIUM | addons/y2038.py | 98 | # -------------------------------- | COMMENT |
| MEDIUM | addons/y2038.py | 100 | # -------------------------------- | COMMENT |
| MEDIUM | addons/threadsafety.py | 17 | # -------------------------------- | COMMENT |
| MEDIUM | addons/threadsafety.py | 19 | # -------------------------------- | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | tools/dmake/dmake.cpp | 366 | fout << "# This file is generated by dmake, do not edit.\n"; | CODE |
| MEDIUM | tools/dmake/dmake.cpp | 619 | fout << "# This file is generated by dmake, do not edit.\n\n"; | CODE |
| MEDIUM⚡ | test/cli/performance_test.py | 453 | # Create a main file that includes a header and returns 0. | COMMENT |
| MEDIUM⚡ | test/cli/performance_test.py | 461 | # Create a header file with macro definitions that violates misra because they start with an underscore. | COMMENT |
| MEDIUM⚡ | test/cli/performance_test.py | 471 | # Create a suppressions file that suppresses the misra violation for the macros in the header file | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tools/daca2-getpackages.py | 5 | # Usage: | COMMENT |
| LOW | tools/release-check-premium-ids.py | 25 | # Usage: | COMMENT |
| LOW | tools/release-set-version.py | 5 | # Usage: | COMMENT |
| LOW | tools/compare_ast_symdb.py | 1 | # Example usage: | COMMENT |
| LOW | tools/tweak-compile-commands.py | 32 | # Usage: | COMMENT |
| LOW | tools/compare-valueflow-options.py | 4 | # Example usage: | COMMENT |
| LOW | tools/daca2-download.py | 5 | # Usage: | COMMENT |
| LOW | addons/y2038.py | 29 | # Example usage: | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tools/reduce.py | 86 | # Print the output to give a hint how to fix it. | COMMENT |
| LOW | tools/matchcompiler.py | 775 | # Check if we are invoked from the right place | COMMENT |
| LOW | test/cli/sarif_test.py | 543 | # Check if rule has CWE tag | COMMENT |
| LOW | addons/misra_9.py | 327 | # Check if token is correct value type for self.root.children[?] | COMMENT |
| LOW | addons/misra_9.py | 406 | # Check if declaration and initialization is | COMMENT |
| LOW | addons/cppcheckdata.py | 42 | # Open the file here so it is closed even when the caller stops iterating | COMMENT |
| LOW | addons/misra.py | 2165 | # Check if we have the same number of variables in both the | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | test/cli/sarif_test.py | 459 | """Test that a variety of rules are triggered by comprehensive test code.""" | STRING |
| MEDIUM | test/cli/sarif_test.py | 619 | # Should have multiple severity levels for comprehensive test | COMMENT |
| MEDIUM | addons/y2038.py | 5 | # This addon provides comprehensive Y2038 (Year 2038 Problem) detection for C/C++ code. | COMMENT |
| MEDIUM | addons/test/y2038_test.py | 182 | # Test comprehensive Y2038 configuration | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tools/bisect/bisect_hang.py | 54 | # TODO: handle error result | COMMENT |
| LOW | tools/bisect/bisect_hang.py | 66 | # TODO: handle error result | COMMENT |
| LOW | cli/stacktrace.cpp | 64 | // TODO: implement parsing for __APPLE__ | COMMENT |
| LOW | cli/cmdlineparser.cpp | 900 | // TODO: implement get CPU logical core count and use that. | COMMENT |
| LOW | lib/tokenize.cpp | 8807 | (Token::Match(tok, "%str% %name% %str%") && !(startsWith(tok->strAt(1), "PRI") || startsWith(tok->strAt(1), | CODE |
| LOW | lib/platform.cpp | 469 | // TODO: implement | COMMENT |
| LOW | lib/valueflow.cpp | 7013 | const Token* typeTok = newTok->astParent()->astOperand1(); // TODO: implement fallback for e.g. "auto p = ne | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | man/manual-premium.md | 1574 | #### Step 1: check `premiumaddon` debug output | COMMENT |
| LOW | man/manual-premium.md | 1589 | #### Step 2: clean up Cppcheck build dir | COMMENT |
| LOW | man/manual-premium.md | 1598 | #### Step 3: remove `cppcheck-premium-loc` files | COMMENT |
| LOW | lib/importproject.cpp | 5266 | // Step 3: Fall back to checking the Project Root Folder only if no include paths matched | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tools/listErrorsWithoutCWE.py | 2 | CODE | |
| LOW | tools/bisect/bisect_hang.py | 5 | CODE | |
| LOW | tools/bisect/bisect_res.py | 4 | CODE | |
| LOW | test/tools/donate_cpu_lib_test.py | 19 | CODE | |
| LOW | addons/y2038.py | 34 | CODE | |
| LOW | addons/misra.py | 16 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | addons/y2038.py | 303 | Main function to check Y2038 safety of C/C++ code from cppcheck dump files. This function performs comprehensi | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | man/buildman.sh | 4 | # For Windows you can use the MiKTeX installer https://miktex.org/download | COMMENT |
| LOW | lib/checkmemoryleak.h | 120 | return "Don't forget to deallocate struct members\n"; | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | test/addon/test_cppcheckdata.py | 206 | def test_function(self, sample_cfg): | CODE |
| LOW | addons/namingng.py | 377 | def process_data(conf,data,cli,debugprint): | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | lib/importproject.cpp | 5266 | // Step 3: Fall back to checking the Project Root Folder only if no include paths matched | COMMENT |