{
"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 Pre-Rules Import\nprint('Pre-Rules geladen:', len(pre_rules.PHP_RULES), 'PHP-Regeln')\n\n# Test Post-Rules Import\nprint('Post-Rules geladen:', len(post_rules.RULES), 'Warn-Regeln')\n\n# Test P8.x: Deterministic\ntest_code_time = '''<?php\ndeclare(strict_types=1);\n\/\/ @responsibility: Test\n\\$now = time();\n'''\n\nresult = pre_rules.check('\/src\/Test.php', test_code_time)\nprint('P8.1 time() blockiert:', not result.get('allowed', True))\n\n# Test W8.1: Empty catch\ntest_code_catch = '''<?php\ntry {\n doSomething();\n} catch (Exception \\$e) {\n}\n'''\n\nresult = post_rules.check('\/src\/Test.php', test_code_catch)\nprint('W8.1 Empty catch warnt:', any('W8.1' in w for w in result.get('warnings', [])))\n\n# Test W15.1: Getter with side effect\ntest_code_getter = '''<?php\nclass Test {\n public function getName(): string {\n \\$this->counter++;\n return \\$this->name;\n }\n}\n'''\n\nresult = post_rules.check('\/src\/Test.php', test_code_getter)\nprint('W15.1 Getter Sideeffect warnt:', any('W15.1' in w for w in result.get('warnings', [])))\n\nprint('\\\\nAlle Tests bestanden!')\n\"\n",
"description": "Test new quality rules"
}
}
{
"tool_response": {
"stdout": "Pre-Rules geladen: 26 PHP-Regeln\nPost-Rules geladen: 31 Warn-Regeln\nP8.1 time() blockiert: True\nW8.1 Empty catch warnt: True\nW15.1 Getter Sideeffect warnt: True\n\nAlle Tests bestanden!",
"stderr": "",
"interrupted": false,
"isImage": false
}
}