🍃 Organic Maps is a free Android & iOS offline maps app for more than 6M travelers, tourists, hikers, and cyclists. It uses crowd-sourced OpenStreetMap data and is developed with love by the community. No ads, no tracking, no data collection, no crapware. Please donate to support the development!
This report summarizes scanner evidence for organicmaps/organicmaps, a C++ project with 15,832 GitHub stars. SynthScan examined 1,260,956 lines of code across 7647 source files, recording 2419 pattern matches distributed across 17 syntactic categories. The legacy adjusted pattern signal is 1.8 (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? 2349 finding(s).
Are imports declared and package/API names verified? 39 finding(s).
Are wrappers, guards, and repeated structures necessary? 298 finding(s).
Which changes need focused human review? 2419 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 2419 distinct pattern matches across 17 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 | defines.hpp | 1 | #pragma once | COMMENT |
| LOW | defines.hpp | 21 | #define WAYS_FILE "ways.dat" | COMMENT |
| LOW | defines.hpp | 41 | #define POSTCODE_POINTS_FILE_TAG "postcode_points" | COMMENT |
| LOW | defines.hpp | 61 | #define ISOLINES_INFO_FILE_TAG "isolines_info" | COMMENT |
| LOW | defines.hpp | 81 | #define COUNTRIES_META_FILE "countries_meta.txt" | COMMENT |
| LOW | defines.hpp | 101 | COMMENT | |
| LOW | defines.hpp | 121 | #define LOCALIZATION_DESCRIPTION_SUFFIX " Description" | COMMENT |
| LOW | private.h | 1 | #pragma once | COMMENT |
| LOW | precompiled_headers.hpp | 1 | #pragma once | COMMENT |
| LOW | precompiled_headers.hpp | 21 | #include <string> | COMMENT |
| LOW | xcode/minizip/mz_config.h | 1 | #ifndef MZ_CONFIG_H | COMMENT |
| LOW | tools/track_analyzing/serialization.hpp | 1 | #pragma once | COMMENT |
| LOW | tools/track_analyzing/track_matcher.hpp | 1 | #pragma once | COMMENT |
| LOW | tools/track_analyzing/log_parser.cpp | 1 | #include "track_analyzing/log_parser.hpp" | COMMENT |
| LOW | tools/track_analyzing/utils.hpp | 1 | #pragma once | COMMENT |
| LOW | tools/track_analyzing/track_archive_reader.cpp | 1 | #include "track_analyzing/track_archive_reader.hpp" | COMMENT |
| LOW | tools/track_analyzing/track_archive_reader.cpp | 61 | /// \brief Parse log records with tracks produced by track_archiver. | COMMENT |
| LOW | …g/track_analyzing_tests/track_archive_reader_tests.cpp | 1 | #include "testing/testing.hpp" | COMMENT |
| LOW | tools/track_analyzing/track_analyzer/cmd_track.cpp | 1 | #include "track_analyzing/track.hpp" | COMMENT |
| LOW | tools/track_analyzing/track_analyzer/utils.cpp | 1 | #include "track_analyzing/track_analyzer/utils.hpp" | COMMENT |
| LOW | tools/track_analyzing/track_analyzer/cmd_tracks.cpp | 1 | #include "track_analyzing/track.hpp" | COMMENT |
| LOW | tools/track_analyzing/track_analyzer/cmd_gpx.cpp | 1 | #include "track_analyzing/track.hpp" | COMMENT |
| LOW | tools/track_analyzing/track_analyzer/cmd_table.cpp | 1 | #include "track_analyzing/track_analyzer/crossroad_checker.hpp" | COMMENT |
| LOW | tools/track_analyzing/track_analyzer/cmd_table.cpp | 21 | #include "indexer/feature_data.hpp" | COMMENT |
| LOW | …ols/track_analyzing/track_analyzer/cmd_balance_csv.hpp | 1 | #pragma once | COMMENT |
| LOW | tools/track_analyzing/track_analyzer/cmd_match.cpp | 1 | #include "track_analyzing/track_analyzer/utils.hpp" | COMMENT |
| LOW | tools/poly_borders/borders_data.cpp | 1 | #include "poly_borders/borders_data.hpp" | COMMENT |
| LOW | tools/poly_borders/help_structures.hpp | 1 | #pragma once | COMMENT |
| LOW | …/poly_borders/poly_borders_tests/mark_points_tests.cpp | 1 | #include "poly_borders/poly_borders_tests/tools.hpp" | COMMENT |
| LOW | tools/python/translate.py | 221 | # "ht", # Haitian Creole | COMMENT |
| LOW | tools/python/translate.py | 241 | # "mai", # Maithili | COMMENT |
| LOW | tools/python/translate.py | 281 | # "tk", # Turkmen | COMMENT |
| LOW | …s/python/maps_generator/var/etc/stats_types_config.txt | 1 | # This file is used to calculate statistics by type. | COMMENT |
| LOW | tools/python/airmaps/sandbox/airmaps/airflow.cfg | 41 | log_processor_filename_template = {{ filename }}.log | COMMENT |
| LOW | tools/python/airmaps/sandbox/airmaps/airflow.cfg | 61 | # their website | COMMENT |
| LOW | tools/python/airmaps/sandbox/airmaps/airflow.cfg | 81 | # no limit will be placed on the total number of concurrent connections. Defaults to 10. | COMMENT |
| LOW | tools/python/airmaps/sandbox/airmaps/airflow.cfg | 281 | # Ldap group filtering requires using the ldap backend | COMMENT |
| LOW | tools/python/airmaps/sandbox/airmaps/airflow.cfg | 361 | # The app name that will be used by celery | COMMENT |
| LOW | tools/python/airmaps/sandbox/airmaps/airflow.cfg | 381 | # the port on which the logs are served. It needs to be unused, and open | COMMENT |
| LOW | tools/python/airmaps/sandbox/airmaps/airflow.cfg | 441 | # http://docs.celeryproject.org/en/latest/userguide/configuration.html#std:setting-broker_transport_options | COMMENT |
| LOW | tools/python/airmaps/sandbox/airmaps/airflow.cfg | 501 | COMMENT | |
| LOW | tools/python/airmaps/sandbox/airmaps/airflow.cfg | 521 | # - complexity of query predicate | COMMENT |
| LOW | tools/python/airmaps/sandbox/airmaps/airflow.cfg | 581 | # 'airflow run <dag_id> <task_id> <execution_date> --local -p <pickle_id>' | COMMENT |
| LOW | tools/python/airmaps/sandbox/airmaps/airflow.cfg | 701 | git_branch = | COMMENT |
| LOW | tools/python/airmaps/sandbox/airmaps/airflow.cfg | 721 | # gitSshKey: <base64_encoded_data> | COMMENT |
| LOW | tools/python/airmaps/sandbox/airmaps/airflow.cfg | 741 | # add `git_sync_credentials_secret = <secret_name>` to your airflow config under the kubernetes section | COMMENT |
| LOW | tools/python/airmaps/sandbox/airmaps/airflow.cfg | 761 | # See the Kubernetes RBAC documentation for more: | COMMENT |
| LOW | tools/python/airmaps/sandbox/airmaps/airflow.cfg | 781 | # config_file = | COMMENT |
| LOW | tools/python/airmaps/sandbox/airmaps/airflow.cfg | 821 | # The Key-value annotations pairs to be given to worker pods. | COMMENT |
| LOW | tools/python/airmaps/sandbox/airmaps/airflow.cfg | 841 | # Secrets in this section are defined as follows | COMMENT |
| LOW | tools/python/airmaps/sandbox/airmaps/airmaps.ini | 41 | [Logging] | COMMENT |
| LOW | tools/python/airmaps/sandbox/airmaps/airmaps.ini | 61 | # POPULARITY_URL: | COMMENT |
| LOW | tools/python/post_generation/hierarchy_to_countries.py | 1 | # Produces countries.json from hierarchy.txt | COMMENT |
| LOW | tools/track_generator/utils.cpp | 1 | #include "track_generator/utils.hpp" | COMMENT |
| LOW | tools/track_generator/utils.cpp | 41 | size_t consecutiveNumber = 1; | COMMENT |
| LOW | tools/unix/version.sh | 1 | #!/bin/bash | COMMENT |
| LOW | tools/unix/update_boost_headers.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | tools/unix/maps/generate_subways.sh | 1 | #!/bin/bash | COMMENT |
| LOW | tools/topography_generator/generator.cpp | 1 | #include "topography_generator/generator.hpp" | COMMENT |
| LOW | tools/openlr/score_candidate_paths_getter.cpp | 1 | #include "openlr/score_candidate_paths_getter.hpp" | COMMENT |
| 1878 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tools/python/translate.py | 438 | def get_supported_categories_txt_languages() -> List[str]: | CODE |
| LOW⚡ | tools/python/test_drape_queue_stress.py | 90 | def test_millisecond_clock_anchor(self): | CODE |
| LOW⚡ | tools/python/test_drape_queue_stress.py | 95 | def test_clock_anchor_android_formats(self): | CODE |
| LOW⚡ | tools/python/test_drape_queue_stress.py | 105 | def test_proc_stat_with_spaces_and_parentheses(self): | CODE |
| LOW⚡ | tools/python/test_drape_queue_stress.py | 110 | def test_disjoint_motion_windows_do_not_create_false_stalls(self): | CODE |
| LOW⚡ | tools/python/test_drape_queue_stress.py | 123 | def test_single_part_snapshot(self): | CODE |
| LOW⚡ | tools/python/test_drape_queue_stress.py | 128 | def test_reassembly_allows_interleaved_renderers(self): | CODE |
| LOW⚡ | tools/python/test_drape_queue_stress.py | 137 | def test_duplicate_conflicting_and_missing_chunks(self): | CODE |
| LOW⚡ | tools/python/test_drape_queue_stress.py | 147 | def test_missing_whole_sample_and_invalid_metadata(self): | CODE |
| LOW⚡ | tools/python/test_drape_queue_stress.py | 180 | def test_complete_capture_passes(self): | CODE |
| LOW⚡ | tools/python/test_drape_queue_stress.py | 187 | def test_host_sleep_invalidates_otherwise_complete_capture(self): | CODE |
| LOW⚡ | tools/python/test_drape_queue_stress.py | 193 | def test_distributed_stress_disables_original_reference_gates(self): | CODE |
| LOW⚡ | tools/python/test_drape_queue_stress.py | 282 | def test_capture_quality_failures_cannot_pass(self): | CODE |
| LOW⚡ | tools/python/test_drape_queue_stress.py | 292 | def test_counter_conservation_and_missing_renderer_fail(self): | CODE |
| LOW⚡ | tools/python/test_drape_queue_stress.py | 298 | def test_stale_queue_tail_fails(self): | CODE |
| LOW⚡ | tools/python/test_drape_queue_stress.py | 302 | def test_sparse_rss_samples_fail(self): | CODE |
| LOW⚡ | tools/python/test_drape_queue_stress.py | 307 | def test_rss_polling_gaps_fail_including_capture_boundaries(self): | CODE |
| LOW⚡ | tools/python/test_drape_queue_stress.py | 316 | def test_app_restart_or_ring_overrun_fails(self): | CODE |
| LOW⚡ | tools/python/test_drape_queue_stress.py | 323 | def test_memory_and_queue_regressions_fail(self): | CODE |
| LOW⚡ | tools/python/test_drape_queue_stress.py | 462 | def test_plain_id_parses_root_and_shell(self): | CODE |
| LOW⚡ | tools/python/test_drape_queue_stress.py | 469 | def test_already_root_does_not_restart_adbd(self): | CODE |
| LOW⚡ | tools/python/test_drape_queue_stress.py | 475 | def test_root_reconnect_waits_past_old_transport(self): | CODE |
| LOW | tools/python/test_drape_queue_stress.py | 39 | def test_random_delays_are_reproducible_and_preserve_viewports(self): | CODE |
| LOW | tools/python/test_drape_queue_stress.py | 54 | def test_limits_use_recorded_batched_reference(self): | CODE |
| LOW | tools/python/test_drape_queue_stress.py | 59 | def test_ready_workload_uses_distinct_map_wide_targets_in_both_phases(self): | CODE |
| LOW | tools/python/test_drape_queue_stress.py | 79 | def test_distributed_stress_preserves_ready_targets_without_barriers(self): | CODE |
| LOW | tools/python/test_drape_queue_stress.py | 204 | def test_random_delays_use_actual_durations_without_reference_gates(self): | CODE |
| LOW | tools/python/test_drape_queue_stress.py | 235 | def test_missing_phase_or_finish_fails(self): | CODE |
| LOW | tools/python/test_drape_queue_stress.py | 255 | def test_ready_throughput_excludes_holds_and_has_no_stress_gates(self): | CODE |
| LOW | tools/python/test_drape_queue_stress.py | 271 | def test_missing_duplicate_failed_or_premature_ready_ack_cannot_pass(self): | CODE |
| LOW | tools/python/test_drape_queue_stress.py | 334 | def test_cpu_and_fps_are_report_only(self): | CODE |
| LOW | tools/python/test_drape_queue_stress.py | 340 | def test_existing_output_never_calls_adb_or_overwrites(self): | CODE |
| LOW | tools/python/test_drape_queue_stress.py | 392 | def test_fresh_apk_and_host_map_replace_benchmark_fixture(self): | CODE |
| LOW | tools/python/test_drape_queue_stress.py | 405 | def test_install_failure_with_zero_or_nonzero_exit_code_stops_setup(self): | CODE |
| LOW | tools/python/test_drape_queue_stress.py | 416 | def test_map_path_comes_from_apk_catalog_and_repository_data(self): | CODE |
| LOW | tools/python/test_drape_queue_stress.py | 430 | def test_missing_or_empty_host_map_fails_before_emulator_access(self): | CODE |
| LOW | tools/python/test_drape_queue_stress.py | 488 | def test_nonrootable_image_fails_explicitly(self): | CODE |
| LOW | tools/python/test_drape_queue_stress.py | 495 | def test_root_timeout_is_bounded(self): | CODE |
| LOW | tools/python/add_string.py | 120 | def remove_regional_duplicates(translations: Dict[str, str]) -> Dict[str, str]: | STRING |
| LOW | tools/python/testlog_to_xml_converter.py | 170 | def check_for_testcase_boundaries(self, line): | CODE |
| LOW⚡ | tools/python/validate_translation_keys_test.py | 40 | def test_strings_bundle_ternary_lines(self): | CODE |
| LOW⚡ | tools/python/validate_translation_keys_test.py | 46 | def test_strings_bundle_literal(self): | CODE |
| LOW⚡ | tools/python/validate_translation_keys_test.py | 52 | def test_strings_bundle_ternary(self): | CODE |
| LOW⚡ | tools/python/validate_translation_keys_test.py | 74 | def test_unrelated_keys_member_is_ignored(self): | CODE |
| LOW⚡ | tools/python/validate_translation_keys_test.py | 78 | def test_unrelated_category_literal_is_ignored(self): | CODE |
| LOW⚡ | tools/python/validate_translation_keys_test.py | 81 | def test_dynamic_key_not_captured(self): | CODE |
| LOW⚡ | tools/python/validate_translation_keys_test.py | 136 | def test_qt_only_reference_needs_no_mobile_tags(self): | CODE |
| LOW⚡ | tools/python/validate_translation_keys_test.py | 140 | def test_qt_reuses_mobile_translation_with_both_tags(self): | CODE |
| LOW⚡ | tools/python/validate_translation_keys_test.py | 147 | def test_qt_reference_requires_qt_tag(self): | CODE |
| LOW⚡ | tools/python/validate_translation_keys_test.py | 153 | def test_shared_core_reference_requires_qt_tag(self): | CODE |
| LOW⚡ | tools/python/validate_translation_keys_test.py | 161 | def test_shared_core_reference_justifies_qt_tag(self): | CODE |
| LOW⚡ | tools/python/validate_translation_keys_test.py | 168 | def test_missing_qt_definition_reports_source_line(self): | CODE |
| LOW⚡ | tools/python/validate_translation_keys_test.py | 178 | def test_unused_qt_definition_is_rejected(self): | CODE |
| LOW⚡ | tools/python/validate_translation_keys_test.py | 184 | def test_qt_reference_does_not_justify_android_tag(self): | CODE |
| LOW⚡ | tools/python/validate_translation_keys_test.py | 191 | def test_qt_reference_does_not_justify_apple_tag(self): | CODE |
| LOW⚡ | tools/python/validate_translation_keys_test.py | 198 | def test_unrelated_tr_call_outside_qt_does_not_keep_key_alive(self): | CODE |
| LOW⚡ | tools/python/validate_translation_keys_test.py | 205 | def test_swift_and_objc_literal(self): | CODE |
| LOW⚡ | tools/python/validate_translation_keys_test.py | 238 | def test_nslocalizedstring_comment_not_captured(self): | CODE |
| LOW⚡ | tools/python/validate_translation_keys_test.py | 244 | def test_url_is_not_an_l_call(self): | CODE |
| LOW⚡ | tools/python/validate_translation_keys_test.py | 249 | def test_r_string_java_kotlin(self): | CODE |
| 207 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tools/python/propagate_ios_l11s.py | 4 | CODE | |
| LOW | tools/python/translate.py | 325 | CODE | |
| LOW | tools/python/translate.py | 360 | CODE | |
| LOW | tools/python/translate.py | 419 | CODE | |
| LOW | tools/python/test_drape_queue_stress.py | 430 | CODE | |
| LOW | tools/python/add_string.py | 36 | CODE | |
| LOW | tools/python/categories_converter.py | 67 | CODE | |
| LOW | tools/python/po_parser.py | 60 | CODE | |
| LOW | tools/python/testlog_to_xml_converter.py | 139 | CODE | |
| LOW | tools/python/mixed_to_geojson.py | 41 | CODE | |
| LOW | tools/python/validate_translation_keys_test.py | 86 | CODE | |
| LOW | tools/python/validate_translation_keys_test.py | 105 | CODE | |
| LOW | tools/python/create_transformed_svg.py | 100 | CODE | |
| LOW | tools/python/sort_categories.py | 14 | CODE | |
| LOW | tools/python/generate_taginfo.py | 22 | CODE | |
| LOW | tools/python/google_maps_bookmarks.py | 137 | CODE | |
| LOW | tools/python/google_maps_bookmarks.py | 197 | CODE | |
| LOW | tools/python/taxi_csv_to_json.py | 11 | CODE | |
| LOW | tools/python/drape_queue_stress.py | 325 | CODE | |
| LOW | tools/python/drape_queue_stress.py | 597 | CODE | |
| LOW | tools/python/drape_queue_stress.py | 922 | CODE | |
| LOW | tools/python/drape_queue_stress.py | 345 | CODE | |
| LOW | tools/python/mwm_downloader.py | 35 | CODE | |
| LOW | tools/python/check_store_metadata.py | 280 | CODE | |
| LOW | tools/python/issues_db/fetch_issues.py | 83 | CODE | |
| LOW | tools/python/issues_db/search_issues.py | 51 | CODE | |
| LOW | tools/python/timezone/common.py | 26 | CODE | |
| LOW | tools/python/borders/test_align_border_points.py | 218 | CODE | |
| LOW | tools/python/borders/test_reconcile_borders.py | 161 | CODE | |
| LOW | tools/python/borders/test_maintain_borders.py | 209 | CODE | |
| LOW | tools/python/borders/test_maintain_borders.py | 218 | CODE | |
| LOW | tools/python/borders/align_border_points.py | 63 | CODE | |
| LOW | tools/python/borders/check_border_geometry.py | 35 | CODE | |
| LOW | tools/python/borders/check_border_geometry.py | 118 | CODE | |
| LOW | tools/python/borders/reconcile_borders.py | 85 | CODE | |
| LOW | tools/python/borders/border_comparison.py | 107 | CODE | |
| LOW | tools/python/borders/border_comparison.py | 198 | CODE | |
| LOW | tools/python/borders/border_comparison.py | 288 | CODE | |
| LOW | tools/python/borders/audit_borders.py | 39 | CODE | |
| LOW | tools/python/borders/repair_backtracks.py | 137 | CODE | |
| LOW | tools/python/borders/maintain_borders.py | 190 | CODE | |
| LOW | tools/python/borders/maintain_borders.py | 325 | CODE | |
| LOW | tools/python/maps_generator/__main__.py | 112 | CODE | |
| LOW | tools/python/maps_generator/utils/file.py | 60 | CODE | |
| LOW | tools/python/maps_generator/utils/file.py | 201 | CODE | |
| LOW | tools/python/maps_generator/generator/logs_reader.py | 152 | CODE | |
| LOW | tools/python/maps_generator/generator/logs_reader.py | 60 | CODE | |
| LOW | tools/python/maps_generator/generator/statistics.py | 70 | CODE | |
| LOW | tools/python/maps_generator/generator/statistics.py | 127 | CODE | |
| LOW | tools/python/stylesheet/cat_stat.py | 19 | CODE | |
| LOW | tools/python/stylesheet/cat_stat.py | 50 | CODE | |
| LOW | tools/python/stylesheet/drules_info.py | 27 | CODE | |
| LOW | tools/python/stylesheet/webcolors/webcolors.py | 846 | CODE | |
| LOW | tools/python/transit/transit_graph_generator.py | 167 | CODE | |
| LOW | tools/python/planet_checks/validate_continents.py | 28 | CODE | |
| LOW | tools/python/planet_checks/validate_continents.py | 72 | CODE | |
| LOW | tools/python/planet_checks/validate_countries.py | 93 | CODE | |
| LOW | tools/python/planet_checks/validate_countries.py | 375 | CODE | |
| LOW | tools/python/planet_checks/validate_countries.py | 398 | CODE | |
| LOW | tools/python/planet_checks/validate_countries.py | 507 | CODE | |
| 9 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | tools/python/airmaps/sandbox/airmaps/airflow.cfg | 137 | # Can be used to de-elevate a sudo user running Airflow when executing tasks | COMMENT |
| MEDIUM | 3party/robust/predicates.c | 28 | /* from the Web page http://www.cs.cmu.edu/~quake/robust.html . */ | COMMENT |
| MEDIUM | 3party/bsdiff-courgette/bsdiff/bsdiff.h | 55 | // 2005-05-18 - Use the same CRC algorithm as bzip2, and leverage the CRC table | COMMENT |
| MEDIUM | …/platform/platform_tests/http_client_qt_http2_test.cpp | 21 | // QUrl::host() lowercases hosts, but the predicate is robust to mixed case regardless. | COMMENT |
| MEDIUM | libs/search/house_numbers_matcher.cpp | 32 | /// @todo By VNG: This list looks hillarious :) Definitely should set some lower bound number | COMMENT |
| MEDIUM | libs/search/locality_scorer.cpp | 356 | // artifacts, and to make sorting by similarity more robust, as 1e-6 | COMMENT |
| MEDIUM | libs/kml/serdes_common.cpp | 74 | // A robust solution requires parsing invalid XML on loading (then users can restore "bad" XML files), see | COMMENT |
| MEDIUM | libs/kml/serdes_common.cpp | 76 | // When a robust solution is implemented, this workaround can be removed for better performance/battery. | COMMENT |
| MEDIUM | libs/drape/texture_manager.hpp | 228 | // TODO(AB): Make a more robust use of BreakIterator to split strings and get rid of this space glyph. | COMMENT |
| MEDIUM | libs/geometry/robust_orientation.hpp | 16 | /// Same as CrossProduct(p1 - p, p2 - p), but uses robust calculations. | COMMENT |
| MEDIUM | libs/geometry/robust_orientation.hpp | 136 | } // namespace robust | CODE |
| MEDIUM⚡ | libs/geometry/robust_orientation.cpp | 18 | #include "3party/robust/predicates.c" | COMMENT |
| MEDIUM⚡ | libs/geometry/robust_orientation.cpp | 23 | #include "3party/robust/predicates.c" | COMMENT |
| MEDIUM⚡ | libs/geometry/robust_orientation.cpp | 26 | #include "3party/robust/predicates.c" | COMMENT |
| MEDIUM | libs/geometry/robust_orientation.cpp | 67 | } // namespace m2::robust | CODE |
| MEDIUM | libs/geometry/simplification.hpp | 89 | // Essentially, it's a trade-off between optimality and performance. | COMMENT |
| MEDIUM | …ava/app/organicmaps/routing/ManageRouteController.java | 163 | // instanceof is robust against transient binding-adapter resolution inside ConcatAdapter. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | …g/track_analyzing_tests/track_archive_reader_tests.cpp | 52 | // Step 1: Test data | COMMENT |
| LOW⚡ | …g/track_analyzing_tests/track_archive_reader_tests.cpp | 62 | // Step 2: Generate archive | COMMENT |
| LOW⚡ | tools/python/add_string.py | 208 | # Step 1: Get translations via DeepL | STRING |
| LOW⚡ | tools/python/add_string.py | 211 | # Step 2: Get Google translations for languages not supported by DeepL | STRING |
| LOW⚡ | tools/python/add_string.py | 216 | # Step 3: Proofread with Gemini | STRING |
| LOW⚡ | tools/python/add_string.py | 220 | # Step 4: Remove regional duplicates | STRING |
| LOW⚡ | tools/python/add_string.py | 226 | # Step 5: Format and write to strings.txt | STRING |
| LOW | tools/unix/test_planet.sh | 26 | # Step 1: analyze logs and find errors | COMMENT |
| LOW | tools/unix/test_planet.sh | 107 | # Step 4: run integration tests | COMMENT |
| LOW⚡ | tools/android/download_vulkan_validation_layers.py | 9 | # Step 1: Download zip archive | COMMENT |
| LOW⚡ | tools/android/download_vulkan_validation_layers.py | 19 | # Step 2: Unzip archive | COMMENT |
| LOW⚡ | tools/android/download_vulkan_validation_layers.py | 26 | # Step 3: Rename unpacked folder to "jniLibs" and move it to "android/app/src/main" | COMMENT |
| LOW | .agents/skills/om-review/SKILL.md | 69 | ### Step 1: Determine Scope | COMMENT |
| LOW | .agents/skills/om-review/SKILL.md | 374 | ### Step 2: Gather Context | COMMENT |
| LOW | .agents/skills/om-review/SKILL.md | 538 | ### Step 3: Review Checklists | COMMENT |
| LOW | .agents/skills/om-review/SKILL.md | 952 | ### Step 4: Generate Report | COMMENT |
| LOW | .agents/skills/om-review/SKILL.md | 1053 | ### Step 5: Post to GitHub (if --post flag) | COMMENT |
| LOW | .claude/skills/om-review/SKILL.md | 69 | ### Step 1: Determine Scope | COMMENT |
| LOW | .claude/skills/om-review/SKILL.md | 374 | ### Step 2: Gather Context | COMMENT |
| LOW | .claude/skills/om-review/SKILL.md | 538 | ### Step 3: Review Checklists | COMMENT |
| LOW | .claude/skills/om-review/SKILL.md | 952 | ### Step 4: Generate Report | COMMENT |
| LOW | .claude/skills/om-review/SKILL.md | 1053 | ### Step 5: Post to GitHub (if --post flag) | COMMENT |
| LOW⚡ | libs/timezone/timezone.cpp | 95 | // Step 1: Convert local → UTC handling DST ambiguity | COMMENT |
| LOW⚡ | libs/timezone/timezone.cpp | 98 | // Step 2: Convert UTC → dst local | COMMENT |
| LOW | .github/skills/om-review.md | 69 | ### Step 1: Determine Scope | COMMENT |
| LOW | .github/skills/om-review.md | 374 | ### Step 2: Gather Context | COMMENT |
| LOW | .github/skills/om-review.md | 538 | ### Step 3: Review Checklists | COMMENT |
| LOW | .github/skills/om-review.md | 952 | ### Step 4: Generate Report | COMMENT |
| LOW | .github/skills/om-review.md | 1053 | ### Step 5: Post to GitHub (if --post flag) | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | …oid/app/src/main/java/app/organicmaps/MwmActivity.java | 1218 | final boolean isLightMode = !app.organicmaps.sdk.util.Utils.isDarkMode(this); | CODE |
| CRITICAL | …java/app/organicmaps/car/screens/NavigationScreen.java | 227 | new androidx.car.app.navigation.model.RoutingInfo.Builder(); | CODE |
| CRITICAL | …organicmaps/car/screens/bookmarks/BookmarksLoader.java | 206 | .Builder(IconCompat.createWithBitmap(app.organicmaps.sdk.util.Graphics.drawableToBitmap(drawable))) | CODE |
| CRITICAL | …ps/car/screens/download/DownloadMapsScreenBuilder.java | 81 | case BuildRoute -> new app.organicmaps.car.screens.download.DownloadMapsForRouteScreen(this); | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | tools/python/drape_queue_stress.py | 797 | except OSError: | CODE |
| HIGH | tools/python/drape_queue_stress.py | 813 | except subprocess.SubprocessError: | CODE |
| HIGH | tools/python/drape_queue_stress.py | 1011 | except subprocess.SubprocessError: | CODE |
| HIGH | tools/python/drape_queue_stress.py | 439 | except (KeyError, ValueError, IndexError): | CODE |
| HIGH | tools/python/issues_db/fetch_issues.py | 67 | except (FileNotFoundError, OSError, subprocess.SubprocessError): | CODE |
| HIGH | tools/python/test_server/start_server.py | 84 | except OSError: | CODE |
| HIGH | tools/android/set_up_android.py | 8 | except NameError: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | tools/python/test_server/server/ResponseProvider.py | 75 | return "{}: {}: {}".format(self.response_code(), self.length(), self.message()) | CODE |
| HIGH | tools/python/test_server/server/tornado_handler.py | 37 | self.add_header("Content-Length", payload.length()) | CODE |
| HIGH | tools/python/test_server/server/tornado_handler.py | 77 | self.add_header("Content-Length", payload.length()) | CODE |
| HIGH | tools/python/test_server/server/testserver.py | 146 | self.send_header("Content-Length", payload.length()) | STRING |
| HIGH | tools/python/test_server/server/testserver.py | 178 | self.send_header("Content-Length", payload.length()) | STRING |
| HIGH⚡ | tools/python/borders/test_border_geometry.py | 58 | self.assertTrue(difference.equals(GeometryCollection([LineString([(2, 0), (3, 0)]), Point(6, 0)]))) | CODE |
| HIGH | tools/python/borders/test_repair_backtracks.py | 119 | self.assertTrue(coverage.equals(filled(repaired))) | CODE |
| HIGH | tools/python/planet_checks/validate_big_cities.py | 7 | node[place=city](if:t["population"] >= 200000 || t["capital"]=='yes'); | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | tools/python/translate.py | 320 | print("Error: DEEPL_FREE_API_KEY or DEEPL_API_KEY env variables are not set") | CODE |
| MEDIUM | tools/python/translate.py | 330 | print(f"Error running {TRANS_CMD} program:") | CODE |
| MEDIUM | tools/python/translate.py | 354 | print(f"Error running {TRANS_CMD} program:") | CODE |
| MEDIUM⚡ | tools/python/translate.py | 397 | print("Error: DeepL rate limit exceeded after maximum retries.") | CODE |
| MEDIUM⚡ | tools/python/translate.py | 401 | print(f"Error: DeepL API request failed with status code {response.status_code}") | CODE |
| MEDIUM | tools/python/translate.py | 533 | print("Error: translate-shell program for Google Translate is not installed.") | CODE |
| MEDIUM⚡ | tools/python/add_string.py | 200 | print("Error: DEEPL_FREE_API_KEY or DEEPL_API_KEY environment variable is required") | STRING |
| LOW | tools/python/testlog_to_xml_converter.py | 74 | except Exception as ex: | CODE |
| MEDIUM | tools/python/sort_categories.py | 149 | print(f"Error: {input_file} not found") | STRING |
| LOW | tools/python/google_maps_bookmarks.py | 227 | except Exception: | CODE |
| LOW | tools/python/drape_queue_stress.py | 499 | except Exception as exc: | CODE |
| LOW | tools/python/issues_db/fetch_issues.py | 209 | except Exception: | CODE |
| LOW | tools/python/test_server/server/ResponseProvider.py | 193 | except Exception as e: | CODE |
| LOW | tools/python/test_server/server/testserver.py | 98 | except Exception as e: | CODE |
| LOW | tools/python/planet_checks/validate_continents.py | 191 | except Exception as e: | CODE |
| LOW | tools/python/planet_checks/validate_continents.py | 217 | except Exception as e: | CODE |
| LOW | tools/python/planet_checks/validate_countries.py | 605 | except Exception as e: | CODE |
| LOW | tools/python/planet_checks/validate_big_cities.py | 209 | except Exception as e: | CODE |
| LOW | tools/python/routing/run_heap_comparison_benchmark.py | 246 | except Exception as e: | CODE |
| LOW | tools/python/routing/run_comparison.py | 91 | except Exception as e: | CODE |
| LOW | tools/python/routing/run_comparison.py | 105 | except Exception as e: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tools/python/Util.py | 6 | CODE | |
| LOW | tools/python/InstrumentsTraceParser.py | 3 | CODE | |
| LOW | tools/python/vector_drawable_to_svg.py | 3 | CODE | |
| LOW | tools/python/categories_converter.py | 3 | CODE | |
| LOW | tools/python/po_parser.py | 3 | CODE | |
| LOW | tools/python/testlog_to_xml_converter.py | 12 | CODE | |
| LOW | tools/python/mwm_downloader.py | 4 | CODE | |
| LOW | tools/python/issues_db/db.py | 2 | CODE | |
| LOW | tools/python/issues_db/fetch_issues.py | 32 | CODE | |
| LOW | tools/python/issues_db/search_issues.py | 16 | CODE | |
| LOW | tools/python/test_server/server/ResponseProvider.py | 1 | CODE | |
| LOW | tools/python/test_server/server/tornado_handler.py | 1 | CODE | |
| LOW | tools/python/test_server/server/testserver.py | 15 | CODE | |
| LOW | tools/python/borders/check_border_geometry.py | 20 | CODE | |
| LOW | tools/python/borders/audit_borders.py | 20 | CODE | |
| LOW | tools/python/borders/audit_borders.py | 22 | CODE | |
| LOW | tools/python/borders/audit_borders.py | 22 | CODE | |
| LOW | tools/python/maps_generator/__init__.py | 16 | CODE | |
| LOW | tools/python/maps_generator/utils/file.py | 17 | CODE | |
| LOW | tools/python/maps_generator/generator/diffs.py | 4 | CODE | |
| LOW | tools/python/maps_generator/generator/settings.py | 4 | CODE | |
| LOW | tools/python/maps_generator/generator/status.py | 1 | CODE | |
| LOW | tools/python/post_generation/hierarchy_to_countries.py | 17 | CODE | |
| LOW | tools/android/set_up_android.py | 2 | CODE | |
| LOW | libs/search/search_quality/scoring_model.py | 3 | CODE | |
| LOW | libs/search/search_quality/scoring_model.py | 9 | CODE | |
| LOW | libs/search/search_quality/scoring_model.py | 13 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | …g/track_analyzing_tests/track_archive_reader_tests.cpp | 52 | // Step 1: Test data | COMMENT |
| LOW⚡ | …g/track_analyzing_tests/track_archive_reader_tests.cpp | 62 | // Step 2: Generate archive | COMMENT |
| LOW⚡ | tools/python/add_string.py | 208 | # Step 1: Get translations via DeepL | STRING |
| LOW⚡ | tools/python/add_string.py | 211 | # Step 2: Get Google translations for languages not supported by DeepL | STRING |
| LOW⚡ | tools/python/add_string.py | 216 | # Step 3: Proofread with Gemini | STRING |
| LOW⚡ | tools/python/add_string.py | 220 | # Step 4: Remove regional duplicates | STRING |
| LOW⚡ | tools/python/add_string.py | 226 | # Step 5: Format and write to strings.txt | STRING |
| LOW | tools/unix/test_planet.sh | 26 | # Step 1: analyze logs and find errors | COMMENT |
| LOW | tools/unix/test_planet.sh | 107 | # Step 4: run integration tests | COMMENT |
| LOW⚡ | tools/android/download_vulkan_validation_layers.py | 9 | # Step 1: Download zip archive | COMMENT |
| LOW⚡ | tools/android/download_vulkan_validation_layers.py | 19 | # Step 2: Unzip archive | COMMENT |
| LOW⚡ | tools/android/download_vulkan_validation_layers.py | 26 | # Step 3: Rename unpacked folder to "jniLibs" and move it to "android/app/src/main" | COMMENT |
| LOW⚡ | libs/timezone/timezone.cpp | 95 | // Step 1: Convert local → UTC handling DST ambiguity | COMMENT |
| LOW⚡ | libs/timezone/timezone.cpp | 98 | // Step 2: Convert UTC → dst local | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | tools/python/transit/transit_graph_generator.py | 177 | # Create a line for each itinerary. | COMMENT |
| MEDIUM | tools/python/transit/transit_graph_generator.py | 194 | # Create an edge for each connection of stops. | COMMENT |
| MEDIUM | tools/python/airmaps/sandbox/airmaps/airflow.cfg | 313 | # Define the color of navigation bar | COMMENT |
| MEDIUM | iphone/upload_to_appstore.sh | 30 | # Create a plist with upload options. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | tools/python/translate.py | 407 | # Check if target_language is in DeepL list (case-insensitive) | COMMENT |
| LOW | tools/python/sort_categories.py | 32 | # Check if this is the start of a section | COMMENT |
| LOW | tools/python/sort_categories.py | 56 | # Check if this is the en: line | COMMENT |
| LOW | tools/python/sort_categories.py | 147 | # Check if input file exists | STRING |
| LOW | tools/python/airmaps/sandbox/airmaps/airflow.cfg | 526 | # Set this to 0 for no limit (not advised) | COMMENT |
| LOW | tools/unix/find_generator_tool.sh | 6 | # Set GENERATOR_TOOL to explicitly use one | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tools/python/mwm_downloader.py | 32 | logger = logging.getLogger(__name__) | CODE |
| LOW | tools/python/maps_generator/generator/logs_reader.py | 14 | logger = logging.getLogger(__name__) | CODE |
| LOW | tools/python/data/borders/__init__.py | 14 | logger = logging.getLogger(__name__) | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | libs/tracking/connection.cpp | 27 | // TODO: implement handshake | COMMENT |
| LOW | …/java/app/organicmaps/sdk/location/PlatformSocket.java | 133 | // TODO: implement the custom KeyStore to make the self-signed certificates work | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | xcode/fastlane.sh | 46 | echo >&2 "(!) Please don't forget to commit changes at ../screenshots" | CODE |
| LOW | iphone/upload_to_appstore.sh | 58 | echo "Build was successfully uploaded! Please don't forget to tag it with release notes using:" | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tools/python/city_radius.py | 86 | def process_data(steps_count, base, mult, bestFind = False, dataFlag = 0): | CODE |