A tool to help eliminate NullPointerExceptions (NPEs) in your Java code with low build-time overhead
This report summarizes scanner evidence for uber/NullAway, a Java project with 4,119 GitHub stars. SynthScan examined 96,616 lines of code across 361 source files, recording 187 pattern matches distributed across 11 syntactic categories. The legacy adjusted pattern signal is 4.5 (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.
Can maintainers explain intent, assumptions, and trade-offs? 146 finding(s).
Are imports declared and package/API names verified? 18 finding(s).
Are wrappers, guards, and repeated structures necessary? 129 finding(s).
Which changes need focused human review? 187 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 187 distinct pattern matches across 11 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 |
|---|---|---|---|---|
| CRITICAL⚡ | …om/uber/nullaway/jarinfer/DefinitelyDerefedParams.java | 71 | "com.google.common.base.Preconditions.checkNotNull(Ljava/lang/Object;)Ljava/lang/Object;", | CODE |
| CRITICAL⚡ | …om/uber/nullaway/jarinfer/DefinitelyDerefedParams.java | 76 | .put("org.junit.jupiter.api.Assertions.assertNotNull(Ljava/lang/Object;)V", 0) | CODE |
| CRITICAL⚡ | …om/uber/nullaway/jarinfer/DefinitelyDerefedParams.java | 78 | "org.junit.jupiter.api.Assertions.assertNotNull(Ljava/lang/Object;Ljava/lang/String;)V", | CODE |
| CRITICAL⚡ | …om/uber/nullaway/jarinfer/DefinitelyDerefedParams.java | 81 | "org.junit.jupiter.api.Assertions.assertNotNull(Ljava/lang/Object;Ljava/util/function/Supplier<String>;)V" | CODE |
| CRITICAL⚡ | …ay/src/test/java/com/uber/nullaway/FrameworkTests.java | 287 | org.junit.jupiter.api.Assertions.assertNotNull(o3); | STRING |
| CRITICAL⚡ | …ay/src/test/java/com/uber/nullaway/FrameworkTests.java | 289 | org.junit.jupiter.api.Assertions.assertNotNull(o4, "Null!"); | STRING |
| CRITICAL⚡ | …ay/src/test/java/com/uber/nullaway/FrameworkTests.java | 291 | org.junit.jupiter.api.Assertions.assertNotNull(o5, () -> "Null!"); | STRING |
| CRITICAL | …ay/src/test/java/com/uber/nullaway/FrameworkTests.java | 396 | if (!org.apache.commons.lang.StringUtils.isEmpty(s)) { | STRING |
| CRITICAL | …ay/src/test/java/com/uber/nullaway/FrameworkTests.java | 401 | if (!org.apache.commons.lang3.StringUtils.isEmpty(t)) { | STRING |
| CRITICAL | …/src/test/java/com/uber/nullaway/SuppressionTests.java | 251 | f.next.next.next.next.hashCode(); | STRING |
| CRITICAL | …va/com/uber/nullaway/generics/TypeMetadataBuilder.java | 290 | com.sun.tools.javac.util.List.from(typeArgs), | CODE |
| CRITICAL | …va/com/uber/nullaway/generics/TypeMetadataBuilder.java | 372 | enclosingType, com.sun.tools.javac.util.List.from(typeArgs), baseType.tsym, metadata); | CODE |
| CRITICAL | …in/java/com/uber/nullaway/generics/GenericsChecks.java | 3112 | return com.sun.tools.javac.util.List.from(types); | CODE |
| CRITICAL⚡ | …/nullaway/generics/PreservedAnnotationTreeVisitor.java | 125 | ? com.sun.tools.javac.util.List.from( | CODE |
| CRITICAL⚡ | …/nullaway/generics/PreservedAnnotationTreeVisitor.java | 128 | nullableType, com.sun.tools.javac.util.List.nil(), null))) | CODE |
| CRITICAL⚡ | …/nullaway/generics/PreservedAnnotationTreeVisitor.java | 129 | : com.sun.tools.javac.util.List.nil(); | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | …ay-suppression-remover/tests/test_file_modification.py | 41 | def test_sole_checker_deletes_line(self): | CODE |
| LOW⚡ | …ay-suppression-remover/tests/test_file_modification.py | 49 | def test_multiple_checkers_keeps_others(self): | CODE |
| LOW⚡ | …ay-suppression-remover/tests/test_file_modification.py | 58 | def test_multiple_checkers_preserves_indentation(self): | CODE |
| LOW⚡ | …ay-suppression-remover/tests/test_file_modification.py | 65 | def test_multiple_checkers_preserves_exact_leading_and_trailing_whitespace(self): | CODE |
| LOW⚡ | …ay-suppression-remover/tests/test_file_modification.py | 75 | def test_three_checkers_keeps_two(self): | CODE |
| LOW⚡ | …ay-suppression-remover/tests/test_file_modification.py | 84 | def test_alt_suppression_removed(self): | CODE |
| LOW⚡ | …ay-suppression-remover/tests/test_file_modification.py | 94 | def test_multiline_annotation_deleted(self): | CODE |
| LOW | …ay-suppression-remover/tests/test_file_modification.py | 107 | def test_multiline_annotation_preserves_layout_when_partial(self): | CODE |
| LOW | …ay-suppression-remover/tests/test_file_modification.py | 127 | def test_multiline_annotation_preserves_layout_when_removing_last(self): | CODE |
| LOW | …ay-suppression-remover/tests/test_file_modification.py | 147 | def test_multiline_annotation_preserves_layout_for_inline_values(self): | CODE |
| LOW | …ay-suppression-remover/tests/test_file_modification.py | 171 | def test_multiline_annotation_preserves_newline_after_removed_value(self): | CODE |
| LOW | …ay-suppression-remover/tests/test_file_modification.py | 195 | def test_multiline_annotation_does_not_introduce_trailing_whitespace(self): | CODE |
| LOW⚡ | …ay-suppression-remover/tests/test_file_modification.py | 214 | def test_no_annotations_to_remove(self): | CODE |
| LOW⚡ | …ay-suppression-remover/tests/test_file_modification.py | 221 | def test_removes_only_target_checker_from_pair(self): | CODE |
| LOW⚡ | …ay-suppression-remover/tests/test_file_modification.py | 229 | def test_line_numbers_outside_annotation_untouched(self): | CODE |
| LOW | …ay-suppression-remover/tests/test_project_and_build.py | 41 | def test_settings_gradle_kts_in_cwd(self): | CODE |
| LOW | …ay-suppression-remover/tests/test_project_and_build.py | 51 | def test_build_gradle_two_levels_up(self): | CODE |
| LOW⚡ | …ay-suppression-remover/tests/test_project_and_build.py | 73 | def test_no_project_root_raises(self): | CODE |
| LOW⚡ | …ay-suppression-remover/tests/test_project_and_build.py | 82 | def test_explicit_start_directory(self): | CODE |
| LOW⚡ | …ay-suppression-remover/tests/test_project_and_build.py | 92 | def test_finds_java_files_under_src(self): | CODE |
| LOW⚡ | …ay-suppression-remover/tests/test_project_and_build.py | 101 | def test_no_src_directory_returns_empty(self): | CODE |
| LOW⚡ | …ay-suppression-remover/tests/test_project_and_build.py | 107 | def test_ignores_non_java_files(self): | CODE |
| LOW | …ay-suppression-remover/tests/test_project_and_build.py | 119 | def test_finds_java_files_across_nested_modules(self): | CODE |
| LOW | …ay-suppression-remover/tests/test_project_and_build.py | 146 | def test_module_scope_does_not_include_nested_modules(self): | CODE |
| LOW⚡ | …ay-suppression-remover/tests/test_project_and_build.py | 157 | def test_discovers_main_and_test(self): | CODE |
| LOW⚡ | …ay-suppression-remover/tests/test_project_and_build.py | 166 | def test_discovers_custom_source_sets(self): | CODE |
| LOW⚡ | …ay-suppression-remover/tests/test_project_and_build.py | 176 | def test_skips_dirs_without_java_files(self): | CODE |
| LOW⚡ | …ay-suppression-remover/tests/test_project_and_build.py | 185 | def test_no_src_dir_defaults_to_main(self): | CODE |
| LOW⚡ | …ay-suppression-remover/tests/test_project_and_build.py | 192 | def test_default_gradle_cmd_compiles_all_source_sets(self): | CODE |
| LOW | …-suppression-remover/tests/test_build_error_parsing.py | 51 | def test_path_containing_spaces(self): | CODE |
| LOW | …-suppression-remover/tests/test_build_error_parsing.py | 79 | def test_different_checker_not_matched(self): | CODE |
| LOW | …-suppression-remover/tests/test_build_error_parsing.py | 91 | def test_checker_with_special_regex_chars(self): | CODE |
| LOW | …-suppression-remover/tests/test_build_error_parsing.py | 98 | def test_does_not_match_partial_checker_name(self): | CODE |
| LOW | …ullaway-suppression-remover/tests/test_line_mapping.py | 56 | def test_delete_multiple_lines(self): | CODE |
| LOW⚡ | …ullaway-suppression-remover/tests/test_line_mapping.py | 73 | def test_annotation_immediately_above(self): | CODE |
| LOW⚡ | …ullaway-suppression-remover/tests/test_line_mapping.py | 79 | def test_closest_preceding_wins(self): | CODE |
| LOW⚡ | …ullaway-suppression-remover/tests/test_line_mapping.py | 85 | def test_following_annotation_within_lookahead(self): | CODE |
| LOW⚡ | …ullaway-suppression-remover/tests/test_line_mapping.py | 91 | def test_following_annotation_outside_lookahead_ignored(self): | CODE |
| LOW⚡ | …ullaway-suppression-remover/tests/test_line_mapping.py | 97 | def test_preceding_beats_equidistant_following(self): | CODE |
| LOW⚡ | …ullaway-suppression-remover/tests/test_line_mapping.py | 103 | def test_out_of_range_line_returns_none(self): | CODE |
| LOW⚡ | …ullaway-suppression-remover/tests/test_line_mapping.py | 109 | def test_empty_annotations_returns_none(self): | CODE |
| LOW⚡ | …ullaway-suppression-remover/tests/test_line_mapping.py | 113 | def test_accounts_for_deleted_lines(self): | CODE |
| LOW⚡ | …ullaway-suppression-remover/tests/test_line_mapping.py | 119 | def test_annotation_on_same_line_as_error(self): | CODE |
| LOW⚡ | …ullaway-suppression-remover/tests/test_line_mapping.py | 138 | def test_no_outer_returns_none(self): | CODE |
| LOW⚡ | …ullaway-suppression-remover/tests/test_line_mapping.py | 143 | def test_equal_start_line_not_counted_as_outer(self): | CODE |
| LOW⚡ | …ullaway-suppression-remover/tests/test_line_mapping.py | 153 | def test_marks_all_unneeded_annotations(self): | CODE |
| LOW⚡ | …ullaway-suppression-remover/tests/test_line_mapping.py | 159 | def test_already_needed_not_recounted(self): | CODE |
| LOW⚡ | …ullaway-suppression-remover/tests/test_line_mapping.py | 166 | def test_all_already_needed_returns_zero(self): | CODE |
| LOW⚡ | …ullaway-suppression-remover/tests/test_line_mapping.py | 173 | def test_empty_list_returns_zero(self): | CODE |
| LOW | …llaway-suppression-remover/tests/test_orchestration.py | 57 | def test_no_annotations_does_not_call_build(self): | CODE |
| LOW | …llaway-suppression-remover/tests/test_orchestration.py | 69 | def test_annotation_removed_when_build_passes(self): | CODE |
| LOW | …llaway-suppression-remover/tests/test_orchestration.py | 88 | def test_project_wide_run_processes_multiple_modules(self): | CODE |
| LOW | …llaway-suppression-remover/tests/test_orchestration.py | 119 | def test_all_needed_restores_and_exits(self): | CODE |
| LOW | …llaway-suppression-remover/tests/test_orchestration.py | 145 | def test_legacy_encoding_control_character_and_cr_line_endings(self): | CODE |
| LOW | …llaway-suppression-remover/tests/test_orchestration.py | 172 | def test_legacy_encoding_preserves_bytes_through_restore_and_rewrite(self): | CODE |
| LOW | …llaway-suppression-remover/tests/test_orchestration.py | 199 | def test_needed_kept_unnecessary_removed(self): | CODE |
| LOW | …llaway-suppression-remover/tests/test_orchestration.py | 237 | def test_final_confirmation_succeeds_after_restoring_file(self): | CODE |
| LOW | …llaway-suppression-remover/tests/test_orchestration.py | 262 | def test_final_confirmation_still_fails_restores_originals_and_exits(self): | CODE |
| LOW | …llaway-suppression-remover/tests/test_orchestration.py | 290 | def test_unmapped_errors_do_not_crash(self): | CODE |
| LOW | …llaway-suppression-remover/tests/test_orchestration.py | 314 | def test_out_of_range_line_restores_all_suppressions_in_file(self): | CODE |
| 46 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM⚡ | …ay-suppression-remover/src/suppression_remover/core.py | 377 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | …ay-suppression-remover/src/suppression_remover/core.py | 379 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | …ay-suppression-remover/src/suppression_remover/core.py | 542 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | …ay-suppression-remover/src/suppression_remover/core.py | 544 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | …ay-suppression-remover/src/suppression_remover/core.py | 551 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | …ay-suppression-remover/src/suppression_remover/core.py | 553 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | …ay-suppression-remover/src/suppression_remover/core.py | 74 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | …ay-suppression-remover/src/suppression_remover/core.py | 76 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | …ay-suppression-remover/src/suppression_remover/core.py | 101 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | …ay-suppression-remover/src/suppression_remover/core.py | 103 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | …ay-suppression-remover/src/suppression_remover/core.py | 133 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | …ay-suppression-remover/src/suppression_remover/core.py | 135 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | …ay-suppression-remover/src/suppression_remover/core.py | 455 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | …ay-suppression-remover/src/suppression_remover/core.py | 457 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | …ay-suppression-remover/src/suppression_remover/core.py | 610 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | …ay-suppression-remover/src/suppression_remover/core.py | 612 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | …ay-suppression-remover/src/suppression_remover/core.py | 638 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | …ay-suppression-remover/src/suppression_remover/core.py | 640 | # --------------------------------------------------------------------------- | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | …st/java/com/uber/nullaway/TypeUseAnnotationsTests.java | 0 | package com.uber; import java.lang.annotation.elementtype; import java.lang.annotation.target; @target({elementtype.meth | STRING |
| HIGH | …away/src/test/java/com/uber/nullaway/VarargsTests.java | 0 | package com.uber; import java.lang.annotation.elementtype; import java.lang.annotation.target; @target({elementtype.meth | STRING |
| HIGH | …llaway/src/test/java/com/uber/nullaway/ArrayTests.java | 0 | package com.uber; import java.lang.annotation.elementtype; import java.lang.annotation.target; @target({elementtype.meth | STRING |
| HIGH | …ava/com/uber/nullaway/jspecify/JSpecifyArrayTests.java | 0 | package com.uber; import java.lang.annotation.elementtype; import java.lang.annotation.target; @target({elementtype.meth | STRING |
| HIGH | …a/com/uber/nullaway/jspecify/JSpecifyVarargsTests.java | 0 | package com.uber; import java.lang.annotation.elementtype; import java.lang.annotation.target; @target({elementtype.meth | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …ay-suppression-remover/tests/test_file_modification.py | 1 | # Copyright (c) 2026 Uber Technologies, Inc. | COMMENT |
| LOW | scripts/nullaway-suppression-remover/tests/__init__.py | 1 | # Copyright (c) 2026 Uber Technologies, Inc. | COMMENT |
| LOW | …ay-suppression-remover/tests/test_project_and_build.py | 1 | # Copyright (c) 2026 Uber Technologies, Inc. | COMMENT |
| LOW | …-suppression-remover/tests/test_build_error_parsing.py | 1 | # Copyright (c) 2026 Uber Technologies, Inc. | COMMENT |
| LOW | …ullaway-suppression-remover/tests/test_line_mapping.py | 1 | # Copyright (c) 2026 Uber Technologies, Inc. | COMMENT |
| LOW | …llaway-suppression-remover/tests/test_orchestration.py | 1 | # Copyright (c) 2026 Uber Technologies, Inc. | COMMENT |
| LOW | scripts/nullaway-suppression-remover/tests/test_cli.py | 1 | # Copyright (c) 2026 Uber Technologies, Inc. | COMMENT |
| LOW | …y-suppression-remover/tests/test_annotation_parsing.py | 1 | # Copyright (c) 2026 Uber Technologies, Inc. | COMMENT |
| LOW | …laway-suppression-remover/tests/test_apply_removals.py | 1 | # Copyright (c) 2026 Uber Technologies, Inc. | COMMENT |
| LOW | …uppression-remover/src/suppression_remover/__init__.py | 1 | # Copyright (c) 2026 Uber Technologies, Inc. | COMMENT |
| LOW | …ay-suppression-remover/src/suppression_remover/core.py | 1 | # Copyright (c) 2026 Uber Technologies, Inc. | COMMENT |
| LOW | …way-suppression-remover/src/suppression_remover/cli.py | 1 | # Copyright (c) 2026 Uber Technologies, Inc. | COMMENT |
| LOW | .github/workflows/renovate-config-lint.yml | 101 | # global config and accepts options a repository config may not carry, such as onboarding. | COMMENT |
| LOW | …ava/com/uber/nullaway/jspecify/JSpecifyArrayTests.java | 541 | @Nullable Integer[][] nullableElems2D, | COMMENT |
| LOW | …away/jspecify/GenericInferenceErrorReportingTests.java | 41 | import org.jspecify.annotations.Nullable; | COMMENT |
| LOW | …away/jspecify/GenericInferenceErrorReportingTests.java | 81 | // padding so that a misattributed diagnostic lands on an existing line (4) | COMMENT |
| LOW | nullaway/src/main/java/com/uber/nullaway/NullAway.java | 1941 | handler.onMatchCompilationUnit(this, tree, stateForNewCompilationUnit); | COMMENT |
| LOW | …m/uber/nullaway/handlers/contract/ContractHandler.java | 361 | // '@Contract("null -> true") boolean func(@Nullable Object v)' | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | …ay-suppression-remover/src/suppression_remover/core.py | 717 | # Step 1: Discover source files. | COMMENT |
| LOW⚡ | …ay-suppression-remover/src/suppression_remover/core.py | 724 | # Step 2: Locate all @SuppressWarnings(checker) annotations. | COMMENT |
| LOW⚡ | …ay-suppression-remover/src/suppression_remover/core.py | 759 | # Step 4: Build with all suppressions gone. | COMMENT |
| LOW⚡ | …ay-suppression-remover/src/suppression_remover/core.py | 766 | # Step 5: Map each error back to the responsible annotation. | COMMENT |
| LOW | …ay-suppression-remover/src/suppression_remover/core.py | 742 | # Step 3: Save originals; strip checker from ALL annotations (pass 1). | COMMENT |
| LOW | nullaway/src/main/java/com/uber/nullaway/NullAway.java | 907 | // For a varargs position, we need to check if the array itself is @Nullable | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | scripts/convert_line_helper_textblocks.py | 22 | CODE | |
| LOW | scripts/convert_line_helper_textblocks.py | 71 | CODE | |
| LOW | scripts/convert_line_helper_textblocks.py | 143 | CODE | |
| LOW | …llaway-suppression-remover/tests/test_orchestration.py | 402 | CODE | |
| LOW | scripts/nullaway-suppression-remover/tests/test_cli.py | 116 | CODE | |
| LOW | …ay-suppression-remover/src/suppression_remover/core.py | 217 | CODE | |
| LOW | …ay-suppression-remover/src/suppression_remover/core.py | 382 | CODE | |
| LOW | …ay-suppression-remover/src/suppression_remover/core.py | 645 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | …ay-suppression-remover/src/suppression_remover/core.py | 717 | # Step 1: Discover source files. | COMMENT |
| LOW⚡ | …ay-suppression-remover/src/suppression_remover/core.py | 724 | # Step 2: Locate all @SuppressWarnings(checker) annotations. | COMMENT |
| LOW⚡ | …ay-suppression-remover/src/suppression_remover/core.py | 759 | # Step 4: Build with all suppressions gone. | COMMENT |
| LOW⚡ | …ay-suppression-remover/src/suppression_remover/core.py | 766 | # Step 5: Map each error back to the responsible annotation. | COMMENT |
| LOW | …ay-suppression-remover/src/suppression_remover/core.py | 742 | # Step 3: Save originals; strip checker from ALL annotations (pass 1). | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | .github/workflows/jmh-benchmark.yml | 57 | - name: Formatting Benchmark # Create a text file containing the benchmark results | CODE |
| MEDIUM | .github/workflows/gcloud_ssh.sh | 7 | # Define the variables for Google Cloud project, zone, username, and instance | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | …java/com/uber/nullaway/jarinfer/BytecodeAnnotator.java | 251 | // was SHA-256. Eventually we may need a more robust solution for other digest algorithms. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | scripts/convert_line_helper_textblocks.py | 13 | CODE | |
| LOW | …y-suppression-remover/tests/test_annotation_parsing.py | 25 | CODE |