AI Slop Code Risk Monitor

meta/redex

SlopCodeMonitor badge for meta/redex Adjusted legacy signal; badge bands: 25 / 50 / 75 (different from dashboard bands).

A bytecode optimizer for Android apps

2.2 Low pattern signal View on GitHub

Open-Source Code Quality, Security and Technical Debt Review

This report summarizes scanner evidence for meta/redex, a C++ project with 6,318 GitHub stars. SynthScan examined 568,238 lines of code across 2131 source files, recording 1072 pattern matches distributed across 18 syntactic categories. The legacy adjusted pattern signal is 2.2 (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.

2.2
Adjusted Signal
2.2
Raw Pattern Score
100%
Time Factor
2026-10-31
Last Push
6.3K
Stars
C++
Language
568.2K
Lines of Code
2.1K
Files
1.1K
Pattern Hits
2026-10-31
Scan Date
0.00
HC Hit Rate

Risk Review · Payload v1

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.

Cognitive Ownership Risk 8.7/100 · LOW

Can maintainers explain intent, assumptions, and trade-offs? 960 finding(s).

Hallucinated Dependency & Supply Chain Risk 0.7/100 · LOW

Are imports declared and package/API names verified? 42 finding(s).

Agent Over-Engineering Ratio 2.1/100 · LOW

Are wrappers, guards, and repeated structures necessary? 173 finding(s).

PR Review Velocity Impact 10.4/100 · LOW

Which changes need focused human review? 1072 finding(s).

What These Metrics Mean

Adjusted Signal
Legacy pattern score normalized per 1,000 scanned lines and multiplied by the repository-level time factor. It is not an estimate of AI authorship.
Raw Pattern Score
Sum of severity- and context-weighted pattern findings before applying the time factor.
Time Factor
A coarse multiplier based on repository last-push metadata. It does not identify when individual code was written.
Pattern Hits
Count of configured pattern findings. Review each location and surrounding code before acting.
HC Hit Rate
High- and critical-severity findings per scanned file. Severity is a configured detector weight, not proof of a vulnerability or authorship.
Lines / Files
Scan coverage denominators used by the legacy normalized score.

Pattern-Signal History

Run additional scans to build a history of the legacy pattern signal. Score changes are not a measure of AI adoption or code quality.

No multi-scan history yet — run the scanner again to build trend data.

Severity Breakdown

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.

CRITICAL 3HIGH 7MEDIUM 60LOW 1002

Directory Score Breakdown

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.

Pattern Findings

The scanner identified 1072 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.

Over-Commented Block703 hits · 702 pts
SeverityFileLineSnippetContext
LOWsetup_oss_toolchain.sh1#!/usr/bin/env bashCOMMENT
LOWlibredex/ProguardMap.cpp1/*COMMENT
LOWlibredex/IRAssembler.cpp1/*COMMENT
LOWlibredex/ReferencedState.h41 // Whether it is referenced from an XML layout.COMMENT
LOWlibredex/ReferencedState.h101 // m_force_rename and m_dont_rename should be set during evaluatingCOMMENT
LOWlibredex/DexHasher.cpp1/*COMMENT
LOWlibredex/ProguardMatcher.cpp1/*COMMENT
LOWlibredex/GraphVisualizer.cpp21#include "IRCode.h"COMMENT
LOWlibredex/GraphVisualizer.cpp41// begin_compilationCOMMENT
LOWlibredex/GraphVisualizer.cpp61// end_statesCOMMENT
LOWlibredex/VirtualScopes.cpp1/*COMMENT
LOWlibredex/VirtualScopes.cpp101 return true;COMMENT
LOWlibredex/VirtualScopes.cpp261COMMENT
LOWlibredex/RedexResources.h1/*COMMENT
LOWlibredex/ProguardParser.cpp1/*COMMENT
LOWlibredex/FrequentlyUsedPointersCache.h61#undef STORE_TYPECOMMENT
LOWlibredex/RedexResources.cpp1/*COMMENT
LOWlibredex/RedexResources.cpp21COMMENT
LOWlibredex/Walkers.h1/*COMMENT
LOWlibredex/DexClass.cpp1/*COMMENT
LOWlibredex/DexClass.cpp21#include "DexMemberRefs.h"COMMENT
LOWlibredex/Debug.h21#elseCOMMENT
LOWlibredex/Debug.h61 ((cond) ? static_cast<void>(0) : ((fail), static_cast<void>(0)))COMMENT
LOWlibredex/MethodOverrideGraph.cpp1/*COMMENT
LOWlibredex/MethodOverrideGraph.cpp221 // will not resolve to the subinterface's method at runtime, but theseCOMMENT
LOWlibredex/MethodOverrideGraph.cpp261COMMENT
LOWlibredex/MethodOverrideGraph.cpp281 // m_scope (internal) classes. Restricting to m_scope alone missesCOMMENT
LOWlibredex/MethodOverrideGraph.cpp361 // re-declares a method). We intentionally call create_miranda_forCOMMENT
LOWlibredex/DexVt.cpp1/*COMMENT
LOWlibredex/DexVt.cpp21#include <memory>COMMENT
LOWlibredex/DexVt.cpp41#include "IRList.h"COMMENT
LOWlibredex/DexVt.cpp461 capture_loops(*cfg, &rec);COMMENT
LOWlibredex/BaselineProfile.h41COMMENT
LOWlibredex/BaselineProfile.h61COMMENT
LOWlibredex/BaselineProfile.h101// Whether the profile flags ask dex2oat to compile this entry:COMMENT
LOWlibredex/BaselineProfile.h121 // Methods the caller's exclusion set kept out of the candidate pool.COMMENT
LOWlibredex/IODIMetadata.cpp61 std::string& storage = base_name;COMMENT
LOWlibredex/Armv7JitLoopChecker.h21} // namespace cfgCOMMENT
LOWlibredex/SourceBlocksViolations.cpp1/*COMMENT
LOWlibredex/SourceBlocksViolations.cpp21COMMENT
LOWlibredex/SourceBlocksViolations.cpp221// `dom < block` iff `dom == 0 && block == 1`). The equivalence to the oldCOMMENT
LOWlibredex/SourceBlocksViolations.cpp521 summed_values[i] += first_sb_pred->get_val(i).value_or(0);COMMENT
LOWlibredex/DexOutput.h1/*COMMENT
LOWlibredex/DexPosition.cpp1/*COMMENT
LOWlibredex/DexPosition.cpp221 const auto* unknown_source_string = DexString::make_string("UnknownSource");COMMENT
LOWlibredex/DexPosition.cpp281 add_position(case_pos);COMMENT
LOWlibredex/Reachability.cpp1/*COMMENT
LOWlibredex/BundleResources.cpp1/*COMMENT
LOWlibredex/BundleResources.cpp21#include <string>COMMENT
LOWlibredex/MethodProfiles.cpp1121 if (a == COLD_START) {COMMENT
LOWlibredex/DexUtil.cpp1/*COMMENT
LOWlibredex/IRList.h1/*COMMENT
LOWlibredex/DexAssessments.cpp1/*COMMENT
LOWlibredex/DexOutput.cpp1/*COMMENT
LOWlibredex/DexOutput.cpp21#include <stdlib.h>COMMENT
LOWlibredex/DexOutput.cpp41#include "DexInstruction.h"COMMENT
LOWlibredex/DexOutput.cpp561COMMENT
LOWlibredex/Trace.cpp1/*COMMENT
LOWlibredex/ClassOrderSample.h21// APK, so that two builds' placements can be compared per dex-ordering regime.COMMENT
LOWlibredex/ClassOrderSample.h41namespace class_order_sample {COMMENT
643 more matches not shown…
Hyper-Verbose Identifiers103 hits · 92 pts
SeverityFileLineSnippetContext
LOWredex.py151def add_extra_environment_args(env: typing.Dict[str, str]) -> None:CODE
LOWredex.py556def align_and_sign_output_apk(CODE
LOWredex.py967def _has_android_library_jars(pg_file: str) -> bool:STRING
LOWredex.py1055def _check_shrinker_heuristics(args: argparse.Namespace) -> None:STRING
LOWredex.py1108def _handle_baseline_profiles(args: argparse.Namespace) -> None:STRING
LOWredex.py1116def _get_baseline_profile_interactions(STRING
LOWredex.py1232def _handle_class_frequencies(args: argparse.Namespace) -> None:STRING
LOWtools/python/dex.py381 def find_encoded_method_by_code_off(self, code_off):CODE
LOWtools/python/dex.py1279 def get_internal_pretty_method_str_rep(self):CODE
LOWtools/python/dex.py1427 def check_debug_info_encoding(self):CODE
LOWtools/python/dex.py1770 def demangle_class_method_name(self, cls_mangled, method_name):CODE
LOWtools/python/dex.py1791 def get_debug_info_items_and_total_size(self):CODE
LOWtools/python/dex.py1984 def find_method_id_by_code_offset(self, code_off):CODE
LOWtools/python/dex.py2078 def get_class_def_index_from_offset(self, class_def_offset):CODE
LOWtools/python/dex.py2085 def get_code_item_index_from_code_off(self, code_off):CODE
LOWtools/python/dex.py2099 def find_method_from_code_off(self, code_off):CODE
LOWtools/python/dex.py2182 def find_class_def_by_type_index(self, class_idx):CODE
LOWtools/python/dex.py2374def get_signed_hex_offset_as_str(signed_offset, width):CODE
LOWtools/python/block_profile_to_lines.py235 def get_unmatched_profile_methods(self) -> list[str]:CODE
LOWtools/python/file_extract.py396 def get_fixed_length_c_string(CODE
LOWtools/python/pgi/analyze_pgi_logs.py52def _parse_raw_method_data_at_inline(method_name, arr):CODE
LOWtools/python/symbolicator/iodi.py60 def map_iodi_no_debug_to_mappings(self, debug_line_map, class_name, method_name):CODE
LOWtools/callgraph-analysis/corelib/loader.py79 def get_nodes_in_class_method(self, class_name, method_name):CODE
LOWtools/reachability-analysis/as_hprof.py336 def reserve_reachable_type_object_ids(CODE
LOWtools/reachability-analysis/as_hprof.py390 def write_reachable_type_objects(CODE
LOWtools/reachability-analysis/as_hprof.py479 def write_reachability_object_class(self, class_name: str) -> ClassId:CODE
LOWtools/reachability-analysis/as_hprof.py498 def write_reachability_instance(CODE
LOWtools/reachability-analysis/as_hprof.py619 def write_reachability_object_class(self, class_name: str) -> ClassId:CODE
LOWtools/reachability-analysis/as_hprof.py639 def write_reachability_instance(CODE
LOWtools/reachability-analysis/test/test_sqlite_export.py18 def test_exports_faithful_graph_with_named_edge_direction(self):CODE
LOWtools/reachability-analysis/test/test_sqlite_export.py131 def test_materializes_logical_dominator_tree_and_omits_rootless_nodes(self):CODE
LOWtools/reachability-analysis/test/test_sqlite_export.py188 def test_refuses_to_overwrite_output(self):CODE
LOWtools/reachability-analysis/test/test_sqlite_export.py194 def test_exports_new_marker_edges_in_retainer_direction(self):CODE
LOW…ols/reachability-analysis/test/test_deserialization.py49 def test_reachability_graph_dump_round_trip(self):CODE
LOW…ols/reachability-analysis/test/test_deserialization.py82 def test_dump_preserves_duplicate_node_records(self):CODE
LOW…ols/reachability-analysis/test/test_deserialization.py114 def test_get_node_prefers_class_over_annotation(self):CODE
LOW…ols/reachability-analysis/test/test_deserialization.py123 def test_method_override_graph(self):CODE
LOWtools/reachability-analysis/test/test_analysis.py25 def test_group_by_common_keys(self):CODE
LOWtools/reachability-analysis/test/test_analysis.py62 def test_group_members_by_class(self):CODE
LOWtools/reachability-analysis/test/test_analysis.py74 def test_get_dominated_handles_a_deep_graph(self):CODE
LOWtools/reachability-analysis/test/test_analysis.py90 def test_get_dominators_on_linear_chain(self):CODE
LOWtools/reachability-analysis/test/test_analysis.py101 def test_get_dominators_keeps_only_shared_nodes_across_roots(self):CODE
LOWtools/reachability-analysis/test/test_analysis.py118 def test_get_dominators_handles_a_reachable_cycle(self):CODE
LOWtools/reachability-analysis/test/test_analysis.py134 def test_get_dominators_rejects_a_target_unreachable_from_roots(self):CODE
LOWtools/reachability-analysis/test/test_diff.py23 def test_keeps_rooted_ancestors_and_descendants_of_new_nodes(self):CODE
LOWtools/reachability-analysis/test/test_diff.py64 def test_excludes_predecessors_without_a_path_from_a_root(self):CODE
LOWtools/reachability-analysis/test/test_diff.py92 def test_duplicate_labels_contribute_all_edges(self):CODE
LOWtools/reachability-analysis/test/test_diff.py113 def test_empty_diff_produces_empty_graph(self):CODE
LOW⚡tools/reachability-analysis/test/test_graph_query.py183 def test_neighbors_resolves_annotation_names(self):CODE
LOW⚡tools/reachability-analysis/test/test_graph_query.py191 def test_table_format_and_missing_node_error(self):CODE
LOW⚡tools/reachability-analysis/test/test_graph_query.py201 def test_neighbors_disambiguates_class_and_annotation_names(self):CODE
LOWtools/reachability-analysis/test/test_graph_query.py64 def test_roots_filters_by_kind_and_limit(self):CODE
LOWtools/reachability-analysis/test/test_graph_query.py71 def test_roots_supports_csv_and_table_output(self):CODE
LOWtools/reachability-analysis/test/test_graph_query.py83 def test_roots_collapse_duplicate_logical_nodes(self):CODE
LOWtools/reachability-analysis/test/test_graph_query.py106 def test_rejects_invalid_catalog_metadata(self):CODE
LOWtools/reachability-analysis/test/test_graph_query.py123 def test_reports_catalog_errors_without_a_traceback(self):CODE
LOWtools/reachability-analysis/test/test_graph_query.py143 def test_help_exposes_only_sqlite_input(self):CODE
LOWtools/reachability-analysis/test/test_graph_query.py154 def test_semantic_roots_resolves_seed_reasons_and_excludes_non_program_nodes(CODE
LOWtools/reachability-analysis/test/test_graph_query.py167 def test_neighbors_labels_both_edge_directions(self):CODE
LOWtools/reachability-analysis/test/test_graph_query.py237 def test_path_follows_retainer_to_retained(self):CODE
43 more matches not shown…
Decorative Section Separators40 hits · 88 pts
SeverityFileLineSnippetContext
MEDIUMtools/python/dex.py38# ----------------------------------------------------------------------COMMENT
MEDIUMtools/python/dex.py40# ----------------------------------------------------------------------COMMENT
MEDIUMtools/python/dex.py232# ----------------------------------------------------------------------COMMENT
MEDIUMtools/python/dex.py234# ----------------------------------------------------------------------COMMENT
MEDIUMtools/python/dex.py260# ----------------------------------------------------------------------COMMENT
MEDIUMtools/python/dex.py262# ----------------------------------------------------------------------COMMENT
MEDIUMtools/python/dex.py291# ----------------------------------------------------------------------COMMENT
MEDIUMtools/python/dex.py293# ----------------------------------------------------------------------COMMENT
MEDIUMtools/python/dex.py341# ----------------------------------------------------------------------COMMENT
MEDIUMtools/python/dex.py343# ----------------------------------------------------------------------COMMENT
MEDIUMtools/python/dex.py405# ----------------------------------------------------------------------COMMENT
MEDIUMtools/python/dex.py407# ----------------------------------------------------------------------COMMENT
MEDIUMtools/python/dex.py424# ----------------------------------------------------------------------COMMENT
MEDIUMtools/python/dex.py426# ----------------------------------------------------------------------COMMENT
MEDIUMtools/python/dex.py440# ----------------------------------------------------------------------COMMENT
MEDIUMtools/python/dex.py442# ----------------------------------------------------------------------COMMENT
MEDIUMtools/python/dex.py469# ----------------------------------------------------------------------COMMENT
MEDIUMtools/python/dex.py471# ----------------------------------------------------------------------COMMENT
MEDIUMtools/python/dex.py797# ----------------------------------------------------------------------COMMENT
MEDIUMtools/python/dex.py799# ----------------------------------------------------------------------COMMENT
MEDIUMtools/python/dex.py919# ----------------------------------------------------------------------COMMENT
MEDIUMtools/python/dex.py921# ----------------------------------------------------------------------COMMENT
MEDIUMtools/python/dex.py941# ----------------------------------------------------------------------COMMENT
MEDIUMtools/python/dex.py943# ----------------------------------------------------------------------COMMENT
MEDIUMtools/python/dex.py964# ----------------------------------------------------------------------COMMENT
MEDIUMtools/python/dex.py966# ----------------------------------------------------------------------COMMENT
MEDIUMtools/python/dex.py1005# ----------------------------------------------------------------------COMMENT
MEDIUMtools/python/dex.py1007# ----------------------------------------------------------------------COMMENT
MEDIUMtools/python/dex.py1028# ----------------------------------------------------------------------COMMENT
MEDIUMtools/python/dex.py1030# ----------------------------------------------------------------------COMMENT
MEDIUMtools/python/dex.py1046# ----------------------------------------------------------------------COMMENT
MEDIUMtools/python/dex.py1048# ----------------------------------------------------------------------COMMENT
MEDIUMtools/python/dex.py1063# ----------------------------------------------------------------------COMMENT
MEDIUMtools/python/dex.py1065# ----------------------------------------------------------------------COMMENT
MEDIUMtools/python/dex.py1086# ----------------------------------------------------------------------COMMENT
MEDIUMtools/python/dex.py1088# ----------------------------------------------------------------------COMMENT
MEDIUMtools/python/dex.py1119# ----------------------------------------------------------------------COMMENT
MEDIUMtools/python/dex.py1121# ----------------------------------------------------------------------COMMENT
MEDIUMtools/python/dex.py1137# ----------------------------------------------------------------------COMMENT
MEDIUMtools/python/dex.py1139# ----------------------------------------------------------------------COMMENT
Verbosity Indicators38 hits · 70 pts
SeverityFileLineSnippetContext
LOWtools/arsc/ArscStats.cpp450 // Step 1: parse the string pools and build up a vector of idx -> vector ofCOMMENT
LOW⚡sparta/rust/src/wpo.rs407 // Step 1: construct auxilary data structures, includingCOMMENT
LOW⚡sparta/rust/src/wpo.rs412 // Step 2: start constructing WPO.COMMENT
LOW⚡opt/clinit-batching/EarlyClassLoadsAnalysis.cpp292 // Step 1: Find Application and AppComponentFactory classes from manifestCOMMENT
LOW⚡opt/clinit-batching/EarlyClassLoadsAnalysis.cpp300 // Step 2: Collect entry point methods in actual invocation order.COMMENT
LOWopt/clinit-batching/EarlyClassLoadsAnalysis.cpp324 // Step 3: Walk callgraph from entry pointsCOMMENT
LOW⚡opt/clinit-batching/ClinitBatchingPass.cpp751 // Step 3: Add the new method to the classCOMMENT
LOW⚡opt/clinit-batching/ClinitBatchingPass.cpp754 // Step 4: Derive stats for the new method from the original clinitCOMMENT
LOW⚡opt/clinit-batching/ClinitBatchingPass.cpp757 // Step 5: Remove the original clinit, making the class triviallyCOMMENT
LOW⚡opt/clinit-batching/ClinitBatchingPass.cpp904 // Step 2: Identify candidate clinits based on baseline profileCOMMENT
LOW⚡opt/clinit-batching/ClinitBatchingPass.cpp907 // Step 3: Filter out early loaded classes from candidatesCOMMENT
LOW⚡opt/clinit-batching/ClinitBatchingPass.cpp1063 // Step 5: Build dependency graph and topological sortCOMMENT
LOW⚡opt/clinit-batching/ClinitBatchingPass.cpp1068 // Step 6: Transform clinits in dependency orderCOMMENT
LOW⚡opt/clinit-batching/ClinitBatchingPass.cpp1072 // Step 7: Generate orchestrator method body with invoke-static callsCOMMENT
LOWopt/clinit-batching/ClinitBatchingPass.cpp703 // Step 1: Remove ACC_FINAL from static fields being writtenCOMMENT
LOWopt/clinit-batching/ClinitBatchingPass.cpp725 // Step 2: Create new __initStatics$<ClassName>() method with clinit bodyCOMMENT
LOWopt/clinit-batching/ClinitBatchingPass.cpp874 // Step 1: Run early class loads analysis to find classes loaded beforeCOMMENT
LOWopt/clinit-batching/ClinitBatchingPass.cpp928 // Step 4: Safety analysis using InitClassesWithSideEffects as the baseCOMMENT
LOWopt/instrument/BlockInstrument.cpp1236 // Step 1: Get sorted basic blocks to instrument with their information.COMMENT
LOWopt/instrument/BlockInstrument.cpp1252 // Step 2: Fill in some info eagerly. This is necessary as later steps may beCOMMENT
LOWopt/instrument/BlockInstrument.cpp1288 // Step 3: Insert onMethodBegin to track method execution, and bit-vectorCOMMENT
LOWopt/instrument/BlockInstrument.cpp1305 // Step 4: Insert block coverage update instructions to each blocks.COMMENT
LOWopt/instrument/BlockInstrument.cpp1318 // Step 5: Insert block counting instructions to each loop block thenCOMMENT
LOWopt/instrument/BlockInstrument.cpp1361 // Step 5: Insert onMethodExit in exit block(s) if basic block tracing isCOMMENT
LOWopt/object-escape-analysis/ExpandableMethodParams.cpp136 // We need to check if we don't have too many args that won't fitCOMMENT
LOWopt/kotlin-lambda/KotlinLambdaDeduplicationPass.cpp271 // Step 1: Collect all lambdas and insert their invoke methods.COMMENT
LOWopt/kotlin-lambda/KotlinLambdaDeduplicationPass.cpp304 // Step 2: Check if any duplicate groups exist.COMMENT
LOW⚡opt/kotlin-lambda/KotlinLambdaDeduplicationPass.cpp332 // Step 3: Build a map from lambda types to their dex indices. We pick theCOMMENT
LOW⚡opt/kotlin-lambda/KotlinLambdaDeduplicationPass.cpp340 // Step 4: Process duplicate groups.COMMENT
LOW⚡opt/kotlin-lambda/KotlinLambdaDeduplicationPass.cpp346 // Step 5: Rewrite all usages.COMMENT
LOW⚡…rvice/switch-partitioning/SwitchEquivPrerequisites.cpp18 // Step 1: Gather linear prologue blocks to find the first branch pointCOMMENT
LOW⚡…rvice/switch-partitioning/SwitchEquivPrerequisites.cpp24 // Step 2: Run constant propagation analysisCOMMENT
LOW⚡…rvice/switch-partitioning/SwitchEquivPrerequisites.cpp30 // Step 3: Find the determining register (the one being switched on)COMMENT
LOW⚡…rvice/switch-partitioning/SwitchEquivPrerequisites.cpp39 // Step 4: Get the root branch instructionCOMMENT
LOW⚡…rvice/switch-partitioning/SwitchEquivPrerequisites.cpp49 // Step 5: Construct and return SwitchEquivFinderCOMMENT
LOWservice/class-merging/Model.cpp1116 // Step 1: Find overridden_meth from non-mergeable methodsCOMMENT
LOWservice/class-merging/Model.cpp1133 // Step 2: Build a class->method map for this scope (cached)COMMENT
LOWservice/class-merging/Model.cpp1148 // Step 3: Iterate merger's mergeables and look up their methodsCOMMENT
Structural Annotation Overuse37 hits · 69 pts
SeverityFileLineSnippetContext
LOWtools/arsc/ArscStats.cpp450 // Step 1: parse the string pools and build up a vector of idx -> vector ofCOMMENT
LOW⚡sparta/rust/src/wpo.rs407 // Step 1: construct auxilary data structures, includingCOMMENT
LOW⚡sparta/rust/src/wpo.rs412 // Step 2: start constructing WPO.COMMENT
LOW⚡opt/clinit-batching/EarlyClassLoadsAnalysis.cpp292 // Step 1: Find Application and AppComponentFactory classes from manifestCOMMENT
LOW⚡opt/clinit-batching/EarlyClassLoadsAnalysis.cpp300 // Step 2: Collect entry point methods in actual invocation order.COMMENT
LOWopt/clinit-batching/EarlyClassLoadsAnalysis.cpp324 // Step 3: Walk callgraph from entry pointsCOMMENT
LOW⚡opt/clinit-batching/ClinitBatchingPass.cpp751 // Step 3: Add the new method to the classCOMMENT
LOW⚡opt/clinit-batching/ClinitBatchingPass.cpp754 // Step 4: Derive stats for the new method from the original clinitCOMMENT
LOW⚡opt/clinit-batching/ClinitBatchingPass.cpp757 // Step 5: Remove the original clinit, making the class triviallyCOMMENT
LOW⚡opt/clinit-batching/ClinitBatchingPass.cpp904 // Step 2: Identify candidate clinits based on baseline profileCOMMENT
LOW⚡opt/clinit-batching/ClinitBatchingPass.cpp907 // Step 3: Filter out early loaded classes from candidatesCOMMENT
LOW⚡opt/clinit-batching/ClinitBatchingPass.cpp1063 // Step 5: Build dependency graph and topological sortCOMMENT
LOW⚡opt/clinit-batching/ClinitBatchingPass.cpp1068 // Step 6: Transform clinits in dependency orderCOMMENT
LOW⚡opt/clinit-batching/ClinitBatchingPass.cpp1072 // Step 7: Generate orchestrator method body with invoke-static callsCOMMENT
LOWopt/clinit-batching/ClinitBatchingPass.cpp703 // Step 1: Remove ACC_FINAL from static fields being writtenCOMMENT
LOWopt/clinit-batching/ClinitBatchingPass.cpp725 // Step 2: Create new __initStatics$<ClassName>() method with clinit bodyCOMMENT
LOWopt/clinit-batching/ClinitBatchingPass.cpp874 // Step 1: Run early class loads analysis to find classes loaded beforeCOMMENT
LOWopt/clinit-batching/ClinitBatchingPass.cpp928 // Step 4: Safety analysis using InitClassesWithSideEffects as the baseCOMMENT
LOWopt/instrument/BlockInstrument.cpp1236 // Step 1: Get sorted basic blocks to instrument with their information.COMMENT
LOWopt/instrument/BlockInstrument.cpp1252 // Step 2: Fill in some info eagerly. This is necessary as later steps may beCOMMENT
LOWopt/instrument/BlockInstrument.cpp1288 // Step 3: Insert onMethodBegin to track method execution, and bit-vectorCOMMENT
LOWopt/instrument/BlockInstrument.cpp1305 // Step 4: Insert block coverage update instructions to each blocks.COMMENT
LOWopt/instrument/BlockInstrument.cpp1318 // Step 5: Insert block counting instructions to each loop block thenCOMMENT
LOWopt/instrument/BlockInstrument.cpp1361 // Step 5: Insert onMethodExit in exit block(s) if basic block tracing isCOMMENT
LOWopt/kotlin-lambda/KotlinLambdaDeduplicationPass.cpp271 // Step 1: Collect all lambdas and insert their invoke methods.COMMENT
LOWopt/kotlin-lambda/KotlinLambdaDeduplicationPass.cpp304 // Step 2: Check if any duplicate groups exist.COMMENT
LOW⚡opt/kotlin-lambda/KotlinLambdaDeduplicationPass.cpp332 // Step 3: Build a map from lambda types to their dex indices. We pick theCOMMENT
LOW⚡opt/kotlin-lambda/KotlinLambdaDeduplicationPass.cpp340 // Step 4: Process duplicate groups.COMMENT
LOW⚡opt/kotlin-lambda/KotlinLambdaDeduplicationPass.cpp346 // Step 5: Rewrite all usages.COMMENT
LOW⚡…rvice/switch-partitioning/SwitchEquivPrerequisites.cpp18 // Step 1: Gather linear prologue blocks to find the first branch pointCOMMENT
LOW⚡…rvice/switch-partitioning/SwitchEquivPrerequisites.cpp24 // Step 2: Run constant propagation analysisCOMMENT
LOW⚡…rvice/switch-partitioning/SwitchEquivPrerequisites.cpp30 // Step 3: Find the determining register (the one being switched on)COMMENT
LOW⚡…rvice/switch-partitioning/SwitchEquivPrerequisites.cpp39 // Step 4: Get the root branch instructionCOMMENT
LOW⚡…rvice/switch-partitioning/SwitchEquivPrerequisites.cpp49 // Step 5: Construct and return SwitchEquivFinderCOMMENT
LOWservice/class-merging/Model.cpp1116 // Step 1: Find overridden_meth from non-mergeable methodsCOMMENT
LOWservice/class-merging/Model.cpp1133 // Step 2: Build a class->method map for this scope (cached)COMMENT
LOWservice/class-merging/Model.cpp1148 // Step 3: Iterate merger's mergeables and look up their methodsCOMMENT
Deep Nesting62 hits · 54 pts
SeverityFileLineSnippetContext
LOWredex.py74CODE
LOWredex.py253CODE
LOWredex.py967CODE
LOWredex.py1734CODE
LOWredex.py366CODE
LOWgen_packed_apilevels.py54CODE
LOWtools/python/dex.py4458CODE
LOWtools/python/dex.py579CODE
LOWtools/python/dex.py660CODE
LOWtools/python/dex.py722CODE
LOWtools/python/dex.py859CODE
LOWtools/python/dex.py1156CODE
LOWtools/python/dex.py1943CODE
LOWtools/python/dex.py1965CODE
LOWtools/python/dex.py1992CODE
LOWtools/python/dex.py2053CODE
LOWtools/python/dex.py2279CODE
LOWtools/python/dex.py2432CODE
LOWtools/python/dex.py2463CODE
LOWtools/python/dex.py2475CODE
LOWtools/python/dex.py2496CODE
LOWtools/python/dex.py4695CODE
LOWtools/python/block_profile_to_lines.py180CODE
LOWtools/python/file_extract.py125CODE
LOWtools/python/file_extract.py264CODE
LOWtools/python/file_extract.py396CODE
LOWtools/python/file_extract.py838CODE
LOWtools/python/file_extract.py941CODE
LOWtools/python/file_extract.py972CODE
LOWtools/python/file_extract.py1079CODE
LOWtools/python/pgi/analyze_pgi_logs.py166CODE
LOWtools/python/symbolicator/logcat.py71CODE
LOWtools/python/symbolicator/debug_line_map.py22CODE
LOWtools/python/symbolicator/debug_line_map.py60CODE
LOWtools/python/symbolicator/dexdump.py46CODE
LOWtools/python/symbolicator/dexdump.py82CODE
LOWtools/python/symbolicator/dexdump.py120CODE
LOWtools/python/symbolicator/symbolicator.py72CODE
LOWtools/reachability-analysis/lib/analysis.py82CODE
LOWtools/reachability-analysis/lib/sqlite_export.py71CODE
LOWtools/reachability-analysis/lib/dominator_tree.py157CODE
LOWtools/reachability-analysis/lib/core.py165CODE
LOWtools/reachability-analysis/lib/core.py349CODE
LOWtools/hprof/dump_classes_from_hprof.py1105CODE
LOWtools/hprof/dump_classes_from_hprof.py1124CODE
LOWtools/hprof/dump_classes_from_hprof.py1194CODE
LOWtools/hprof/dump_classes_from_hprof.py1238CODE
LOWtools/hprof/dump_classes_from_hprof.py127CODE
LOWtools/hprof/dump_classes_from_hprof.py149CODE
LOWtools/hprof/dump_classes_from_hprof.py879CODE
LOWtools/hprof/dump_classes_from_hprof.py962CODE
LOWtools/hprof/dump_classes_from_hprof.py1036CODE
LOWtools/hprof/dump_classes_from_hprof.py1258CODE
LOWpyredex/packer.py300CODE
LOWpyredex/packer.py76CODE
LOWpyredex/unpacker.py708CODE
LOWpyredex/unpacker.py729CODE
LOWpyredex/unpacker.py107CODE
LOWpyredex/unpacker.py839CODE
LOWpyredex/unpacker.py1135CODE
2 more matches not shown…
Unused Imports36 hits · 36 pts
SeverityFileLineSnippetContext
LOWgen_packed_apilevels.py18CODE
LOWgen_simple_module.py17CODE
LOWtools/redex-tool/DexSqlQuery.py7CODE
LOWtools/redex-tool/DexSqlQuery.py7CODE
LOWtools/redex-tool/DexSqlQuery.py7CODE
LOWtools/redex-tool/DexSqlQuery.py7CODE
LOWtools/python/block_profile_to_lines.py23CODE
LOWtools/python/symbolicator/logcat.py6CODE
LOWtools/python/symbolicator/logcat.py6CODE
LOWtools/python/symbolicator/logcat.py6CODE
LOWtools/python/symbolicator/logcat.py6CODE
LOWtools/python/symbolicator/debug_line_map.py6CODE
LOWtools/python/symbolicator/debug_line_map.py6CODE
LOWtools/python/symbolicator/debug_line_map.py6CODE
LOWtools/python/symbolicator/line_unmap.py6CODE
LOWtools/python/symbolicator/line_unmap.py6CODE
LOWtools/python/symbolicator/line_unmap.py6CODE
LOWtools/python/symbolicator/dexdump.py6CODE
LOWtools/python/symbolicator/dexdump.py6CODE
LOWtools/python/symbolicator/dexdump.py6CODE
LOWtools/python/symbolicator/dexdump.py6CODE
LOWtools/python/symbolicator/symbolicator.py7CODE
LOWtools/python/symbolicator/symbolicator.py7CODE
LOWtools/python/symbolicator/symbolicator.py7CODE
LOWtools/python/symbolicator/symbolicator.py7CODE
LOWtools/python/symbolicator/symbol_files.py6CODE
LOWtools/python/symbolicator/symbol_files.py6CODE
LOWtools/python/symbolicator/symbol_files.py6CODE
LOWtools/python/symbolicator/symbol_files.py6CODE
LOWtools/reachability-analysis/diff.py7CODE
LOWtools/reachability-analysis/graph_query.py7CODE
LOWtools/reachability-analysis/lib/reachability_diff.py7CODE
LOWtools/reachability-analysis/lib/analysis.py9CODE
LOWtools/reachability-analysis/lib/sqlite_query.py7CODE
LOWtools/reachability-analysis/lib/dominator_tree.py7CODE
LOWpyredex/__init__.py6CODE
Hallucination Indicators3 hits · 35 pts
SeverityFileLineSnippetContext
CRITICALtools/python/dex.py1280 # What it looks like boolean com.facebook.common.jit.common.JitDisabledChecker.testCompileMethod(int)COMMENT
CRITICALtest/unit/ProguardMapTest.cpp32 "android.support.v7.view.menu.MenuBuilder.getContext():807:807 -> "CODE
CRITICALtest/integ/Propagation.java33 String tag = com.facebook.redextest.Propagation.class.getSimpleName();CODE
AI Slop Vocabulary10 hits · 30 pts
SeverityFileLineSnippetContext
MEDIUMlibredex/IODIMetadata.cpp73 // offsets in stack traces, then we cannot leverage proguard mappings anymore,COMMENT
MEDIUMlibredex/UnknownVirtuals.cpp136 // not exist in the hierarchy known to redex. Essentially the methodCOMMENT
MEDIUMlibredex/AnnotationSignatureParser.cpp47 // can make this more robust in the future.COMMENT
MEDIUMopt/obfuscate/ObfuscateUtils.h812 // Essentially what this does is walks the hierarchy collecting names ofCOMMENT
MEDIUMopt/insert-source-blocks/InsertSourceBlocks.cpp1303 // Absolutely no source file data. :-(COMMENT
MEDIUM…ove-unreachable/TypeAnalysisAwareRemoveUnreachable.cpp139 // Can we leverage exact types?COMMENT
MEDIUM…ove-unreachable/TypeAnalysisAwareRemoveUnreachable.cpp186 // Can we leverage best known approximation?COMMENT
MEDIUMopt/peephole/Peephole.cpp57// This is essentially a string searching problem. We can ideally utilizeCOMMENT
MEDIUMservice/switch-partitioning/StringSwitchFinder.cpp344 // just before it (robust to moves/CSE): replay from the block's entry stateCOMMENT
MEDIUMservice/switch-partitioning/StringSwitchFinder.h345 // is resolved by the constant-propagation fixpoint, so it is robust toCOMMENT
Empty Error Handlers6 hits · 30 pts
SeverityFileLineSnippetContext
HIGHtools/reachability-analysis/lib/sqlite_export.py54except FileNotFoundError:CODE
HIGHpyredex/bintools.py123except (subprocess.CalledProcessError, FileNotFoundError):CODE
HIGHpyredex/bintools.py98except Exception:CODE
HIGHpyredex/bintools.py113except Exception:CODE
HIGHpyredex/logger.py77except KeyError:CODE
HIGHpyredex/utils.py148except BaseException:CODE
Modern Structural Boilerplate11 hits · 14 pts
SeverityFileLineSnippetContext
LOWtools/reachability-analysis/as_hprof.py64 def update_u4(self, offset: int, value: int) -> None:CODE
LOWpyredex/bintools.py72def set_addr2line_path(path: str) -> None:CODE
LOW⚡pyredex/bintools.py344 def set_state(self, new_state: BinaryState) -> None:CODE
LOW⚡pyredex/bintools.py347 def set_started(self, new_proc: PopenType) -> None:CODE
LOW⚡pyredex/bintools.py351 def set_postprocessing(self) -> None:CODE
LOW⚡pyredex/bintools.py354 def set_finished(self) -> None:CODE
LOW⚡pyredex/bintools.py358 def set_proc(self, new_proc: PopenType) -> None:CODE
LOWpyredex/logger.py97def update_trace_file(env: typing.Dict[str, str]) -> None:CODE
LOWpyredex/unpacker.py1129 def set_resource_file_mapping(self, path: str) -> None:CODE
LOW⚡pyredex/utils.py167 def set_omit_sdk_tool_discovery(self) -> None:CODE
LOWpyredex/utils.py317def set_root_dir_for_buck(path: str) -> None:CODE
Dead Code7 hits · 7 pts
SeverityFileLineSnippetContext
MEDIUMtools/python/dex.py4159CODE
MEDIUMtools/python/dex.py4160CODE
MEDIUMtools/python/dex.py4161CODE
MEDIUMtools/python/dex.py4162CODE
MEDIUMtools/python/dex.py4163CODE
MEDIUMtools/python/dex.py4164CODE
MEDIUMtools/python/dex.py4165CODE
Excessive Try-Catch Wrapping6 hits · 6 pts
SeverityFileLineSnippetContext
MEDIUMredex.py1296 print("Error: destination directory already exists!")STRING
MEDIUMredex.py1325 print("Error: output_ir should be a directory")STRING
LOWredex.py1469 except Exception as e:STRING
MEDIUMtools/reachability-analysis/graph_to_sqlite.py38 print("Error: %s" % error, file=sys.stderr)CODE
LOWpyredex/bintools.py98 except Exception:CODE
LOWpyredex/bintools.py113 except Exception:CODE
Example Usage Blocks4 hits · 6 pts
SeverityFileLineSnippetContext
LOWtools/oatmeal/test/commit-test-data.sh9# Usage:COMMENT
LOWtools/oatmeal/test/fetch-test-data.sh9# Usage:COMMENT
LOWtools/oatmeal/test/update-test-data.sh10# Usage:COMMENT
LOWtools/hprof/dump_classes_from_hprof.py8# Example usage:COMMENT
Cross-Language Confusion1 hit · 5 pts
SeverityFileLineSnippetContext
HIGHredex.py125 f.write("cd %s || exit\n" % quote(os.getcwd()))CODE
Redundant / Tautological Comments2 hits · 4 pts
SeverityFileLineSnippetContext
LOWtools/python/file_extract.py890 # Check if this item is just an alignment directive?COMMENT
LOW⚡pyredex/utils.py256 # Set NO_BUCKD to minimize disruption to any currently running buckdCOMMENT
Fake / Example Data2 hits · 2 pts
SeverityFileLineSnippetContext
LOW…st/unit/constant-propagation/StringPropagationTest.cpp275 (const-string "placeholder")CODE
LOW…st/unit/constant-propagation/StringPropagationTest.cpp589 (const-string "placeholder")CODE
Slop Phrases1 hit · 2 pts
SeverityFileLineSnippetContext
LOWservice/switch-partitioning/SwitchEquivFinder.cpp352 // And don't forget to clear out the upper register of wideCOMMENT