Repository Analysis

SFTtech/openage

Clone of the Age of Empires II engine 🚀

16.2 Moderate AI signal View on GitHub

Analysis Overview

This report presents the forensic synthetic code analysis of SFTtech/openage, a Python project with 14,308 GitHub stars. SynthScan v2.0 examined 190,902 lines of code across 1433 source files, recording 1492 pattern matches distributed across 14 syntactic categories. The overall adjusted score of 16.2 places this repository in the Moderate AI signal band.

The scanner applied 160+ deterministic lexical heuristics, multi-line block detectors, abstract syntax tree depth profilers, and a cross-file Jaccard similarity matrix to construct a statistically normalised synthetic code estimate. All matches are individually weighted by severity coefficient and contextual multiplier before summation, and the resulting headline score is temporally discounted to account for the repository's development history relative to the commercial emergence of large language model coding tooling (November 2022 onward).

16.2
Adjusted Score
16.2
Raw Score
100%
Time Factor
2026-07-04
Last Push
14.3K
Stars
Python
Language
190.9K
Lines of Code
1.4K
Files
1.5K
Pattern Hits
2026-07-14
Scan Date
0.11
HC Hit Rate

What These Metrics Mean

Adjusted Score
Primary synthetic code indicator. Raw score normalised per 1,000 lines of code and multiplied by the temporal discount factor. This is the definitive comparative metric — use it to rank repositories by AI authorship density.
Raw Score
The unmodified sum of all severity-weighted, context-multiplied pattern match scores before temporal discounting. Reflects the absolute signal strength independent of when the repository was last active.
Time Factor
The temporal discount multiplier (0–100%) applied to the raw score. Repositories last updated before ChatGPT's launch (Nov 2022) receive a 5% factor. Full signal is only assigned to repositories active in the post-adoption era (Jan 2024+).
Pattern Hits
Total count of individual pattern matches across all files and categories. A high hit count with a low score may indicate a very large codebase with isolated AI snippets; a low count with a high score indicates dense, concentrated AI signatures.
HC Hit Rate
High+Critical pattern hits per file, averaged across the repository. This orthogonal signal catches repositories where a few files are densely packed with high-severity AI tells — a strong indicator even when the normalised score appears moderate due to codebase size.
Lines of Code / Files
Total lines and files analysed. The scanner examines 94 file extensions. These denominators are used to normalise the score, enabling fair comparison between repositories of vastly different sizes.

Score History

This chart maps the temporal evolution of the adjusted synthetic code score across successive scan runs. An upward trajectory indicates ongoing incorporation of AI-generated code or expanding LLM-assisted scaffolding; a stable or declining trajectory may reflect active human refactoring, code removal, or the adoption of stricter authorship policies. The dashed secondary line (right axis) independently tracks total raw pattern hit count, which can diverge from the normalised score when codebase size changes significantly between scans.

Severity Breakdown

Classifies detected patterns by their diagnostic confidence and structural impact. CRITICAL patterns (coefficient 10) represent definitive synthetic signatures — hallucinated imports, explicit LLM attribution metadata — virtually never produced by human authors. HIGH (5) indicates strong structural tells such as cross-file repetition or cross-linguistic idioms. MEDIUM (2) covers recognisable conversational padding and AI-specific vocabulary. LOW (1) captures subtle indicators like tautological comments and generic boilerplate that require density to carry independent signal.

CRITICAL 0HIGH 159MEDIUM 705LOW 628

Directory Score Breakdown

This horizontal bar chart decomposes the repository's raw synthetic code score by top-level directory, allowing you to pinpoint precisely which modules or components carry the highest AI authorship density. Directories with disproportionately high scores relative to their size warrant targeted manual review: concentrated AI signatures often trace back to mass-generated configuration layers, auto-ported test suites, LLM-scaffolded boilerplate classes, or entire subsystems authored under heavy copilot assistance. Use this view to prioritise your human code-review effort.

Pattern Findings

