Repository Analysis

kimai/kimai

Kimai is the #1 open-source time-tracking application. From freelancers to companies and organisations - everyone can manage timesheets, generate reports, create invoices and so much more... Web-based multi-user application, available as On-Premise or SaaS version: https://www.kimai.org

8.7 Low AI signal View on GitHub

Analysis Overview

This report presents the forensic synthetic code analysis of kimai/kimai, a PHP project with 4,814 GitHub stars. SynthScan v2.0 examined 187,409 lines of code across 1918 source files, recording 1429 pattern matches distributed across 8 syntactic categories. The overall adjusted score of 8.7 places this repository in the Low 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).

8.7
Adjusted Score
8.7
Raw Score
100%
Time Factor
2026-07-14
Last Push
4.8K
Stars
PHP
Language
187.4K
Lines of Code
1.9K
Files
1.4K
Pattern Hits
2026-07-14
Scan Date
0.00
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 1MEDIUM 38LOW 1390

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 1429 distinct pattern matches across 8 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.

Hyper-Verbose Identifiers1231 hits · 1298 pts
SeverityFileLineSnippetContext
LOWtests/TranslationsTest.php18 public function testForWrongFileExtension(): voidCODE
LOWtests/TranslationsTest.php51 public function testReplacerWereNotTranslated(): voidCODE
LOWtests/Reporting/ReportingServiceTest.php46 public function testGetAvailableReportsWithPermission(): voidCODE
LOWtests/Configuration/MailConfigurationTest.php25 public function testGetFromAddressWithEmptyAddressReturnsNull(): voidCODE
LOWtests/Configuration/LocaleServiceTest.php115 public function testInvalidLocaleWithGivenLocale(): voidCODE
LOWtests/Configuration/LocaleServiceTest.php150 public function testGetNearestTranslationLocale(string $locale, string $expected): voidCODE
LOWtests/Configuration/LocaleServiceTest.php160 public static function getNearestTranslationLocaleData(): arrayCODE
LOWtests/Configuration/SystemConfigurationTest.php155 public function testDefaultWithMixedConfigs(): voidCODE
LOWtests/Configuration/SystemConfigurationTest.php185 public function testCalendarWithoutLoader(): voidCODE
LOWtests/Configuration/SystemConfigurationTest.php210 public function testFormDefaultWithoutLoader(): voidCODE
LOWtests/Configuration/SystemConfigurationTest.php222 public function testFormDefaultWithLoader(): voidCODE
LOWtests/Configuration/SystemConfigurationTest.php233 public function testUserWizardWithoutLoader(): voidCODE
LOWtests/Configuration/SystemConfigurationTest.php245 public function testTimesheetWithoutLoader(): voidCODE
LOWtests/Repository/InvoiceDocumentRepositoryTest.php85 public function testDefaultTemplatesExists(): voidCODE
LOWtests/Repository/TimesheetRepositoryTest.php30 public function testResultTypeForQueryState(): voidCODE
LOWtests/Repository/TimesheetRepositoryTest.php52 public function testPaginationReturnsDistinctResultsWithIdenticalBegin(): voidCODE
LOWtests/Repository/Search/SearchHelperTest.php32 public function testSearchTermIsNullDoesNotModifyQueryBuilder(): voidCODE
LOWtests/Repository/Search/SearchHelperTest.php45 public function testNoAliasThrowsException(): voidCODE
LOWtests/Repository/Search/SearchHelperTest.php61 public function testSupportsMetaFieldsAddsMetaFieldConditions(): voidCODE
LOWtests/Repository/Search/SearchHelperTest.php187 public function testSearchTermWithExcludedFieldAddsExclusionCondition(): voidCODE
LOWtests/Repository/Search/SearchHelperTest.php203 public static function provideMaliciousMetaFieldPayloads(): arrayCODE
LOWtests/Repository/Search/SearchHelperTest.php217 public function testMaliciousMetaFieldNamesCannotInfluenceSubqueryDql(string $term, array $expectedMetaNames): voidCODE
LOWtests/Form/ActivityEditFormTest.php22 public function testWithGlobalNewActivity(): voidCODE
LOWtests/Form/ActivityEditFormTest.php42 public function testWithGlobalNewActivityAndOptionsBudget(): voidCODE
LOWtests/Form/ActivityEditFormTest.php53 public function testWithGlobalNewActivityAndOptionsTimeBudget(): voidCODE
LOWtests/Form/ActivityEditFormTest.php64 public function testWithGlobalNewActivityAndOptionsAllBudget(): voidCODE
LOWtests/Form/ActivityEditFormTest.php76 public function testWithGlobalExistingActivityAndOptions(): voidCODE
LOWtests/Form/ActivityEditFormTest.php89 public function testWithNonGlobalExistingActivityAndOptions(): voidCODE
LOWtests/Form/CustomerEditFormTest.php61 public function testWithBudgetAndTimeBudget(): voidCODE
LOWtests/Form/CustomerEditFormTest.php61 public function testWithBudgetAndTimeBudget(): voidCODE
LOWtests/Form/ProjectEditFormTest.php62 public function testWithBudgetAndTimeBudget(): voidCODE
LOWtests/Form/ProjectEditFormTest.php62 public function testWithBudgetAndTimeBudget(): voidCODE
LOWtests/Form/ExportTemplateSpreadsheetFormTest.php42 public function testWithGlobalNewActivity(): voidCODE
LOW…Transformer/DurationStringToSecondsTransformerTest.php28 public static function getValidTestDataTransform(): arrayCODE
LOW…Transformer/DurationStringToSecondsTransformerTest.php40 public static function getInvalidTestDataTransform(): arrayCODE
LOW…Transformer/DurationStringToSecondsTransformerTest.php55 public function testInvalidTransformThrowsException($transform): voidCODE
LOW…Transformer/DurationStringToSecondsTransformerTest.php64 public static function getValidTestDataReverseTransform(): arrayCODE
LOW…Transformer/DurationStringToSecondsTransformerTest.php80 public static function getInvalidTestDataReverseTransform(): arrayCODE
LOW…Transformer/DurationStringToSecondsTransformerTest.php100 public function testInvalidReverseTransformThrowsException($transform): voidCODE
LOWtests/Form/Type/DurationTypeTest.php62 public function testPresetsAreNotGeneratedOnMissingHours(): voidCODE
LOWtests/Form/Type/DurationTypeTest.php71 public function testPresetsAreNotGeneratedOnMissingMinutes(): voidCODE
LOWtests/Form/Type/DurationTypeTest.php80 public function testPresetsAreNotGeneratedOnNegativeMinutes(): voidCODE
LOWtests/Form/Type/DurationTypeTest.php90 public function testPresetsAreNotGeneratedOnNegativeHours(): voidCODE
LOWtests/Form/Type/DurationTypeTest.php100 public function testHasDurationInputClass(): voidCODE
LOWtests/Form/Type/QuickEntryTimesheetTypeTest.php96 public function testPresetsAreNotGeneratedOnMissingHours(): voidCODE
LOWtests/Form/Type/QuickEntryTimesheetTypeTest.php105 public function testPresetsAreNotGeneratedOnMissingMinutes(): voidCODE
LOWtests/Form/Type/QuickEntryTimesheetTypeTest.php116 public function testPresetsAreNotGeneratedOnNegativeMinutes(): voidCODE
LOWtests/Form/Type/QuickEntryTimesheetTypeTest.php128 public function testPresetsAreNotGeneratedOnNegativeHours(): voidCODE
LOWtests/Form/Model/MultiUserTimesheetTest.php22 public function testDefaultCollectionsAreEmpty(): voidCODE
LOWtests/Form/Model/MultiUserTimesheetTest.php46 public function testRemovingUnknownUserDoesNothing(): voidCODE
LOWtests/Form/Model/MultiUserTimesheetTest.php56 public function testRemovingUserOnlyRemovesOneDuplicateEntry(): voidCODE
LOWtests/Form/Model/MultiUserTimesheetTest.php87 public function testRemovingUnknownTeamDoesNothing(): voidCODE
LOWtests/Form/Model/MultiUserTimesheetTest.php97 public function testRemovingTeamOnlyRemovesOneDuplicateEntry(): voidCODE
LOWtests/Form/Model/ConfigurationTest.php39 public function testFluentSetterAndGetter(): voidCODE
LOWtests/Form/Model/ConfigurationTest.php69 public function testSetValueKeepsOriginalTypeForNonBooleanField(string|int|null|bool|float $value): voidCODE
LOWtests/Form/Model/ConfigurationTest.php94 public function testSetValueCastsToBoolForBooleanTypes(string $type, string|int|null|bool|float $value, bool $expectCODE
LOWtests/Form/Model/ConfigurationTest.php103 public function testChangingTypeAfterSettingValueDoesNotRetroactivelyCastValue(): voidCODE
LOWtests/Form/Model/UserContractModelTest.php20 public function testIssetAlwaysReturnsTrue(): voidCODE
LOWtests/Form/Model/UserContractModelTest.php29 public function testSetAndGetExistingUserPropertyUsesUserMethods(): voidCODE
LOWtests/Form/Model/UserContractModelTest.php40 public function testSetAndGetExistingPreferenceBackedMethodUsesUserMethod(): voidCODE
1171 more matches not shown…
Decorative Section Separators36 hits · 148 pts
SeverityFileLineSnippetContext
MEDIUMphpstan.sh3# ----------------------------------------------------------------------COMMENT
MEDIUMphpstan.sh5# ----------------------------------------------------------------------COMMENT
MEDIUMphpstan.sh11# ----------------------------------------------------------------------COMMENT
MEDIUMphp-cs-fixer.sh3# ----------------------------------------------------------------------COMMENT
MEDIUMphp-cs-fixer.sh5# ----------------------------------------------------------------------COMMENT
MEDIUMphp-cs-fixer.sh11# ----------------------------------------------------------------------COMMENT
MEDIUMkimai.sh3# --------------------------------------------------------------------------------COMMENT
MEDIUMkimai.sh7# --------------------------------------------------------------------------------COMMENT
MEDIUMkimai.sh160# ---------------------------------------------------------COMMENT
MEDIUMconfig/services.yaml44 # ================================================================================COMMENT
MEDIUMconfig/services.yaml46 # ================================================================================COMMENT
MEDIUMconfig/services.yaml90 # ================================================================================COMMENT
MEDIUMconfig/services.yaml92 # ================================================================================COMMENT
MEDIUMconfig/services.yaml106 # ================================================================================COMMENT
MEDIUMconfig/services.yaml108 # ================================================================================COMMENT
MEDIUMconfig/services.yaml119 # ================================================================================COMMENT
MEDIUMconfig/services.yaml121 # ================================================================================COMMENT
MEDIUMconfig/services.yaml127 # ================================================================================COMMENT
MEDIUMconfig/services.yaml129 # ================================================================================COMMENT
MEDIUMconfig/packages/kimai.yaml1# ---------------------------------------------------------------------------------------------COMMENT
MEDIUMconfig/packages/kimai.yaml7# ---------------------------------------------------------------------------------------------COMMENT
MEDIUMconfig/packages/kimai.yaml10# --------------------------------------------------------------------------------COMMENT
MEDIUMconfig/packages/kimai.yaml12# --------------------------------------------------------------------------------COMMENT
MEDIUMconfig/packages/kimai.yaml16# --------------------------------------------------------------------------------COMMENT
MEDIUMconfig/packages/kimai.yaml19# --------------------------------------------------------------------------------COMMENT
MEDIUMconfig/packages/kimai.yaml21# --------------------------------------------------------------------------------COMMENT
MEDIUMconfig/packages/kimai.yaml71# --------------------------------------------------------------------------------COMMENT
MEDIUMconfig/packages/kimai.yaml74# --------------------------------------------------------------------------------COMMENT
MEDIUMconfig/packages/kimai.yaml76# --------------------------------------------------------------------------------COMMENT
MEDIUMconfig/packages/kimai.yaml124# --------------------------------------------------------------------------------COMMENT
MEDIUMconfig/packages/kimai.yaml127# --------------------------------------------------------------------------------COMMENT
MEDIUMconfig/packages/kimai.yaml129# --------------------------------------------------------------------------------COMMENT
MEDIUMconfig/packages/kimai.yaml149# --------------------------------------------------------------------------------COMMENT
MEDIUMconfig/packages/kimai.yaml152# --------------------------------------------------------------------------------COMMENT
MEDIUMconfig/packages/kimai.yaml154# --------------------------------------------------------------------------------COMMENT
MEDIUMconfig/packages/kimai.yaml162# --------------------------------------------------------------------------------COMMENT
Fake / Example Data91 hits · 106 pts
SeverityFileLineSnippetContext
LOW…sts/Form/Extension/EnhancedChoiceTypeExtensionTest.php67 ['value' => null, 'attr' => ['size' => 1, 'class' => 'selectpicker', 'data-width' => '50%', 'data-disable-seCODE
LOWtests/Form/Helper/ProjectHelperTest.php87 $project->setComment('Lorem Ipsum');CODE
LOWtests/Form/Helper/ProjectHelperTest.php89 self::assertEquals('FOO BAR - Lorem Ipsum - Acme company - F76/123', $helper->getChoiceLabel($project));CODE
LOWtests/Form/Helper/ActivityHelperTest.php58 $activity->setComment('Lorem Ipsum');CODE
LOWtests/Form/Helper/ActivityHelperTest.php59 self::assertEquals('FOO BAR - Lorem Ipsum', $helper->getChoiceLabel($activity));CODE
LOWtests/Form/Helper/CustomerHelperTest.php66 $customer->setComment('Lorem Ipsum');CODE
LOWtests/Form/Helper/CustomerHelperTest.php67 self::assertEquals('FOO BAR - Lorem Ipsum', $helper->getChoiceLabel($customer));CODE
LOWtests/Form/Helper/CustomerHelperTest.php69 self::assertEquals('FOO BAR - Lorem Ipsum - Acme University', $helper->getChoiceLabel($customer));CODE
LOWtests/Form/Helper/CustomerHelperTest.php71 self::assertEquals('FOO BAR - Lorem Ipsum - Acme University - 2023-0815', $helper->getChoiceLabel($customer));CODE
LOWtests/Mail/KimaiMailerTest.php91 $user->method('getEmail')->willReturn('user@example.com');CODE
LOWtests/Controller/TimesheetControllerTest.php633 self::assertEquals('Lorem Ipsum', $timesheet->getDescription());CODE
LOWtests/Controller/ProfileControllerTest.php46 $this->assertHasProfileBox($client, 'John Doe');CODE
LOWtests/Controller/ProfileControllerTest.php83 $this->assertHasProfileBox($client, 'John Doe');CODE
LOWtests/Controller/ProfileControllerTest.php134 self::assertEquals('John Doe', $user->getAlias());CODE
LOWtests/API/CustomerControllerTest.php332 'email' => 'admin@example.com',CODE
LOWtests/API/CustomerControllerTest.php376 self::assertEquals('admin@example.com', $result['email']);CODE
LOWtests/Command/CreateUserCommandTest.php42 $commandTester = $this->createUser('MyTestUser', 'user@example.com', 'ROLE_USER', 'foobar');CODE
LOWtests/Command/CreateUserCommandTest.php50 $commandTester = $this->createUser('MyTestUser', 'user@example.com', 'ROLE_USER', 'foobar12');CODE
LOWtests/Command/CreateUserCommandTest.php90 $this->createUser('MyTestUser', 'user@example.com', 'ROLE_USER', 'foobar123');CODE
LOWtests/Command/CreateUserCommandTest.php99 $this->createUser('MyTestUser', 'user@example.com', 'ROLE_USER', 'foobar12');CODE
LOWtests/Command/CreateUserCommandTest.php100 $commandTester = $this->createUser('MyTestUser2', 'user@example.com', 'ROLE_USER', 'foobar');CODE
LOWtests/Export/Spreadsheet/CustomerExporterTest.php46 $customer->setComment('Lorem Ipsum');CODE
LOWtests/Export/Spreadsheet/CustomerExporterTest.php94 self::assertEquals('Lorem Ipsum', $worksheet->getCell([++$i, 2])->getValue()); // commentCODE
LOW…xport/Spreadsheet/EntityWithMetaFieldsExporterTest.php47 $project->setComment('Lorem Ipsum');CODE
LOW…xport/Spreadsheet/EntityWithMetaFieldsExporterTest.php75 self::assertEquals('Lorem Ipsum', $worksheet->getCell([++$i, 2])->getValue());CODE
LOWtests/Export/Spreadsheet/ProjectExporterTest.php47 $project->setComment('Lorem Ipsum');CODE
LOWtests/Export/Spreadsheet/ProjectExporterTest.php75 self::assertEquals('Lorem Ipsum', $worksheet->getCell([++$i, 2])->getValue());CODE
LOWtests/Export/Spreadsheet/ActivityExporterTest.php45 $activity->setComment('Lorem Ipsum');CODE
LOWtests/Export/Spreadsheet/ActivityExporterTest.php68 self::assertEquals('Lorem Ipsum', $worksheet->getCell([++$i, 2])->getValue());CODE
LOW…sts/Export/Spreadsheet/AnnotatedObjectExporterTest.php32 $project->setComment('Lorem Ipsum');CODE
LOW…sts/Export/Spreadsheet/AnnotatedObjectExporterTest.php58 self::assertEquals('Lorem Ipsum', $worksheet->getCell([++$i, 2])->getValue());CODE
LOWtests/Export/Spreadsheet/Entities/DemoFull.php22 #[Exporter\Expose(name: 'fake-name', label: 'Protected-Property', type: 'boolean')]COMMENT
LOWtests/Twig/Runtime/MarkdownExtensionTest.php76 $loremIpsum = 'Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt uCODE
LOWtests/Twig/Runtime/MarkdownExtensionTest.php76 $loremIpsum = 'Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt uCODE
LOWtests/Twig/Runtime/MarkdownExtensionTest.php77 $loremIpsumShort = 'Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidCODE
LOWtests/Twig/Runtime/MarkdownExtensionTest.php77 $loremIpsumShort = 'Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidCODE
LOWtests/Twig/Runtime/MarkdownExtensionTest.php108 $loremIpsum = 'Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt uCODE
LOWtests/Twig/Runtime/MarkdownExtensionTest.php108 $loremIpsum = 'Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt uCODE
LOWtests/Twig/Runtime/MarkdownExtensionTest.php116 'Lorem ipsum dolor sit amet, consetetur sadipscing …',CODE
LOWtests/Twig/Runtime/MarkdownExtensionTest.php116 'Lorem ipsum dolor sit amet, consetetur sadipscing …',CODE
LOWtests/Twig/Runtime/MarkdownExtensionTest.php121 'Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore eCODE
LOWtests/Twig/Runtime/MarkdownExtensionTest.php121 'Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore eCODE
LOWtests/Twig/Runtime/MarkdownExtensionTest.php126 'Lorem ipsum dolor sit amet, consetetur sadipscing …',CODE
LOWtests/Twig/Runtime/MarkdownExtensionTest.php126 'Lorem ipsum dolor sit amet, consetetur sadipscing …',CODE
LOWtests/Twig/Runtime/MarkdownExtensionTest.php131 'Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt',CODE
LOWtests/Twig/Runtime/MarkdownExtensionTest.php131 'Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt',CODE
LOWtests/Twig/Runtime/MarkdownExtensionTest.php132 $sut->commentOneLiner(implode(PHP_EOL, ['Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nCODE
LOWtests/Twig/Runtime/MarkdownExtensionTest.php132 $sut->commentOneLiner(implode(PHP_EOL, ['Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nCODE
LOWtests/Twig/Runtime/MarkdownExtensionTest.php136 'Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt …',CODE
LOWtests/Twig/Runtime/MarkdownExtensionTest.php136 'Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt …',CODE
LOWtests/Twig/Runtime/MarkdownExtensionTest.php137 $sut->commentOneLiner(implode(PHP_EOL, ['Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nCODE
LOWtests/Twig/Runtime/MarkdownExtensionTest.php137 $sut->commentOneLiner(implode(PHP_EOL, ['Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nCODE
LOWtests/Twig/Runtime/MarkdownExtensionTest.php141 'Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt',CODE
LOWtests/Twig/Runtime/MarkdownExtensionTest.php141 'Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt',CODE
LOWtests/Twig/Runtime/MarkdownExtensionTest.php142 $sut->commentOneLiner(implode(PHP_EOL, ['Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nCODE
LOWtests/Twig/Runtime/MarkdownExtensionTest.php142 $sut->commentOneLiner(implode(PHP_EOL, ['Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nCODE
LOWtests/Twig/Runtime/MarkdownExtensionTest.php146 'Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt …',CODE
LOWtests/Twig/Runtime/MarkdownExtensionTest.php146 'Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt …',CODE
LOWtests/Twig/Runtime/MarkdownExtensionTest.php147 $sut->commentOneLiner(implode(PHP_EOL, ['Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nCODE
LOWtests/Twig/Runtime/MarkdownExtensionTest.php147 $sut->commentOneLiner(implode(PHP_EOL, ['Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nCODE
31 more matches not shown…
Over-Commented Block66 hits · 64 pts
SeverityFileLineSnippetContext
LOWconfig/packages/kimai.yaml1# ---------------------------------------------------------------------------------------------COMMENT
LOWconfig/packages/kimai.yaml21# --------------------------------------------------------------------------------COMMENT
LOWconfig/packages/kimai.yaml41 #COMMENT
LOWconfig/packages/kimai.yaml61 # days: ['saturday','sunday']COMMENT
LOWconfig/packages/kimai.yaml121 ROLE_TEAMLEAD: ['view_rate_own_timesheet','view_rate_other_timesheet','hourly-rate_own_profile','view_team_mCOMMENT
LOWconfig/packages/kimai.yaml141#COMMENT
LOWtests/API/TimesheetControllerTest.php1721 // CVE-2024-29200 / GHSA-cj3c-5xpm-cx94 — per-record IDOR regression suite.COMMENT
LOWassets/js/widgets/KimaiCalendar.js141COMMENT
LOWsrc/Entity/Team.php21use Symfony\Component\Validator\Constraints as Assert;COMMENT
LOWsrc/Entity/Team.php41 #[ORM\Column(name: 'name', type: Types::STRING, length: 100, nullable: false)]COMMENT
LOWsrc/Entity/BudgetTrait.php21 * The total monetary budget (default: 0).COMMENT
LOWsrc/Entity/UserPreference.php61 #[ORM\JoinColumn(nullable: false, onDelete: 'CASCADE')]COMMENT
LOWsrc/Entity/WorkingTime.php21#[ORM\ChangeTrackingPolicy('DEFERRED_EXPLICIT')]COMMENT
LOWsrc/Entity/Tag.php21#[ORM\UniqueConstraint(columns: ['name'])]COMMENT
LOWsrc/Entity/Tag.php41 #[ORM\Column(name: 'name', type: Types::STRING, length: 100, nullable: false)]COMMENT
LOWsrc/Entity/User.php41#[UniqueEntity('email')]COMMENT
LOWsrc/Entity/User.php81 */COMMENT
LOWsrc/Entity/User.php161 * This flag will be initialized in UserEnvironmentSubscriber.COMMENT
LOWsrc/Entity/User.php181 #[ORM\Column(name: 'account', type: Types::STRING, length: 30, nullable: true)]COMMENT
LOWsrc/Entity/User.php221 private array $roles = [];COMMENT
LOWsrc/Entity/AccessToken.php21#[ORM\ChangeTrackingPolicy('DEFERRED_EXPLICIT')]COMMENT
LOWsrc/Entity/Customer.php41 #[ORM\Id]COMMENT
LOWsrc/Entity/Customer.php61 private ?string $number = null;COMMENT
LOWsrc/Entity/Customer.php81 #[Serializer\Expose]COMMENT
LOWsrc/Entity/Customer.php101 * Unstructured address, better use the fields: addressLine1-3, postcode, city, countryCOMMENT
LOWsrc/Entity/Customer.php121 #[Serializer\Groups(['Default'])]COMMENT
LOWsrc/Entity/Customer.php141 private ?string $mobile = null;COMMENT
LOWsrc/Entity/Customer.php161 * Timezone of begin and endCOMMENT
LOWsrc/Entity/Customer.php201 private ?InvoiceTemplate $invoiceTemplate = null;COMMENT
LOWsrc/Entity/Customer.php221 private ?string $addressLine3 = null;COMMENT
LOWsrc/Entity/Project.php21use JMS\Serializer\Annotation as Serializer;COMMENT
LOWsrc/Entity/Project.php41COMMENT
LOWsrc/Entity/Project.php61 private ?Customer $customer = null;COMMENT
LOWsrc/Entity/Project.php101 #[Serializer\Type(name: "DateTime<'Y-m-d'>")]COMMENT
LOWsrc/Entity/Project.php121 #[Exporter\Expose(label: 'comment')]COMMENT
LOWsrc/Entity/Project.php141 * @var Collection<ProjectMeta>COMMENT
LOWsrc/Entity/Project.php161 #[OA\Property(type: 'array', items: new OA\Items(ref: '#/components/schemas/Team'))]COMMENT
LOWsrc/Entity/ExportTemplate.php21#[ORM\Entity(repositoryClass: ExportTemplateRepository::class)]COMMENT
LOWsrc/Entity/Invoice.php21use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;COMMENT
LOWsrc/Entity/Invoice.php41 public const STATUS_PAID = 'paid';COMMENT
LOWsrc/Entity/Invoice.php61 #[ORM\Column(name: 'comment', type: Types::TEXT, nullable: true)]COMMENT
LOWsrc/Entity/Invoice.php81 #[Assert\NotNull]COMMENT
LOWsrc/Entity/Invoice.php101 #[Serializer\Groups(['Default'])]COMMENT
LOWsrc/Entity/Invoice.php121 #[Serializer\Groups(['Default'])]COMMENT
LOWsrc/Entity/Bookmark.php21#[ORM\ChangeTrackingPolicy('DEFERRED_EXPLICIT')]COMMENT
LOWsrc/Entity/Rate.php21 #[ORM\Id]COMMENT
LOWsrc/Entity/CommentTableTypeTrait.php21 #[ORM\Column(name: 'id', type: Types::INTEGER)]COMMENT
LOWsrc/Entity/Activity.php21use JMS\Serializer\Annotation as Serializer;COMMENT
LOWsrc/Entity/Activity.php41 use CreatedTrait;COMMENT
LOWsrc/Entity/Activity.php61 */COMMENT
LOWsrc/Entity/Activity.php81 #[ORM\Column(name: 'visible', type: Types::BOOLEAN, nullable: false, options: ['default' => true])]COMMENT
LOWsrc/Entity/Activity.php101 #[Serializer\Type(name: 'array<App\Entity\ActivityMeta>')]COMMENT
LOWsrc/Entity/RolePermission.php21#[ORM\ChangeTrackingPolicy('DEFERRED_EXPLICIT')]COMMENT
LOWsrc/Entity/Timesheet.php21use Doctrine\ORM\Mapping as ORM;COMMENT
LOWsrc/Entity/Timesheet.php41#[ORM\Index(columns: ['user', 'id', 'duration'], name: 'IDX_TIMESHEET_RESULT_STATS')]COMMENT
LOWsrc/Entity/Timesheet.php101 * Attention: Accessor MUST be used, otherwise date will be serialized in UTC.COMMENT
LOWsrc/Entity/Timesheet.php141 #[Assert\NotNull]COMMENT
LOWsrc/Entity/Timesheet.php161 #[Serializer\Expose]COMMENT
LOWsrc/Entity/Timesheet.php181 #[Serializer\Expose]COMMENT
LOWsrc/Entity/InvoiceTemplate.php21#[ORM\UniqueConstraint(columns: ['name'])]COMMENT
6 more matches not shown…
Synthetic Comment Markers1 hit · 5 pts
SeverityFileLineSnippetContext
HIGHUPGRADING-1.md89 - some representation names changed (eg. from `ActivityMetaField` to `ActivityMeta`, `TimesheetSubCollection` vs `TiCODE
Example Usage Blocks2 hits · 4 pts
SeverityFileLineSnippetContext
LOWphpstan.sh6# Usage:COMMENT
LOWphp-cs-fixer.sh6# Usage:COMMENT
Slop Phrases1 hit · 3 pts
SeverityFileLineSnippetContext
MEDIUMsrc/API/StatusController.php34 #[OA\Response(response: 200, description: "A simple route that returns a 'pong', which you can use for testing the ACOMMENT
AI Slop Vocabulary1 hit · 3 pts
SeverityFileLineSnippetContext
MEDIUMsrc/Invoice/Renderer/AbstractSpreadsheetRenderer.php85 // templates can have a formula, which utilize the timesheet records content like this:COMMENT