{
"event": "PreToolUse",
"tool_name": "Bash",
"tool_input": {
"command": "cd \/var\/www\/tools\/ki-protokoll\/claude-hook && python3 -c \"\nfrom quality import pre_rules, post_rules\n\n# Test 1: Pre-Hook mit kritischer Magic Number\ntest_php = '''<?php\n\/\/ @responsibility: Test file\n\nclass Test {\n public function getTimeout() {\n return 3600; \/\/ Eine Stunde\n }\n}\n'''\n\nresult = pre_rules.check('\/var\/www\/dev.campus.systemische-tools.de\/src\/Test.php', test_php)\nprint('=== Pre-Hook Test (critical magic 3600) ===')\nprint(f'Allowed: {result.get(\\\"allowed\\\")}')\nprint(f'Message: {result.get(\\\"message\\\", \\\"\\\")}')\n\n# Test 2: Pre-Hook mit Zeit-Berechnung\ntest_calc = '''<?php\n\/\/ @responsibility: Test file\n\nclass Test {\n public function getSeconds() {\n return \\$hours * 60 * 60;\n }\n}\n'''\n\nresult = pre_rules.check('\/var\/www\/dev.campus.systemische-tools.de\/src\/Test.php', test_calc)\nprint()\nprint('=== Pre-Hook Test (time calculation) ===')\nprint(f'Allowed: {result.get(\\\"allowed\\\")}')\nprint(f'Message: {result.get(\\\"message\\\", \\\"\\\")}')\n\n# Test 3: Pre-Hook mit korrekter Verwendung (sollte erlaubt sein)\ntest_good = '''<?php\n\/\/ @responsibility: Test file\nuse Domain\\Constants;\n\nclass Test {\n public function getTimeout() {\n return Constants::SECONDS_PER_HOUR;\n }\n}\n'''\n\nresult = pre_rules.check('\/var\/www\/dev.campus.systemische-tools.de\/src\/Test.php', test_good)\nprint()\nprint('=== Pre-Hook Test (correct usage) ===')\nprint(f'Allowed: {result.get(\\\"allowed\\\")}')\n\n# Test 4: Post-Hook Warnungen\ntest_warnings = '''<?php\n\/\/ @responsibility: Test file\n\nclass Test {\n public function getLimit() {\n return 1000;\n }\n \n public function getTimeout() {\n return 60;\n }\n}\n'''\n\nresult = post_rules.check('\/var\/www\/dev.campus.systemische-tools.de\/src\/Test.php', test_warnings)\nprint()\nprint('=== Post-Hook Test (warnings) ===')\nfor w in result.get('warnings', []):\n print(f' - {w}')\n\"\n",
"description": "Test pre and post hooks for magic numbers"
}
}
{
"tool_response": {
"stdout": "=== Pre-Hook Test (critical magic 3600) ===\nAllowed: False\nMessage: QUALITY VIOLATION [P3.1]: Missing declare(strict_types=1)\n\n=== Pre-Hook Test (time calculation) ===\nAllowed: False\nMessage: QUALITY VIOLATION [P3.1]: Missing declare(strict_types=1)\n\n=== Pre-Hook Test (correct usage) ===\nAllowed: False\n\n=== Post-Hook Test (warnings) ===\n - W7.1: Magic number 1000 at line 6. Consider using Constants::BATCH_LIMIT or MS_PER_SECOND\n - W7.1: Magic number 60 at line 10. Consider using Constants::SECONDS_PER_MINUTE\n - W7.2: File uses magic number 1000 but missing 'use Domain\\Constants'. Add import and use named constants.\n<string>:40: SyntaxWarning: invalid escape sequence '\\C'\n\/var\/www\/tools\/ki-protokoll\/claude-hook\/quality\/rules_constants.py:6: SyntaxWarning: invalid escape sequence '\\C'\n empfiehlt die Verwendung von Domain\\Constants.",
"stderr": "",
"interrupted": false,
"isImage": false
}
}