The scanner identified 1492 distinct pattern matches across 14 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a statistically significant AI authorship indicator. 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 diagnostic confidence level (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — comment-context matches receive a ×1.5 weight because LLMs systematically over-annotate. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier as dense clusters constitute far stronger evidence of synthetic authorship than isolated hits.

Decorative Section Separators666 hits · 1564 pts
SeverityFileLineSnippetContext
MEDIUM…onvert/processor/conversion/ror/pregen_subprocessor.py82 # =======================================================================COMMENT
MEDIUM…onvert/processor/conversion/ror/pregen_subprocessor.py84 # =======================================================================COMMENT
MEDIUM…/convert/processor/conversion/ror/nyan_subprocessor.py183 # =======================================================================COMMENT
MEDIUM…/convert/processor/conversion/ror/nyan_subprocessor.py185 # =======================================================================COMMENT
MEDIUM…/convert/processor/conversion/ror/nyan_subprocessor.py189 # =======================================================================COMMENT
MEDIUM…/convert/processor/conversion/ror/nyan_subprocessor.py329 # =======================================================================COMMENT
MEDIUM…/convert/processor/conversion/ror/nyan_subprocessor.py331 # =======================================================================COMMENT
MEDIUM…/convert/processor/conversion/ror/nyan_subprocessor.py337 # =======================================================================COMMENT
MEDIUM…/convert/processor/conversion/ror/nyan_subprocessor.py339 # =======================================================================COMMENT
MEDIUM…/convert/processor/conversion/ror/nyan_subprocessor.py368 # =======================================================================COMMENT
MEDIUM…/convert/processor/conversion/ror/nyan_subprocessor.py370 # =======================================================================COMMENT
MEDIUM…/convert/processor/conversion/ror/nyan_subprocessor.py376 # =======================================================================COMMENT
MEDIUM…/convert/processor/conversion/ror/nyan_subprocessor.py458 # =======================================================================COMMENT
MEDIUM…/convert/processor/conversion/ror/nyan_subprocessor.py460 # =======================================================================COMMENT
MEDIUM…/convert/processor/conversion/ror/nyan_subprocessor.py463 # =======================================================================COMMENT
MEDIUM…/convert/processor/conversion/ror/nyan_subprocessor.py465 # =======================================================================COMMENT
MEDIUM…/convert/processor/conversion/ror/nyan_subprocessor.py468 # =======================================================================COMMENT
MEDIUM…/convert/processor/conversion/ror/nyan_subprocessor.py470 # =======================================================================COMMENT
MEDIUM…/convert/processor/conversion/ror/nyan_subprocessor.py500 # =======================================================================COMMENT
MEDIUM…/convert/processor/conversion/ror/nyan_subprocessor.py502 # =======================================================================COMMENT
MEDIUM…/convert/processor/conversion/ror/nyan_subprocessor.py505 # =======================================================================COMMENT
MEDIUM…/convert/processor/conversion/ror/nyan_subprocessor.py547 # =======================================================================COMMENT
MEDIUM…/convert/processor/conversion/ror/nyan_subprocessor.py549 # =======================================================================COMMENT
MEDIUM…/convert/processor/conversion/ror/nyan_subprocessor.py553 # =======================================================================COMMENT
MEDIUM…/convert/processor/conversion/ror/nyan_subprocessor.py555 # =======================================================================COMMENT
MEDIUM…/convert/processor/conversion/ror/nyan_subprocessor.py561 # =======================================================================COMMENT
MEDIUM…/convert/processor/conversion/ror/nyan_subprocessor.py563 # =======================================================================COMMENT
MEDIUM…/convert/processor/conversion/ror/nyan_subprocessor.py606 # =======================================================================COMMENT
MEDIUM…/convert/processor/conversion/ror/nyan_subprocessor.py608 # =======================================================================COMMENT
MEDIUM…/convert/processor/conversion/ror/nyan_subprocessor.py611 # =======================================================================COMMENT
MEDIUM…/convert/processor/conversion/ror/nyan_subprocessor.py613 # =======================================================================COMMENT
MEDIUM…/convert/processor/conversion/ror/nyan_subprocessor.py674 # =======================================================================COMMENT
MEDIUM…/convert/processor/conversion/ror/nyan_subprocessor.py676 # =======================================================================COMMENT
MEDIUM…/convert/processor/conversion/ror/nyan_subprocessor.py681 # =======================================================================COMMENT
MEDIUM…/convert/processor/conversion/ror/nyan_subprocessor.py683 # =======================================================================COMMENT
MEDIUM…/convert/processor/conversion/ror/nyan_subprocessor.py972 # =======================================================================COMMENT
MEDIUM…/convert/processor/conversion/ror/nyan_subprocessor.py974 # =======================================================================COMMENT
MEDIUM…/convert/processor/conversion/ror/nyan_subprocessor.py979 # =======================================================================COMMENT
MEDIUM…/convert/processor/conversion/ror/nyan_subprocessor.py981 # =======================================================================COMMENT
MEDIUM…/convert/processor/conversion/ror/nyan_subprocessor.py988 # =======================================================================COMMENT
MEDIUM…/convert/processor/conversion/ror/nyan_subprocessor.py990 # =======================================================================COMMENT
MEDIUM…/convert/processor/conversion/ror/nyan_subprocessor.py996 # =======================================================================COMMENT
MEDIUM…/convert/processor/conversion/ror/nyan_subprocessor.py998 # =======================================================================COMMENT
MEDIUM…/convert/processor/conversion/ror/nyan_subprocessor.py1036 # =======================================================================COMMENT
MEDIUM…/convert/processor/conversion/ror/nyan_subprocessor.py1038 # =======================================================================COMMENT
MEDIUM…/convert/processor/conversion/ror/nyan_subprocessor.py1044 # =======================================================================COMMENT
MEDIUM…/convert/processor/conversion/ror/nyan_subprocessor.py1046 # =======================================================================COMMENT
MEDIUM…/convert/processor/conversion/ror/nyan_subprocessor.py1058 # =======================================================================COMMENT
MEDIUM…/convert/processor/conversion/ror/nyan_subprocessor.py1060 # =======================================================================COMMENT
MEDIUM…/convert/processor/conversion/ror/nyan_subprocessor.py1066 # =======================================================================COMMENT
MEDIUM…/convert/processor/conversion/ror/nyan_subprocessor.py1068 # =======================================================================COMMENT
MEDIUM…/convert/processor/conversion/ror/nyan_subprocessor.py207 # =======================================================================COMMENT
MEDIUM…/convert/processor/conversion/ror/nyan_subprocessor.py209 # =======================================================================COMMENT
MEDIUM…/convert/processor/conversion/ror/nyan_subprocessor.py316 # =======================================================================COMMENT
MEDIUM…/convert/processor/conversion/ror/nyan_subprocessor.py318 # =======================================================================COMMENT
MEDIUM…/convert/processor/conversion/ror/nyan_subprocessor.py399 # =======================================================================COMMENT
MEDIUM…/convert/processor/conversion/ror/nyan_subprocessor.py401 # =======================================================================COMMENT
MEDIUM…/convert/processor/conversion/ror/nyan_subprocessor.py521 # =======================================================================COMMENT
MEDIUM…/convert/processor/conversion/ror/nyan_subprocessor.py523 # =======================================================================COMMENT
MEDIUM…/convert/processor/conversion/ror/nyan_subprocessor.py630 # =======================================================================COMMENT
606 more matches not shown…
Cross-File Repetition159 hits · 795 pts
SeverityFileLineSnippetContext
HIGH…e/convert/entity_object/conversion/combined_terrain.py0return the sound file location relative to where the file is expected to be in the modpack.STRING
HIGH…ge/convert/entity_object/conversion/combined_sprite.py0return the sound file location relative to where the file is expected to be in the modpack.STRING
HIGH…age/convert/entity_object/conversion/combined_sound.py0return the sound file location relative to where the file is expected to be in the modpack.STRING
HIGH…age/convert/entity_object/conversion/ror/genie_tech.py0upgrades attributes of units/buildings or other stats in the game.STRING
HIGH…/convert/entity_object/conversion/swgbcc/genie_tech.py0upgrades attributes of units/buildings or other stats in the game.STRING
HIGH…age/convert/entity_object/conversion/aoc/genie_tech.py0upgrades attributes of units/buildings or other stats in the game.STRING
HIGH…nvert/entity_object/export/formats/terrain_metadata.py0set the scale factor of the animation. :param factor: factor by which sprite images are scaled down at default zoom leveSTRING
HIGH…onvert/entity_object/export/formats/blmask_metadata.py0set the scale factor of the animation. :param factor: factor by which sprite images are scaled down at default zoom leveSTRING
HIGH…onvert/entity_object/export/formats/sprite_metadata.py0set the scale factor of the animation. :param factor: factor by which sprite images are scaled down at default zoom leveSTRING
HIGH…/convert/processor/conversion/ror/tech_subprocessor.py0returns the patches for a converter group, depending on the type of its effects.STRING
HIGH…nvert/processor/conversion/swgbcc/tech_subprocessor.py0returns the patches for a converter group, depending on the type of its effects.STRING
HIGH…/convert/processor/conversion/aoc/tech_subprocessor.py0returns the patches for a converter group, depending on the type of its effects.STRING
HIGH…/convert/processor/conversion/de2/tech_subprocessor.py0returns the patches for a converter group, depending on the type of its effects.STRING
HIGH…/convert/processor/conversion/ror/tech_subprocessor.py0creates the patches for modifying attributes of entities.STRING
HIGH…nvert/processor/conversion/swgbcc/tech_subprocessor.py0creates the patches for modifying attributes of entities.STRING
HIGH…/convert/processor/conversion/aoc/tech_subprocessor.py0creates the patches for modifying attributes of entities.STRING
HIGH…/convert/processor/conversion/de2/tech_subprocessor.py0creates the patches for modifying attributes of entities.STRING
HIGH…nvert/processor/conversion/ror/modpack_subprocessor.py0organize export data (nyan objects, media, scripts, etc.) into modpacks.STRING
HIGH…nvert/processor/conversion/de1/modpack_subprocessor.py0organize export data (nyan objects, media, scripts, etc.) into modpacks.STRING
HIGH…onvert/processor/conversion/hd/modpack_subprocessor.py0organize export data (nyan objects, media, scripts, etc.) into modpacks.STRING
HIGH…rt/processor/conversion/swgbcc/modpack_subprocessor.py0organize export data (nyan objects, media, scripts, etc.) into modpacks.STRING
HIGH…nvert/processor/conversion/aoc/modpack_subprocessor.py0organize export data (nyan objects, media, scripts, etc.) into modpacks.STRING
HIGH…nvert/processor/conversion/de2/modpack_subprocessor.py0organize export data (nyan objects, media, scripts, etc.) into modpacks.STRING
HIGH…/processor/conversion/aoc_demo/modpack_subprocessor.py0organize export data (nyan objects, media, scripts, etc.) into modpacks.STRING
HIGH…nvert/processor/conversion/ror/modpack_subprocessor.py0return all modpacks that can be created from the gamedata.STRING
HIGH…nvert/processor/conversion/de1/modpack_subprocessor.py0return all modpacks that can be created from the gamedata.STRING
HIGH…onvert/processor/conversion/hd/modpack_subprocessor.py0return all modpacks that can be created from the gamedata.STRING
HIGH…rt/processor/conversion/swgbcc/modpack_subprocessor.py0return all modpacks that can be created from the gamedata.STRING
HIGH…nvert/processor/conversion/aoc/modpack_subprocessor.py0return all modpacks that can be created from the gamedata.STRING
HIGH…nvert/processor/conversion/de2/modpack_subprocessor.py0return all modpacks that can be created from the gamedata.STRING
HIGH…/processor/conversion/aoc_demo/modpack_subprocessor.py0return all modpacks that can be created from the gamedata.STRING
HIGH…essor/conversion/ror/upgrade_attribute_subprocessor.py0creates a patch for the starting popspace modify effect (id: 4). :param converter_group: tech/civ that gets the patch. :STRING
HIGH…sor/conversion/swgbcc/upgrade_resource_subprocessor.py0creates a patch for the starting popspace modify effect (id: 4). :param converter_group: tech/civ that gets the patch. :STRING
HIGH…cessor/conversion/aoc/upgrade_resource_subprocessor.py0creates a patch for the starting popspace modify effect (id: 4). :param converter_group: tech/civ that gets the patch. :STRING
HIGH…onvert/processor/conversion/ror/pregen_subprocessor.py0creates nyan objects for things that are hardcoded into the genie engine, but configurable in openage. e.g. hp.STRING
HIGH…ert/processor/conversion/swgbcc/pregen_subprocessor.py0creates nyan objects for things that are hardcoded into the genie engine, but configurable in openage. e.g. hp.STRING
HIGH…e/convert/processor/conversion/aoc/pregen_processor.py0creates nyan objects for things that are hardcoded into the genie engine, but configurable in openage. e.g. hp.STRING
HIGH…onvert/processor/conversion/ror/pregen_subprocessor.py0generate pathtype objects. :param full_data_set: genieobjectcontainer instance that contains all relevant data for the cSTRING
HIGH…e/convert/processor/conversion/aoc/pregen_processor.py0generate pathtype objects. :param full_data_set: genieobjectcontainer instance that contains all relevant data for the cSTRING
HIGH…ert/processor/conversion/swgbcc/pregen_subprocessor.py0generate pathtype objects. :param full_data_set: genieobjectcontainer instance that contains all relevant data for the cSTRING
HIGH…cessor/conversion/ror/upgrade_resource_subprocessor.py0creates a patch for the bengali conversion resistance effect (id: 262). :param converter_group: tech/civ that gets the pSTRING
HIGH…sor/conversion/swgbcc/upgrade_resource_subprocessor.py0creates a patch for the bengali conversion resistance effect (id: 262). :param converter_group: tech/civ that gets the pSTRING
HIGH…cessor/conversion/aoc/upgrade_resource_subprocessor.py0creates a patch for the bengali conversion resistance effect (id: 262). :param converter_group: tech/civ that gets the pSTRING
HIGH…cessor/conversion/de2/upgrade_resource_subprocessor.py0creates a patch for the bengali conversion resistance effect (id: 262). :param converter_group: tech/civ that gets the pSTRING
HIGHopenage/convert/processor/conversion/ror/processor.py0input game speification and media here and get a set of modpacks back. :param gamespec: gamedata from empires.dat read iSTRING
HIGHopenage/convert/processor/conversion/de1/processor.py0input game speification and media here and get a set of modpacks back. :param gamespec: gamedata from empires.dat read iSTRING
HIGH…enage/convert/processor/conversion/swgbcc/processor.py0input game speification and media here and get a set of modpacks back. :param gamespec: gamedata from empires.dat read iSTRING
HIGHopenage/convert/processor/conversion/hd/processor.py0input game speification and media here and get a set of modpacks back. :param gamespec: gamedata from empires.dat read iSTRING
HIGHopenage/convert/processor/conversion/aoc/processor.py0input game speification and media here and get a set of modpacks back. :param gamespec: gamedata from empires.dat read iSTRING
HIGH…age/convert/processor/conversion/aoc_demo/processor.py0input game speification and media here and get a set of modpacks back. :param gamespec: gamedata from empires.dat read iSTRING
HIGHopenage/convert/processor/conversion/de2/processor.py0input game speification and media here and get a set of modpacks back. :param gamespec: gamedata from empires.dat read iSTRING
HIGHopenage/convert/processor/conversion/ror/processor.py0store data from the reader in a conversion container. :param gamespec: gamedata from empires.dat file. :type gamespec: cSTRING
HIGHopenage/convert/processor/conversion/de1/processor.py0store data from the reader in a conversion container. :param gamespec: gamedata from empires.dat file. :type gamespec: cSTRING
HIGH…enage/convert/processor/conversion/swgbcc/processor.py0store data from the reader in a conversion container. :param gamespec: gamedata from empires.dat file. :type gamespec: cSTRING
HIGHopenage/convert/processor/conversion/ror/processor.py0convert api-like python objects to nyan. :param full_data_set: genieobjectcontainer instance that contains all relevant STRING
HIGHopenage/convert/processor/conversion/de1/processor.py0convert api-like python objects to nyan. :param full_data_set: genieobjectcontainer instance that contains all relevant STRING
HIGHopenage/convert/processor/conversion/hd/processor.py0convert api-like python objects to nyan. :param full_data_set: genieobjectcontainer instance that contains all relevant STRING
HIGH…enage/convert/processor/conversion/swgbcc/processor.py0convert api-like python objects to nyan. :param full_data_set: genieobjectcontainer instance that contains all relevant STRING
HIGHopenage/convert/processor/conversion/aoc/processor.py0convert api-like python objects to nyan. :param full_data_set: genieobjectcontainer instance that contains all relevant STRING
HIGHopenage/convert/processor/conversion/de2/processor.py0convert api-like python objects to nyan. :param full_data_set: genieobjectcontainer instance that contains all relevant STRING
99 more matches not shown…
Over-Commented Block158 hits · 157 pts
SeverityFileLineSnippetContext
LOWlibopenage/renderer/demo/demo_6.cpp1// Copyright 2024-2024 the openage authors. See copying.md for legal info.COMMENT
LOWlibopenage/renderer/demo/demo_7.cpp1// Copyright 2025-2025 the openage authors. See copying.md for legal info.COMMENT
LOWlibopenage/renderer/demo/demo_5.cpp1// Copyright 2023-2024 the openage authors. See copying.md for legal info.COMMENT
LOWlibopenage/renderer/demo/demo_4.cpp1// Copyright 2015-2024 the openage authors. See copying.md for legal info.COMMENT
LOWlibopenage/renderer/demo/tests.cpp1// Copyright 2015-2025 the openage authors. See copying.md for legal info.COMMENT
LOWlibopenage/renderer/demo/demo_1.cpp1// Copyright 2023-2024 the openage authors. See copying.md for legal info.COMMENT
LOWlibopenage/renderer/demo/demo_3.cpp1// Copyright 2023-2024 the openage authors. See copying.md for legal info.COMMENT
LOWlibopenage/renderer/demo/demo_2.cpp1// Copyright 2023-2024 the openage authors. See copying.md for legal info.COMMENT
LOWlibopenage/renderer/demo/stresstest_0.cpp1// Copyright 2023-2024 the openage authors. See copying.md for legal info.COMMENT
LOWlibopenage/renderer/demo/stresstest_1.cpp1// Copyright 2024-2024 the openage authors. See copying.md for legal info.COMMENT
LOWlibopenage/renderer/stages/world/render_stage.cpp1// Copyright 2022-2025 the openage authors. See copying.md for legal info.COMMENT
LOWlibopenage/renderer/stages/world/object.cpp1// Copyright 2022-2024 the openage authors. See copying.md for legal info.COMMENT
LOWlibopenage/renderer/stages/world/object.h1// Copyright 2022-2024 the openage authors. See copying.md for legal info.COMMENT
LOWlibopenage/renderer/stages/screen/render_stage.cpp1// Copyright 2022-2024 the openage authors. See copying.md for legal info.COMMENT
LOWlibopenage/renderer/stages/screen/screenshot.cpp1// Copyright 2014-2024 the openage authors. See copying.md for legal info.COMMENT
LOWlibopenage/renderer/stages/terrain/render_stage.cpp1// Copyright 2022-2024 the openage authors. See copying.md for legal info.COMMENT
LOWlibopenage/renderer/stages/terrain/model.cpp1// Copyright 2022-2024 the openage authors. See copying.md for legal info.COMMENT
LOWlibopenage/renderer/stages/skybox/render_stage.cpp1// Copyright 2022-2024 the openage authors. See copying.md for legal info.COMMENT
LOWlibopenage/renderer/stages/hud/render_stage.cpp1// Copyright 2023-2024 the openage authors. See copying.md for legal info.COMMENT
LOWlibopenage/renderer/camera/camera.h1// Copyright 2022-2024 the openage authors. See copying.md for legal info.COMMENT
LOWlibopenage/renderer/resources/texture_data.h21COMMENT
LOWlibopenage/renderer/resources/texture_data.cpp1// Copyright 2015-2023 the openage authors. See copying.md for legal info.COMMENT
LOWlibopenage/renderer/resources/texture_info.h1// Copyright 2017-2024 the openage authors. See copying.md for legal info.COMMENT
LOWlibopenage/renderer/resources/parser/parse_sprite.cpp1// Copyright 2021-2024 the openage authors. See copying.md for legal info.COMMENT
LOWlibopenage/renderer/resources/parser/parse_texture.cpp1// Copyright 2021-2024 the openage authors. See copying.md for legal info.COMMENT
LOW…bopenage/renderer/resources/parser/parse_blendmask.cpp1// Copyright 2023-2024 the openage authors. See copying.md for legal info.COMMENT
LOW…openage/renderer/resources/parser/parse_blendtable.cpp1// Copyright 2023-2024 the openage authors. See copying.md for legal info.COMMENT
LOWlibopenage/renderer/resources/parser/parse_palette.cpp1// Copyright 2023-2024 the openage authors. See copying.md for legal info.COMMENT
LOWlibopenage/renderer/resources/parser/parse_terrain.cpp1// Copyright 2023-2024 the openage authors. See copying.md for legal info.COMMENT
LOWlibopenage/renderer/resources/assets/asset_manager.cpp1// Copyright 2023-2023 the openage authors. See copying.md for legal info.COMMENT
LOWlibopenage/renderer/vulkan/windowvk.cpp1// Copyright 2017-2023 the openage authors. See copying.md for legal info.COMMENT
LOWlibopenage/renderer/gui/gui.cpp1// Copyright 2015-2024 the openage authors. See copying.md for legal info.COMMENT
LOWlibopenage/renderer/gui/guisys/link/gui_item.h1// Copyright 2015-2024 the openage authors. See copying.md for legal info.COMMENT
LOW…nage/renderer/gui/guisys/private/gui_renderer_impl.cpp1// Copyright 2015-2023 the openage authors. See copying.md for legal info.COMMENT
LOW…nage/renderer/gui/guisys/private/gui_renderer_impl.cpp41 // Add callbacks so that input events from the main window are propagated to theCOMMENT
LOW…openage/renderer/gui/guisys/private/gui_subtree_impl.h61// QString root_dir);COMMENT
LOW…ge/renderer/gui/guisys/private/opengl_debug_logger.cpp1// Copyright 2017-2024 the openage authors. See copying.md for legal info.COMMENT
LOW…bopenage/renderer/gui/guisys/private/gui_ctx_setup.cpp1// Copyright 2017-2023 the openage authors. See copying.md for legal info.COMMENT
LOW…enage/renderer/gui/guisys/private/gui_subtree_impl.cpp1// Copyright 2015-2023 the openage authors. See copying.md for legal info.COMMENT
LOW…enage/renderer/gui/guisys/private/gui_subtree_impl.cpp181// subtree{},COMMENT
LOW…enage/renderer/gui/guisys/private/gui_subtree_impl.cpp201// this->engine->add_root_dir_path(this->root_dir);COMMENT
LOW…enage/renderer/gui/guisys/private/gui_subtree_impl.cpp221// }COMMENT
LOW…enage/renderer/gui/guisys/private/gui_subtree_impl.cpp241// return *this;COMMENT
LOW…penage/renderer/gui/guisys/private/gui_renderer_impl.h1// Copyright 2015-2023 the openage authors. See copying.md for legal info.COMMENT
LOW…erer/gui/guisys/private/livereload/gui_live_reloader.h1// Copyright 2015-2023 the openage authors. See copying.md for legal info.COMMENT
LOWlibopenage/renderer/opengl/vertex_array.h21 /// in the vector. Each buffer is bound according to its input info and each subsequent vertexCOMMENT
LOWlibopenage/renderer/opengl/window.cpp1// Copyright 2018-2024 the openage authors. See copying.md for legal info.COMMENT
LOWlibopenage/renderer/opengl/error.cpp21 // An unacceptable value is specified for an enumerated argument.COMMENT
LOWlibopenage/renderer/opengl/context.cpp1// Copyright 2015-2024 the openage authors. See copying.md for legal info.COMMENT
LOWlibopenage/renderer/opengl/context.cpp181 // A numeric argument is out of range.COMMENT
LOWlibopenage/renderer/opengl/shader_program.cpp1// Copyright 2013-2024 the openage authors. See copying.md for legal info.COMMENT
LOWlibopenage/renderer/opengl/renderer.cpp1// Copyright 2017-2025 the openage authors. See copying.md for legal info.COMMENT
LOWlibopenage/util/pty.h1// Copyright 2014-2024 the openage authors. See copying.md for legal info.COMMENT
LOWlibopenage/util/os.cpp1// Copyright 2014-2024 the openage authors. See copying.md for legal info.COMMENT
LOWlibopenage/util/compiler.h21// clang-format offCOMMENT
LOWlibopenage/util/compiler.h41 #endifCOMMENT
LOWlibopenage/util/compiler.cpp1// Copyright 2015-2025 the openage authors. See copying.md for legal info.COMMENT
LOWlibopenage/util/path.h1// Copyright 2015-2024 the openage authors. See copying.md for legal info.COMMENT
LOWlibopenage/util/misc.h1// Copyright 2013-2024 the openage authors. See copying.md for legal info.COMMENT
LOWlibopenage/util/strings.cpp1// Copyright 2013-2024 the openage authors. See copying.md for legal info.COMMENT
98 more matches not shown…
Unused Imports151 hits · 146 pts
SeverityFileLineSnippetContext
LOWopenage/assets.py6CODE
LOWopenage/util/observer.py17CODE
LOWopenage/util/files.py6CODE
LOWopenage/util/version.py6CODE
LOWopenage/util/hash.py6CODE
LOWopenage/util/fsprinting.py7CODE
LOWopenage/util/fslike/abstract.py14CODE
LOWopenage/util/fslike/directory.py10CODE
LOWopenage/util/fslike/filecollection.py7CODE
LOWopenage/game/main.py8CODE
LOWopenage/cabextract/cab.py9CODE
LOWopenage/cabextract/test.py5CODE
LOWopenage/codegen/main.py50CODE
LOWopenage/testing/main.py5CODE
LOWopenage/cvar/config_file.py7CODE
LOWopenage/main/main.py6CODE
LOWopenage/convert/main.py7CODE
LOW…age/convert/entity_object/conversion/stringresource.py5CODE
LOWopenage/convert/entity_object/conversion/modpack.py7CODE
LOW…e/convert/entity_object/conversion/combined_terrain.py7CODE
LOW…e/convert/entity_object/conversion/converter_object.py11CODE
LOW…ge/convert/entity_object/conversion/combined_sprite.py7CODE
LOW…age/convert/entity_object/conversion/combined_sound.py7CODE
LOW…ge/convert/entity_object/conversion/ror/genie_sound.py8CODE
LOW…age/convert/entity_object/conversion/ror/genie_tech.py8CODE
LOW…age/convert/entity_object/conversion/ror/genie_unit.py8CODE
LOW…/convert/entity_object/conversion/swgbcc/genie_tech.py7CODE
LOW…/convert/entity_object/conversion/swgbcc/genie_unit.py7CODE
LOW…entity_object/conversion/aoc/genie_object_container.py8CODE
LOW…ge/convert/entity_object/conversion/aoc/genie_sound.py6CODE
LOW…/convert/entity_object/conversion/aoc/genie_terrain.py6CODE
LOW…age/convert/entity_object/conversion/aoc/genie_tech.py6CODE
LOW…nage/convert/entity_object/conversion/aoc/genie_civ.py7CODE
LOW…e/convert/entity_object/conversion/aoc/genie_effect.py7CODE
LOW…age/convert/entity_object/conversion/aoc/genie_unit.py8CODE
LOW…/convert/entity_object/conversion/aoc/genie_graphic.py6CODE
LOW…nvert/entity_object/conversion/aoc/genie_connection.py7CODE
LOW…e/convert/entity_object/export/media_export_request.py8CODE
LOWopenage/convert/entity_object/export/metadata_export.py7CODE
LOWopenage/convert/entity_object/export/texture.py7CODE
LOWopenage/convert/entity_object/export/texture.py24CODE
LOWopenage/convert/entity_object/export/data_definition.py7CODE
LOW…nvert/entity_object/export/formats/terrain_metadata.py8CODE
LOW…onvert/entity_object/export/formats/blmask_metadata.py8CODE
LOW…nage/convert/entity_object/export/formats/nyan_file.py7CODE
LOW…onvert/entity_object/export/formats/sprite_metadata.py8CODE
LOW…ge/convert/entity_object/export/formats/media_cache.py8CODE
LOW…nvert/entity_object/export/formats/bltable_metadata.py6CODE
LOW…/convert/processor/conversion/ror/tech_subprocessor.py11CODE
LOW…e/convert/processor/conversion/ror/civ_subprocessor.py8CODE
LOW…nvert/processor/conversion/ror/modpack_subprocessor.py9CODE
LOW…essor/conversion/ror/upgrade_attribute_subprocessor.py11CODE
LOW…ocessor/conversion/ror/upgrade_ability_subprocessor.py12CODE
LOW…onvert/processor/conversion/ror/pregen_subprocessor.py9CODE
LOW…cessor/conversion/ror/upgrade_resource_subprocessor.py11CODE
LOWopenage/convert/processor/conversion/ror/processor.py7CODE
LOW…ert/processor/conversion/ror/auxiliary_subprocessor.py10CODE
LOW…convert/processor/conversion/ror/media_subprocessor.py8CODE
LOW…nvert/processor/conversion/ror/ability_subprocessor.py12CODE
LOW…nvert/processor/conversion/de1/modpack_subprocessor.py9CODE
91 more matches not shown…
Deep Nesting126 hits · 118 pts
SeverityFileLineSnippetContext
LOWopenage/util/system.py13CODE
LOWopenage/util/threading.py14CODE
LOWopenage/util/filelike/abstract.py117CODE
LOWopenage/util/fslike/path.py38CODE
LOWopenage/util/fslike/path.py113CODE
LOWopenage/util/fslike/filecollection.py39CODE
LOWopenage/util/fslike/union.py228CODE
LOWopenage/cabextract/cab.py307CODE
LOWopenage/cabextract/cab.py369CODE
LOWopenage/codegen/coord.py10CODE
LOWopenage/codegen/main.py113CODE
LOWopenage/codegen/main.py119CODE
LOWopenage/codegen/codegen.py108CODE
LOWopenage/testing/main.py117CODE
LOWopenage/cvar/config_file.py17CODE
LOWopenage/convert/main.py34CODE
LOW…age/convert/entity_object/conversion/aoc/genie_unit.py133CODE
LOW…age/convert/entity_object/conversion/aoc/genie_unit.py1170CODE
LOW…age/convert/entity_object/conversion/aoc/genie_unit.py1229CODE
LOWopenage/convert/entity_object/export/metadata_export.py92CODE
LOW…/convert/processor/conversion/ror/tech_subprocessor.py74CODE
LOW…/convert/processor/conversion/ror/tech_subprocessor.py100CODE
LOW…e/convert/processor/conversion/ror/civ_subprocessor.py25CODE
LOWopenage/convert/processor/conversion/ror/processor.py243CODE
LOWopenage/convert/processor/conversion/ror/processor.py448CODE
LOW…ert/processor/conversion/ror/auxiliary_subprocessor.py32CODE
LOW…nvert/processor/conversion/ror/ability_subprocessor.py35CODE
LOW…convert/processor/conversion/de1/media_subprocessor.py37CODE
LOW…/convert/processor/conversion/hd/media_subprocessor.py39CODE
LOW…nvert/processor/conversion/swgbcc/tech_subprocessor.py112CODE
LOW…nvert/processor/conversion/swgbcc/tech_subprocessor.py187CODE
LOW…onvert/processor/conversion/swgbcc/civ_subprocessor.py60CODE
LOW…or/conversion/swgbcc/upgrade_attribute_subprocessor.py310CODE
LOW…enage/convert/processor/conversion/swgbcc/processor.py196CODE
LOW…enage/convert/processor/conversion/swgbcc/processor.py355CODE
LOW…enage/convert/processor/conversion/swgbcc/processor.py515CODE
LOW…enage/convert/processor/conversion/swgbcc/processor.py610CODE
LOW…enage/convert/processor/conversion/swgbcc/processor.py780CODE
LOW…/processor/conversion/swgbcc/auxiliary_subprocessor.py35CODE
LOW…/processor/conversion/swgbcc/auxiliary_subprocessor.py408CODE
LOW…rt/processor/conversion/swgbcc/ability_subprocessor.py78CODE
LOW…rt/processor/conversion/swgbcc/ability_subprocessor.py606CODE
LOW…rt/processor/conversion/swgbcc/ability_subprocessor.py845CODE
LOW…rt/processor/conversion/swgbcc/ability_subprocessor.py1421CODE
LOW…/convert/processor/conversion/aoc/tech_subprocessor.py114CODE
LOW…/convert/processor/conversion/aoc/tech_subprocessor.py183CODE
LOW…/convert/processor/conversion/aoc/tech_subprocessor.py397CODE
LOW…e/convert/processor/conversion/aoc/civ_subprocessor.py62CODE
LOW…e/convert/processor/conversion/aoc/civ_subprocessor.py187CODE
LOW…e/convert/processor/conversion/aoc/civ_subprocessor.py422CODE
LOW…essor/conversion/aoc/upgrade_attribute_subprocessor.py355CODE
LOW…essor/conversion/aoc/upgrade_attribute_subprocessor.py2198CODE
LOWopenage/convert/processor/conversion/aoc/processor.py513CODE
LOWopenage/convert/processor/conversion/aoc/processor.py631CODE
LOWopenage/convert/processor/conversion/aoc/processor.py740CODE
LOWopenage/convert/processor/conversion/aoc/processor.py963CODE
LOWopenage/convert/processor/conversion/aoc/processor.py1202CODE
LOWopenage/convert/processor/conversion/aoc/processor.py1227CODE
LOWopenage/convert/processor/conversion/aoc/processor.py1340CODE
LOW…/convert/processor/conversion/aoc/nyan_subprocessor.py625CODE
66 more matches not shown…
Self-Referential Comments38 hits · 112 pts
SeverityFileLineSnippetContext
MEDIUMopenage/util/fslike/path.py365 # Create a temporary directory using tempfile.mkdtempCOMMENT
MEDIUM…nage/convert/entity_object/conversion/aoc/genie_civ.py93 # Create an object for the team bonus. We use the effect ID + 10000 to avoidCOMMENT
MEDIUM…nage/convert/entity_object/conversion/aoc/genie_civ.py98 # Create an object for the tech tree bonus. We use the effect ID + 10000 to avoidCOMMENT
MEDIUMopenage/convert/processor/conversion/ror/processor.py66 # Create a new container for the conversion processCOMMENT
MEDIUMopenage/convert/processor/conversion/ror/processor.py75 # Create the custom openage formats (nyan, sprite, terrain)COMMENT
MEDIUMopenage/convert/processor/conversion/ror/processor.py299 # Create the villager task groupCOMMENT
MEDIUMopenage/convert/processor/conversion/de1/processor.py57 # Create a new container for the conversion processCOMMENT
MEDIUMopenage/convert/processor/conversion/de1/processor.py66 # Create the custom openage formats (nyan, sprite, terrain)COMMENT
MEDIUMopenage/convert/processor/conversion/hd/processor.py57 # Create a new container for the conversion processCOMMENT
MEDIUMopenage/convert/processor/conversion/hd/processor.py66 # Create the custom openage formats (nyan, sprite, terrain, etc.)COMMENT
MEDIUM…enage/convert/processor/conversion/swgbcc/processor.py72 # Create a new container for the conversion processCOMMENT
MEDIUM…enage/convert/processor/conversion/swgbcc/processor.py81 # Create the custom openae formats (nyan, sprite, terrain)COMMENT
MEDIUM…enage/convert/processor/conversion/swgbcc/processor.py561 # Create the villager task groupCOMMENT
MEDIUM…enage/convert/processor/conversion/swgbcc/processor.py652 # Create a stat upgrade for other techsCOMMENT
MEDIUM…nvert/processor/conversion/aoc/modpack_subprocessor.py91 # Create the filesCOMMENT
MEDIUM…nvert/processor/conversion/aoc/modpack_subprocessor.py115 # Create an import tree from the filesCOMMENT
MEDIUMopenage/convert/processor/conversion/aoc/processor.py84 # Create a new container for the conversion processCOMMENT
MEDIUMopenage/convert/processor/conversion/aoc/processor.py93 # Create the custom openae formats (nyan, sprite, terrain)COMMENT
MEDIUMopenage/convert/processor/conversion/aoc/processor.py858 # Create a stat upgrade for other techsCOMMENT
MEDIUMopenage/convert/processor/conversion/aoc/processor.py1007 # Create the villager task groupCOMMENT
MEDIUM…/convert/processor/conversion/aoc/nyan_subprocessor.py712 # Create a diffCOMMENT
MEDIUM…vert/processor/conversion/aoc/modifier_subprocessor.py135 # Create a modifier for each matching resource spotCOMMENT
MEDIUM…rocessor/conversion/aoc/upgrade_effect_subprocessor.py74 # Create a new attack effect, then patch it inCOMMENT
MEDIUM…rocessor/conversion/aoc/upgrade_effect_subprocessor.py356 # Create a new attack resistance, then patch it inCOMMENT
MEDIUM…nvert/processor/conversion/aoc/ability_subprocessor.py7427 # Create the animation objectCOMMENT
MEDIUMopenage/convert/processor/conversion/de2/processor.py63 # Create a new container for the conversion processCOMMENT
MEDIUMopenage/convert/processor/conversion/de2/processor.py72 # Create the custom openae formats (nyan, sprite, terrain)COMMENT
MEDIUM…age/convert/processor/conversion/aoc_demo/processor.py56 # Create a new container for the conversion processCOMMENT
MEDIUM…age/convert/processor/conversion/aoc_demo/processor.py65 # Create the custom openae formats (nyan, sprite, terrain)COMMENT
MEDIUMopenage/convert/processor/export/media_exporter.py262 # Create a manager for sharing data between the workers and main processCOMMENT
MEDIUMopenage/convert/processor/export/media_exporter.py273 # Create a pool of workersCOMMENT
MEDIUMopenage/convert/value_object/read/genie_structure.py338 # Create an array from the subdata structuresCOMMENT
MEDIUMopenage/convert/value_object/read/genie_structure.py506 # Create the arrayCOMMENT
MEDIUMopenage/nyan/nyan_structs.py115 # Create a new member for every child with self as parent and originCOMMENT
MEDIUMopenage/nyan/nyan_structs.py138 # Create a new member with self as parent and originCOMMENT
MEDIUMopenage/nyan/nyan_structs.py151 # Create a new member with self as parentCOMMENT
MEDIUMopenage/nyan/nyan_structs.py308 # Create a new member for every child with self as parentCOMMENT
MEDIUMbuildsystem/codecompliance/clangtidy.py25 # Create the checks stringCOMMENT
Hyper-Verbose Identifiers125 hits · 110 pts
SeverityFileLineSnippetContext
LOWopenage/util/files.py35def read_nullterminated_string(fileobj: FSLikeObject, maxlen: int = 255) -> bytes:CODE
LOWopenage/util/fslike/test.py132def is_filesystem_case_sensitive():CODE
LOW…e/convert/entity_object/conversion/combined_terrain.py81 def get_relative_terrain_location(self) -> str:CODE
LOW…e/convert/entity_object/conversion/combined_terrain.py97 def resolve_graphics_location(self) -> str:CODE
LOW…e/convert/entity_object/conversion/converter_object.py279 def _create_raw_api_object_dict(self, subobject_list: list[RawAPIObject]) -> None:CODE
LOW…ge/convert/entity_object/conversion/combined_sprite.py91 def get_relative_sprite_location(self) -> str:CODE
LOW…ge/convert/entity_object/conversion/combined_sprite.py110 def resolve_graphics_location(self) -> str:CODE
LOW…age/convert/entity_object/conversion/combined_sound.py83 def get_relative_file_location(self) -> str:CODE
LOW…age/convert/entity_object/conversion/aoc/genie_tech.py498 def replaces_researchable_tech(self) -> typing.Union[GenieTechEffectBundleGroup, None]:CODE
LOW…cessor/conversion/ror/upgrade_resource_subprocessor.py31 def building_conversion_upgrade(CODE
LOW…/convert/processor/conversion/ror/nyan_subprocessor.py344 def building_line_to_game_entity(building_line):CODE
LOW…/convert/processor/conversion/ror/nyan_subprocessor.py475 def ambient_group_to_game_entity(ambient_group):CODE
LOW…ert/processor/conversion/ror/auxiliary_subprocessor.py32 def get_creatable_game_entity(line: GenieGameEntityGroup) -> None:CODE
LOW…nvert/processor/conversion/ror/ability_subprocessor.py35 def apply_discrete_effect_ability(CODE
LOW…nvert/processor/conversion/ror/ability_subprocessor.py360 def game_entity_stance_ability(line: GenieGameEntityGroup) -> ForwardRef:CODE
LOW…ert/processor/conversion/swgbcc/pregen_subprocessor.py220 def generate_exchange_objects(CODE
LOW…sor/conversion/swgbcc/upgrade_resource_subprocessor.py31 def assault_mech_anti_air_upgrade(CODE
LOW…sor/conversion/swgbcc/upgrade_resource_subprocessor.py56 def berserk_heal_rate_upgrade(CODE
LOW…sor/conversion/swgbcc/upgrade_resource_subprocessor.py148 def building_conversion_upgrade(CODE
LOW…sor/conversion/swgbcc/upgrade_resource_subprocessor.py353 def faith_recharge_rate_upgrade(CODE
LOW…sor/conversion/swgbcc/upgrade_resource_subprocessor.py654 def shield_dropoff_time_upgrade(CODE
LOW…sor/conversion/swgbcc/upgrade_resource_subprocessor.py679 def shield_power_core_upgrade(CODE
LOW…sor/conversion/swgbcc/upgrade_resource_subprocessor.py704 def shield_recharge_rate_upgrade(CODE
LOW…nvert/processor/conversion/swgbcc/nyan_subprocessor.py369 def building_line_to_game_entity(building_line: GenieBuildingLineGroup) -> None:CODE
LOW…nvert/processor/conversion/swgbcc/nyan_subprocessor.py530 def ambient_group_to_game_entity(ambient_group: GenieAmbientGroup) -> None:CODE
LOW…/processor/conversion/swgbcc/auxiliary_subprocessor.py35 def get_creatable_game_entity(line: GenieGameEntityGroup) -> None:CODE
LOW…rt/processor/conversion/swgbcc/ability_subprocessor.py41 def active_transform_to_ability(line: GenieGameEntityGroup) -> ForwardRef:CODE
LOW…rt/processor/conversion/swgbcc/ability_subprocessor.py57 def apply_continuous_effect_ability(CODE
LOW…rt/processor/conversion/swgbcc/ability_subprocessor.py78 def apply_discrete_effect_ability(CODE
LOW…rt/processor/conversion/swgbcc/ability_subprocessor.py385 def attribute_change_tracker_ability(line) -> ForwardRef:CODE
LOW…rt/processor/conversion/swgbcc/ability_subprocessor.py540 def exchange_resources_ability(line: GenieGameEntityGroup) -> ForwardRef:CODE
LOW…rt/processor/conversion/swgbcc/ability_subprocessor.py1324 def provide_contingent_ability(line: GenieGameEntityGroup) -> ForwardRef:CODE
LOW…rt/processor/conversion/swgbcc/ability_subprocessor.py1340 def regenerate_attribute_ability(line: GenieGameEntityGroup) -> ForwardRef:CODE
LOW…rt/processor/conversion/swgbcc/ability_subprocessor.py1693 def send_back_to_task_ability(line: GenieGameEntityGroup) -> ForwardRef:CODE
LOW…essor/conversion/aoc/upgrade_attribute_subprocessor.py517 def attack_warning_sound_upgrade(CODE
LOW…essor/conversion/aoc/upgrade_attribute_subprocessor.py1113 def garrison_capacity_upgrade(CODE
LOW…essor/conversion/aoc/upgrade_attribute_subprocessor.py2665 def tribute_inefficiency_upgrade(CODE
LOW…ocessor/conversion/aoc/upgrade_ability_subprocessor.py43 def apply_continuous_effect_ability(CODE
LOW…ocessor/conversion/aoc/upgrade_ability_subprocessor.py229 def apply_discrete_effect_ability(CODE
LOW…ocessor/conversion/aoc/upgrade_ability_subprocessor.py438 def attribute_change_tracker_ability(CODE
LOW…ocessor/conversion/aoc/upgrade_ability_subprocessor.py2055 def create_command_sound_patch(CODE
LOW…cessor/conversion/aoc/upgrade_resource_subprocessor.py31 def berserk_heal_rate_upgrade(CODE
LOW…cessor/conversion/aoc/upgrade_resource_subprocessor.py207 def building_conversion_upgrade(CODE
LOW…cessor/conversion/aoc/upgrade_resource_subprocessor.py375 def chinese_tech_discount_upgrade(CODE
LOW…cessor/conversion/aoc/upgrade_resource_subprocessor.py400 def construction_speed_upgrade(CODE
LOW…cessor/conversion/aoc/upgrade_resource_subprocessor.py425 def conversion_resistance_upgrade(CODE
LOW…cessor/conversion/aoc/upgrade_resource_subprocessor.py450 def conversion_resistance_min_rounds_upgrade(CODE
LOW…cessor/conversion/aoc/upgrade_resource_subprocessor.py475 def conversion_resistance_max_rounds_upgrade(CODE
LOW…cessor/conversion/aoc/upgrade_resource_subprocessor.py525 def faith_recharge_rate_upgrade(CODE
LOW…cessor/conversion/aoc/upgrade_resource_subprocessor.py705 def gather_food_efficiency_upgrade(CODE
LOW…cessor/conversion/aoc/upgrade_resource_subprocessor.py730 def gather_wood_efficiency_upgrade(CODE
LOW…cessor/conversion/aoc/upgrade_resource_subprocessor.py755 def gather_gold_efficiency_upgrade(CODE
LOW…cessor/conversion/aoc/upgrade_resource_subprocessor.py780 def gather_stone_efficiency_upgrade(CODE
LOW…cessor/conversion/aoc/upgrade_resource_subprocessor.py920 def herding_dominance_upgrade(CODE
LOW…cessor/conversion/aoc/upgrade_resource_subprocessor.py1334 def starting_villagers_upgrade(CODE
LOW…cessor/conversion/aoc/upgrade_resource_subprocessor.py1359 def starting_population_space_upgrade(CODE
LOW…cessor/conversion/aoc/upgrade_resource_subprocessor.py1493 def tribute_inefficiency_upgrade(CODE
LOW…cessor/conversion/aoc/upgrade_resource_subprocessor.py1518 def wonder_time_increase_upgrade(CODE
LOWopenage/convert/processor/conversion/aoc/processor.py266 def extract_genie_effect_bundles(CODE
LOWopenage/convert/processor/conversion/aoc/processor.py359 def extract_building_connections(CODE
65 more matches not shown…
Redundant / Tautological Comments38 hits · 48 pts
SeverityFileLineSnippetContext
LOWopenage/util/fslike/path.py351 # Close the file descriptor to release resourcesCOMMENT
LOWopenage/convert/processor/conversion/ror/processor.py317 # Check if the tech unlocks other linesCOMMENT
LOW…nvert/processor/conversion/ror/ability_subprocessor.py168 # Check if the object for the animation has been created beforeCOMMENT
LOW…enage/convert/processor/conversion/swgbcc/processor.py408 # Check if this is a stacked unit (gate or command center)COMMENT
LOW…enage/convert/processor/conversion/swgbcc/processor.py435 # Check if we have to create a GenieStackBuildingGroupCOMMENT
LOW…enage/convert/processor/conversion/swgbcc/processor.py632 # Check if the tech is an age upgradeCOMMENT
LOW…rt/processor/conversion/swgbcc/ability_subprocessor.py192 # Check if the object for the animation has been created beforeCOMMENT
LOW…/convert/processor/conversion/aoc/tech_subprocessor.py445 # Check if the tech actually costs an amount of the defined resourceCOMMENT
LOW…essor/conversion/aoc/upgrade_attribute_subprocessor.py628 # Check if the unit line actually costs foodCOMMENT
LOW…essor/conversion/aoc/upgrade_attribute_subprocessor.py733 # Check if the unit line actually costs woodCOMMENT
LOW…essor/conversion/aoc/upgrade_attribute_subprocessor.py838 # Check if the unit line actually costs goldCOMMENT
LOW…essor/conversion/aoc/upgrade_attribute_subprocessor.py943 # Check if the unit line actually costs stoneCOMMENT
LOWopenage/convert/processor/conversion/aoc/processor.py655 # Check if we have to create a GenieStackBuildingGroupCOMMENT
LOWopenage/convert/processor/conversion/aoc/processor.py666 # Check if the building is part of an existing line.COMMENT
LOWopenage/convert/processor/conversion/aoc/processor.py695 # Check if the upgrade target is correctCOMMENT
LOWopenage/convert/processor/conversion/aoc/processor.py804 # Check if the tech is an age upgradeCOMMENT
LOW…vert/processor/conversion/aoc/modifier_subprocessor.py108 # Check if the work value is 1 (with some rounding error margin)COMMENT
LOW…e/convert/processor/conversion/aoc/pregen_processor.py1796 # Assign property to modifierCOMMENT
LOW…e/convert/processor/conversion/aoc/pregen_processor.py1836 # Assign property to modifierCOMMENT
LOW…e/convert/processor/conversion/aoc/pregen_processor.py218 # Check if command is in queueCOMMENT
LOW…e/convert/processor/conversion/aoc/pregen_processor.py1876 # Assign property to modifierCOMMENT
LOW…nvert/processor/conversion/aoc/ability_subprocessor.py170 # Check if the object for the animation has been created beforeCOMMENT
LOW…nvert/processor/conversion/aoc/ability_subprocessor.py464 # Check if the object for the animation has been created beforeCOMMENT
LOW…nvert/processor/conversion/aoc/ability_subprocessor.py2321 # Check if the object for the animation has been created beforeCOMMENT
LOW…nvert/processor/conversion/aoc/ability_subprocessor.py2726 # Check if the object for the animation has been created beforeCOMMENT
LOW…nvert/processor/conversion/aoc/ability_subprocessor.py4159 # Check if the object for the animation has been created beforeCOMMENT
LOW…nvert/processor/conversion/aoc/ability_subprocessor.py4431 # Check if the object for the animation has been created beforeCOMMENT
LOW…nvert/processor/conversion/aoc/ability_subprocessor.py6802 # Check if terrain type is covered by terrain restrictionCOMMENT
LOW…nvert/processor/conversion/aoc/ability_subprocessor.py7125 # Check if contingents are stored in the unit before creating the abilityCOMMENT
LOWopenage/convert/value_object/read/value_members.py402 # Check if members have correct typeCOMMENT
LOWopenage/convert/service/init/version_detect.py41 # Check if any of the known paths for the file existsCOMMENT
LOWopenage/convert/service/init/version_detect.py104 # Check if any of the known paths for the file existsCOMMENT
LOWopenage/convert/service/init/version_detect.py228 # Check if there is a media cache file and save the path if it existsCOMMENT
LOWopenage/nyan/import_tree.py350 # Check if the fqon is in the namespace by comparing their identifiersCOMMENT
LOWopenage/nyan/import_tree.py358 # Check if the namespace node is an objectCOMMENT
LOWopenage/nyan/nyan_structs.py1041 # Check if operator type matches with member typeCOMMENT
LOWopenage/nyan/nyan_structs.py1048 # Check if value is compatible with member typeCOMMENT
LOWopenage/nyan/nyan_structs.py1168 # Check if the line gets too longCOMMENT
Modern Structural Boilerplate23 hits · 24 pts
SeverityFileLineSnippetContext
LOWopenage/util/observer.py103 def set_changed(self) -> None:CODE
LOW…e/convert/entity_object/conversion/converter_object.py546 def set_filename(self, filename: str, suffix: str = "nyan") -> None:CODE
LOW…e/convert/entity_object/conversion/converter_object.py557 def set_location(self, location: typing.Union[str, ForwardRef]) -> None:CODE
LOW…e/convert/entity_object/export/media_export_request.py56 def set_source_filename(self, filename: str) -> None:CODE
LOW…e/convert/entity_object/export/media_export_request.py68 def set_target_filename(self, filename: str) -> None:CODE
LOW…e/convert/entity_object/export/media_export_request.py80 def set_targetdir(self, targetdir: str) -> None:CODE
LOWopenage/convert/entity_object/export/data_definition.py35 def set_filename(self, filename: str) -> None:CODE
LOWopenage/convert/entity_object/export/data_definition.py47 def set_targetdir(self, targetdir: str) -> None:CODE
LOW…nvert/entity_object/export/formats/terrain_metadata.py122 def set_blendtable(self, table_id: int, filename: str) -> None:CODE
LOW…nvert/entity_object/export/formats/terrain_metadata.py136 def set_scalefactor(self, factor: typing.Union[int, float]) -> None:CODE
LOW…onvert/entity_object/export/formats/blmask_metadata.py77 def set_scalefactor(self, factor: typing.Union[int, float]) -> None:CODE
LOW…nage/convert/entity_object/export/formats/nyan_file.py124 def set_import_tree(self, import_tree: ImportTree) -> None:CODE
LOW…nage/convert/entity_object/export/formats/nyan_file.py134 def set_modpack_name(self, modpack_name: str) -> None:CODE
LOW…nage/convert/entity_object/export/formats/nyan_file.py140 def set_targetdir(self, targetdir: str) -> None:CODE
LOW…onvert/entity_object/export/formats/sprite_metadata.py132 def set_scalefactor(self, factor: typing.Union[int, float]) -> None:CODE
LOW…nvert/entity_object/export/formats/modpack_manifest.py60 def set_hashing_func(self, hashing_func: str) -> None:CODE
LOW…ge/convert/entity_object/export/formats/media_cache.py90 def set_hash_func(self, hash_func: str) -> None:CODE
LOW…nvert/entity_object/export/formats/bltable_metadata.py40 def set_blendtabe(self, table: tuple) -> None:CODE
LOW…nvert/processor/conversion/aoc/modpack_subprocessor.py147 def _set_static_aliases(modpack: Modpack, import_tree: ImportTree) -> None:CODE
LOWopenage/convert/tool/api_export.py124def set_static_aliases(import_tree: ImportTree) -> None:CODE
LOWopenage/nyan/import_tree.py122 def set_alias(self, alias: str) -> None:CODE
LOWopenage/nyan/nyan_structs.py287 def update_inheritance(self, new_inherited_member: InheritedNyanMember) -> None:CODE
LOWopenage/nyan/nyan_structs.py966 def set_value(self, value, operator: MemberOperator = None) -> None:CODE
AI Slop Vocabulary3 hits · 6 pts
SeverityFileLineSnippetContext
MEDIUMlibopenage/renderer/renderer.h79 /// Stores the display framebuffer into a CPU-accessible data object. Essentially, this takes a screenshot.COMMENT
LOW…ert/processor/conversion/aoc/auxiliary_subprocessor.py728 # we can just return the logic element of the only required techCOMMENT
LOWopenage/convert/value_object/read/read_members.py384 # no xrefs supported yet.. just set to true as if they were resolved.COMMENT
Excessive Try-Catch Wrapping2 hits · 2 pts
SeverityFileLineSnippetContext
LOWopenage/testing/list_processor.py93 except Exception as exc:CODE
LOWopenage/convert/service/read/gamedata.py79 except Exception:CODE
TODO Padding1 hit · 2 pts
SeverityFileLineSnippetContext
LOWdoc/code_style/mom.cpp233 // TODO: implementCOMMENT
Slop Phrases1 hit · 1 pts
SeverityFileLineSnippetContext
LOWlibopenage/renderer/gui/guisys/link/gui_item_link.h120 static_assert(can_call<F, Args...>{}, "One of possible causes: if you're passing SomethingLink*, then don't forget to #CODE
AI Structural Patterns1 hit · 1 pts
SeverityFileLineSnippetContext
LOW…e/convert/entity_object/export/formats/modpack_info.py153CODE