tree-sitter-analyzer 1.8.4__tar.gz → 1.9.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of tree-sitter-analyzer might be problematic. Click here for more details.
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/CHANGELOG.md +37 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/PKG-INFO +23 -6
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/README.md +22 -5
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/README_ja.md +22 -5
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/README_zh.md +22 -5
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/collect_project_metrics.py +80 -60
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/debug_async_test.py +23 -19
- tree_sitter_analyzer-1.9.1/docs/analysis/technical_debt_analysis_2025-10-16.md +111 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/examples/cache_demo.py +2 -2
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/examples/css_analysis_demo.py +219 -154
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/examples/file_output_demo.py +61 -48
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/examples/file_output_factory_demo.py +80 -56
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/examples/html_analysis_demo.py +90 -81
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/examples/javascript_analysis_demo.py +1 -1
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/examples/suppress_output_demo.py +57 -52
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/pyproject.toml +2 -2
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/run_regression_tests.py +139 -93
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/scripts/gitflow_release_automation.py +1 -1
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/scripts/run_phase7_integration_tests.py +109 -97
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/scripts/sync_version.py +6 -2
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/scripts/update_readme_stats.py +95 -98
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/test_emergency_fix.py +33 -23
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/test_fixes.py +56 -39
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/tree_sitter_analyzer/__init__.py +1 -1
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/tree_sitter_analyzer/api.py +4 -4
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/tree_sitter_analyzer/cli/argument_validator.py +29 -17
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/tree_sitter_analyzer/cli/commands/advanced_command.py +7 -5
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/tree_sitter_analyzer/cli/commands/structure_command.py +7 -5
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/tree_sitter_analyzer/cli/commands/summary_command.py +10 -6
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/tree_sitter_analyzer/cli/commands/table_command.py +8 -7
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/tree_sitter_analyzer/cli/info_commands.py +1 -1
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/tree_sitter_analyzer/cli_main.py +3 -2
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/tree_sitter_analyzer/core/analysis_engine.py +5 -5
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/tree_sitter_analyzer/core/cache_service.py +3 -1
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/tree_sitter_analyzer/core/query.py +17 -5
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/tree_sitter_analyzer/core/query_service.py +1 -1
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/tree_sitter_analyzer/encoding_utils.py +3 -3
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/tree_sitter_analyzer/exceptions.py +61 -50
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/tree_sitter_analyzer/file_handler.py +3 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/tree_sitter_analyzer/formatters/base_formatter.py +10 -5
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/tree_sitter_analyzer/formatters/formatter_registry.py +83 -68
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/tree_sitter_analyzer/formatters/html_formatter.py +90 -64
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/tree_sitter_analyzer/formatters/javascript_formatter.py +21 -16
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/tree_sitter_analyzer/formatters/language_formatter_factory.py +7 -6
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/tree_sitter_analyzer/formatters/markdown_formatter.py +247 -124
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/tree_sitter_analyzer/formatters/python_formatter.py +61 -38
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/tree_sitter_analyzer/formatters/typescript_formatter.py +113 -45
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/tree_sitter_analyzer/interfaces/mcp_server.py +2 -2
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/tree_sitter_analyzer/language_detector.py +6 -6
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/tree_sitter_analyzer/language_loader.py +3 -1
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/tree_sitter_analyzer/languages/css_plugin.py +120 -61
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/tree_sitter_analyzer/languages/html_plugin.py +159 -62
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/tree_sitter_analyzer/languages/java_plugin.py +42 -34
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/tree_sitter_analyzer/languages/javascript_plugin.py +59 -30
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/tree_sitter_analyzer/languages/markdown_plugin.py +402 -368
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/tree_sitter_analyzer/languages/python_plugin.py +111 -64
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/tree_sitter_analyzer/languages/typescript_plugin.py +241 -132
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/tree_sitter_analyzer/mcp/server.py +22 -18
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/tree_sitter_analyzer/mcp/tools/analyze_scale_tool.py +13 -8
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/tree_sitter_analyzer/mcp/tools/base_tool.py +2 -2
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/tree_sitter_analyzer/mcp/tools/fd_rg_utils.py +232 -26
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/tree_sitter_analyzer/mcp/tools/find_and_grep_tool.py +31 -23
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/tree_sitter_analyzer/mcp/tools/list_files_tool.py +21 -19
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/tree_sitter_analyzer/mcp/tools/query_tool.py +17 -18
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/tree_sitter_analyzer/mcp/tools/read_partial_tool.py +30 -31
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/tree_sitter_analyzer/mcp/tools/search_content_tool.py +131 -77
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/tree_sitter_analyzer/mcp/tools/table_format_tool.py +29 -16
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/tree_sitter_analyzer/mcp/utils/file_output_factory.py +64 -51
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/tree_sitter_analyzer/mcp/utils/file_output_manager.py +34 -24
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/tree_sitter_analyzer/mcp/utils/gitignore_detector.py +8 -4
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/tree_sitter_analyzer/models.py +7 -5
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/tree_sitter_analyzer/plugins/base.py +9 -7
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/tree_sitter_analyzer/plugins/manager.py +1 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/tree_sitter_analyzer/queries/css.py +2 -21
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/tree_sitter_analyzer/queries/html.py +2 -15
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/tree_sitter_analyzer/queries/markdown.py +30 -41
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/tree_sitter_analyzer/queries/python.py +20 -5
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/tree_sitter_analyzer/query_loader.py +5 -5
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/tree_sitter_analyzer/security/validator.py +114 -86
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/tree_sitter_analyzer/utils/__init__.py +58 -28
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/tree_sitter_analyzer/utils/tree_sitter_compat.py +72 -65
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/tree_sitter_analyzer/utils.py +26 -15
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/upload_to_pypi.py +2 -6
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/uv.lock +2 -2
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/.gitattributes +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/.gitignore +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/.kiro/steering/product.md +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/.kiro/steering/structure.md +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/.kiro/steering/tech.md +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/.pre-commit-config.yaml +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/.pre-commit-hooks.yaml +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/.roo/AGENTS.md +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/.roo/commands/release.md +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/.roo/commands/speckit.analyze.md +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/.roo/commands/speckit.checklist.md +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/.roo/commands/speckit.clarify.md +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/.roo/commands/speckit.constitution.md +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/.roo/commands/speckit.implement.md +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/.roo/commands/speckit.plan.md +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/.roo/commands/speckit.specify.md +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/.roo/commands/speckit.tasks.md +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/.roo/docs/release.md +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/.roo/docs/speckit.analyze.md +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/.roo/docs/speckit.checklist.md +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/.roo/docs/speckit.clarify.md +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/.roo/docs/speckit.constitution.md +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/.roo/docs/speckit.implement.md +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/.roo/docs/speckit.plan.md +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/.roo/docs/speckit.specify.md +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/.roo/docs/speckit.tasks.md +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/.roo/rules/specify-rules.md +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/.specify/async-query-service-fix/checklists/requirements.md +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/.specify/async-query-service-fix/completion-report-template.md +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/.specify/async-query-service-fix/completion-report.md +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/.specify/async-query-service-fix/contracts/query-service-api.md +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/.specify/async-query-service-fix/data-model.md +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/.specify/async-query-service-fix/implementation-guidelines-part2.md +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/.specify/async-query-service-fix/implementation-guidelines.md +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/.specify/async-query-service-fix/plan.md +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/.specify/async-query-service-fix/progress-management-final.md +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/.specify/async-query-service-fix/progress-management.md +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/.specify/async-query-service-fix/project-overview.md +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/.specify/async-query-service-fix/quickstart.md +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/.specify/async-query-service-fix/research.md +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/.specify/async-query-service-fix/spec.md +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/.specify/async-query-service-fix/tasks.md +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/.specify/memory/constitution.md +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/.specify/scripts/powershell/check-prerequisites.ps1 +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/.specify/scripts/powershell/common.ps1 +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/.specify/scripts/powershell/create-new-feature.ps1 +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/.specify/scripts/powershell/setup-plan.ps1 +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/.specify/scripts/powershell/update-agent-context.ps1 +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/.specify/templates/agent-file-template.md +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/.specify/templates/checklist-template.md +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/.specify/templates/plan-template.md +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/.specify/templates/spec-template.md +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/.specify/templates/tasks-template.md +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/ASYNC_ARCHITECTURE_DESIGN.md +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/CLI_ARCHITECTURE_REDESIGN.md +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/CLI_COMMAND_BUG_FIX_SPECIFICATION.md +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/GITFLOW.md +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/GITFLOW_ja.md +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/GITFLOW_zh.md +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/IMPLEMENTATION_GUIDELINES.md +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/build_standalone.py +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/check_quality.py +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/coverage.json +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/docs/CONTRIBUTING.md +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/docs/analysis/README.md +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/docs/analysis/project_metrics_2025-10-16.md +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/docs/analysis/speckit_analysis_2025-10-16.md +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/docs/api/data_models.md +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/docs/api/formatter_registry.md +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/docs/api/mcp_tools_specification.md +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/docs/debugging_guide.md +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/docs/developer_guide.md +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/docs/file_output_manager_factory_implementation.md +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/docs/test_fixes/suppress_output_mock_fix_2025-10-16.md +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/docs/troubleshooting_guide.md +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/examples/BigService.java +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/examples/BigService.json +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/examples/BigService.summary.json +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/examples/ComprehensiveTypeScript.ts +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/examples/JavaDocTest.java +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/examples/ModernJavaScript.js +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/examples/MultiClass.java +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/examples/ReactComponent.jsx +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/examples/ReactTypeScriptComponent.tsx +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/examples/Sample.java +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/examples/TypeScriptDeclarations.d.ts +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/examples/calculate_token_comparison.py +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/examples/comprehensive_sample.css +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/examples/comprehensive_sample.html +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/examples/project_root_demo.py +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/examples/sample.py +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/examples/security_demo.py +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/examples/security_integration_demo.py +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/examples/smart_cache_demo.py +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/examples/test_markdown.md +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/examples/total_only_optimization_demo.py +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/llm_code_checker.py +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/project_scale_evaluation_report.md +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/pypirc_example.txt +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/pytest.ini +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/scripts/README.md +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/scripts/gitflow_helper.py +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/scripts/sync_version_minimal.py +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/specs/001-mcp-tree-sitter/DEPLOYMENT_GUIDE.md +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/specs/001-mcp-tree-sitter/DOCUMENTATION_INDEX.md +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/specs/001-mcp-tree-sitter/ERROR_HANDLING_SPECIFICATION.md +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/specs/001-mcp-tree-sitter/GLOSSARY.md +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/specs/001-mcp-tree-sitter/PERFORMANCE_BENCHMARKS.md +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/specs/001-mcp-tree-sitter/README.md +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/specs/001-mcp-tree-sitter/checklists/requirements.md +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/specs/001-mcp-tree-sitter/contracts/mcp-resources-api.json +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/specs/001-mcp-tree-sitter/contracts/mcp-tools-api.json +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/specs/001-mcp-tree-sitter/data-model.md +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/specs/001-mcp-tree-sitter/implementation_status.md +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/specs/001-mcp-tree-sitter/plan.md +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/specs/001-mcp-tree-sitter/quickstart.md +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/specs/001-mcp-tree-sitter/research.md +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/specs/001-mcp-tree-sitter/resources/mcp_resources_specification.md +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/specs/001-mcp-tree-sitter/spec.md +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/specs/001-mcp-tree-sitter/tasks.md +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/specs/001-mcp-tree-sitter/test_environment_status.md +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/specs/001-mcp-tree-sitter/tools/analyze_code_structure_specification.md +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/specs/001-mcp-tree-sitter/tools/check_code_scale_specification.md +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/specs/001-mcp-tree-sitter/tools/extract_code_section_specification.md +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/specs/001-mcp-tree-sitter/tools/find_and_grep_specification.md +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/specs/001-mcp-tree-sitter/tools/list_files_specification.md +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/specs/001-mcp-tree-sitter/tools/query_code_specification.md +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/specs/001-mcp-tree-sitter/tools/search_content_specification.md +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/specs/001-mcp-tree-sitter/tools/set_project_path_specification.md +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/specs/002-language-abstraction-spec.md +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/specs/003-html-css-support-spec.md +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/specs/004-formatter-extension-spec.md +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/specs/005-implementation-plan.md +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/start_mcp_server.py +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/test_output.txt +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/tree_sitter_analyzer/__main__.py +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/tree_sitter_analyzer/cli/__init__.py +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/tree_sitter_analyzer/cli/__main__.py +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/tree_sitter_analyzer/cli/commands/__init__.py +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/tree_sitter_analyzer/cli/commands/base_command.py +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/tree_sitter_analyzer/cli/commands/default_command.py +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/tree_sitter_analyzer/cli/commands/find_and_grep_cli.py +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/tree_sitter_analyzer/cli/commands/list_files_cli.py +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/tree_sitter_analyzer/cli/commands/partial_read_command.py +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/tree_sitter_analyzer/cli/commands/query_command.py +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/tree_sitter_analyzer/cli/commands/search_content_cli.py +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/tree_sitter_analyzer/constants.py +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/tree_sitter_analyzer/core/__init__.py +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/tree_sitter_analyzer/core/engine.py +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/tree_sitter_analyzer/core/parser.py +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/tree_sitter_analyzer/core/query_filter.py +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/tree_sitter_analyzer/formatters/__init__.py +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/tree_sitter_analyzer/formatters/formatter_factory.py +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/tree_sitter_analyzer/formatters/java_formatter.py +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/tree_sitter_analyzer/interfaces/__init__.py +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/tree_sitter_analyzer/interfaces/cli.py +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/tree_sitter_analyzer/interfaces/cli_adapter.py +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/tree_sitter_analyzer/interfaces/mcp_adapter.py +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/tree_sitter_analyzer/languages/__init__.py +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/tree_sitter_analyzer/mcp/__init__.py +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/tree_sitter_analyzer/mcp/resources/__init__.py +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/tree_sitter_analyzer/mcp/resources/code_file_resource.py +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/tree_sitter_analyzer/mcp/resources/project_stats_resource.py +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/tree_sitter_analyzer/mcp/tools/__init__.py +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/tree_sitter_analyzer/mcp/tools/analyze_scale_tool_cli_compatible.py +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/tree_sitter_analyzer/mcp/tools/universal_analyze_tool.py +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/tree_sitter_analyzer/mcp/utils/__init__.py +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/tree_sitter_analyzer/mcp/utils/error_handler.py +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/tree_sitter_analyzer/mcp/utils/path_resolver.py +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/tree_sitter_analyzer/mcp/utils/search_cache.py +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/tree_sitter_analyzer/output_manager.py +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/tree_sitter_analyzer/plugins/__init__.py +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/tree_sitter_analyzer/project_detector.py +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/tree_sitter_analyzer/queries/__init__.py +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/tree_sitter_analyzer/queries/java.py +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/tree_sitter_analyzer/queries/javascript.py +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/tree_sitter_analyzer/queries/typescript.py +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/tree_sitter_analyzer/security/__init__.py +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/tree_sitter_analyzer/security/boundary_manager.py +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/tree_sitter_analyzer/security/regex_checker.py +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/tree_sitter_analyzer/table_formatter.py +0 -0
- {tree_sitter_analyzer-1.8.4 → tree_sitter_analyzer-1.9.1}/upload_interactive.py +0 -0
|
@@ -1,5 +1,42 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [1.9.1] - 2025-10-16
|
|
4
|
+
|
|
5
|
+
### 🐛 修正
|
|
6
|
+
- **HTMLフォーマッター警告解消**: 重複登録による警告メッセージを完全解消
|
|
7
|
+
- **パッケージインストール**: クリーンな出力を実現
|
|
8
|
+
- **フォーマッター登録**: 一元管理による安定化
|
|
9
|
+
|
|
10
|
+
### 🔧 技術改善
|
|
11
|
+
- html_formatter.pyの自動登録機能を削除
|
|
12
|
+
- formatter_registry.pyでの一元管理に統一
|
|
13
|
+
- 重複登録の根本的防止
|
|
14
|
+
|
|
15
|
+
### 修正された警告
|
|
16
|
+
- `WARNING: Overriding existing formatter for format: html`
|
|
17
|
+
- `WARNING: Overriding existing formatter for format: html_json`
|
|
18
|
+
- `WARNING: Overriding existing formatter for format: html_compact`
|
|
19
|
+
|
|
20
|
+
## [1.9.0] - 2025-10-16
|
|
21
|
+
|
|
22
|
+
### 🚀 新機能
|
|
23
|
+
- **並行処理エンジン**: search_content MCPツールで複数ディレクトリの並行検索対応
|
|
24
|
+
- **パフォーマンス向上**: 最大4倍の検索速度向上
|
|
25
|
+
- **型安全性改善**: mypyエラー7%削減(341個→318個)
|
|
26
|
+
|
|
27
|
+
### 🔧 改善
|
|
28
|
+
- コードスタイル統一(ruff違反大幅削減)
|
|
29
|
+
- 技術的負債の包括的解消
|
|
30
|
+
- テスト実行時間83%短縮の維持
|
|
31
|
+
|
|
32
|
+
### 🧪 テスト
|
|
33
|
+
- 並行処理機能の包括的テストスイート追加
|
|
34
|
+
- エラーハンドリングとタイムアウト制御の強化
|
|
35
|
+
|
|
36
|
+
### 📚 ドキュメント
|
|
37
|
+
- 技術的負債分析レポート追加
|
|
38
|
+
- 次期開発計画の策定
|
|
39
|
+
|
|
3
40
|
## [1.8.4] - 2025-10-16
|
|
4
41
|
|
|
5
42
|
### 🚀 Added
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: tree-sitter-analyzer
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.9.1
|
|
4
4
|
Summary: AI-era enterprise-grade code analysis tool with comprehensive HTML/CSS support, dynamic plugin architecture, and MCP integration
|
|
5
5
|
Project-URL: Homepage, https://github.com/aimasteracc/tree-sitter-analyzer
|
|
6
6
|
Project-URL: Documentation, https://github.com/aimasteracc/tree-sitter-analyzer#readme
|
|
@@ -198,11 +198,11 @@ Description-Content-Type: text/markdown
|
|
|
198
198
|
|
|
199
199
|
[](https://python.org)
|
|
200
200
|
[](LICENSE)
|
|
201
|
-
[](#quality-assurance)
|
|
202
202
|
[](https://codecov.io/gh/aimasteracc/tree-sitter-analyzer)
|
|
203
203
|
[](#quality-assurance)
|
|
204
204
|
[](https://pypi.org/project/tree-sitter-analyzer/)
|
|
205
|
-
[](https://github.com/aimasteracc/tree-sitter-analyzer/releases)
|
|
206
206
|
[](https://zread.ai/aimasteracc/tree-sitter-analyzer)
|
|
207
207
|
[](https://github.com/aimasteracc/tree-sitter-analyzer)
|
|
208
208
|
|
|
@@ -255,7 +255,7 @@ Tree-sitter Analyzer is an enterprise-grade code analysis tool designed for the
|
|
|
255
255
|
| **Go** | Basic Support | Basic syntax parsing |
|
|
256
256
|
|
|
257
257
|
### 🏆 Production Ready
|
|
258
|
-
- **3,
|
|
258
|
+
- **3,370 Tests** - 100% pass rate, enterprise-grade quality assurance
|
|
259
259
|
- **High Coverage** - Comprehensive test coverage
|
|
260
260
|
- **Cross-platform Support** - Compatible with Windows, macOS, Linux
|
|
261
261
|
- **Continuous Maintenance** - Active development and community support
|
|
@@ -634,13 +634,30 @@ Tree-sitter Analyzer provides a rich set of MCP tools designed for AI assistants
|
|
|
634
634
|
| | `analyze_code_structure` | Code structure analysis and table generation | 🆕 suppress_output parameter, multiple formats (full/compact/csv/json/html), automatic language detection |
|
|
635
635
|
| | `extract_code_section` | Precise code section extraction | Specified line range extraction, large file efficient processing, original format preservation |
|
|
636
636
|
| **🔍 Intelligent Search** | `list_files` | High-performance file discovery | fd-based, glob patterns, file type filters, time range control |
|
|
637
|
-
| | `search_content` | Regex content search | ripgrep-based, multiple output formats, context control, encoding handling, 🆕 unified `set_project_path` support |
|
|
637
|
+
| | `search_content` | Regex content search | ripgrep-based, multiple output formats, context control, encoding handling, 🆕 parallel processing engine, unified `set_project_path` support |
|
|
638
638
|
| | `find_and_grep` | Two-stage search | File discovery → content search, fd+ripgrep combination, intelligent cache optimization, 🆕 unified `set_project_path` support |
|
|
639
639
|
| **🔧 Advanced Queries** | `query_code` | tree-sitter queries | Predefined query keys, custom query strings, filter expression support |
|
|
640
640
|
| **⚙️ System Management** | `set_project_path` | Project root path setting | Security boundary control, automatic path validation, 🆕 unified across all MCP tools |
|
|
641
641
|
| **📁 Resource Access** | Code file resources | URI code file access | File content access via URI identification |
|
|
642
642
|
| | Project statistics resources | Project statistics data access | Project analysis data and statistical information |
|
|
643
643
|
|
|
644
|
+
### 🆕 v1.9.0 New Feature: Parallel Processing Engine
|
|
645
|
+
|
|
646
|
+
Revolutionary parallel processing capabilities for enhanced search performance:
|
|
647
|
+
|
|
648
|
+
- **🔄 Parallel Processing Engine**: search_content MCP tool now supports parallel processing for multiple directories
|
|
649
|
+
- **⚡ Performance Boost**: Up to 4x faster search speeds for large codebases
|
|
650
|
+
- **🛡️ Type Safety Improvements**: 7% reduction in mypy errors (341→318)
|
|
651
|
+
- **✨ Code Style Unification**: Significant reduction in ruff violations
|
|
652
|
+
- **🏗️ Technical Debt Resolution**: Comprehensive code quality improvements
|
|
653
|
+
- **🚀 Test Execution Time**: Maintained 83% reduction (215s→37s)
|
|
654
|
+
|
|
655
|
+
#### 🔄 Parallel Processing Details
|
|
656
|
+
- **Automatic Parallel Execution**: Multiple roots directories are automatically processed in parallel
|
|
657
|
+
- **Configurable Control**: `enable_parallel` option for control (default: True)
|
|
658
|
+
- **Scalable Performance**: Performance improvements scale with directory count
|
|
659
|
+
- **Memory Efficient**: Semaphore-controlled concurrent execution limits
|
|
660
|
+
|
|
644
661
|
### 🆕 v1.8.4 New Feature: Configurable File Logging
|
|
645
662
|
|
|
646
663
|
Revolutionary environment variable-controlled file logging system:
|
|
@@ -873,7 +890,7 @@ uv run python -m tree_sitter_analyzer --show-query-languages
|
|
|
873
890
|
## 8. 🏆 Quality Assurance
|
|
874
891
|
|
|
875
892
|
### 📊 Quality Metrics
|
|
876
|
-
- **3,
|
|
893
|
+
- **3,370 tests** - 100% pass rate ✅
|
|
877
894
|
- **High code coverage** - Comprehensive test suite
|
|
878
895
|
- **Zero test failures** - Production ready
|
|
879
896
|
- **Cross-platform support** - Windows, macOS, Linux
|
|
@@ -4,11 +4,11 @@
|
|
|
4
4
|
|
|
5
5
|
[](https://python.org)
|
|
6
6
|
[](LICENSE)
|
|
7
|
-
[](#quality-assurance)
|
|
8
8
|
[](https://codecov.io/gh/aimasteracc/tree-sitter-analyzer)
|
|
9
9
|
[](#quality-assurance)
|
|
10
10
|
[](https://pypi.org/project/tree-sitter-analyzer/)
|
|
11
|
-
[](https://github.com/aimasteracc/tree-sitter-analyzer/releases)
|
|
12
12
|
[](https://zread.ai/aimasteracc/tree-sitter-analyzer)
|
|
13
13
|
[](https://github.com/aimasteracc/tree-sitter-analyzer)
|
|
14
14
|
|
|
@@ -61,7 +61,7 @@ Tree-sitter Analyzer is an enterprise-grade code analysis tool designed for the
|
|
|
61
61
|
| **Go** | Basic Support | Basic syntax parsing |
|
|
62
62
|
|
|
63
63
|
### 🏆 Production Ready
|
|
64
|
-
- **3,
|
|
64
|
+
- **3,370 Tests** - 100% pass rate, enterprise-grade quality assurance
|
|
65
65
|
- **High Coverage** - Comprehensive test coverage
|
|
66
66
|
- **Cross-platform Support** - Compatible with Windows, macOS, Linux
|
|
67
67
|
- **Continuous Maintenance** - Active development and community support
|
|
@@ -440,13 +440,30 @@ Tree-sitter Analyzer provides a rich set of MCP tools designed for AI assistants
|
|
|
440
440
|
| | `analyze_code_structure` | Code structure analysis and table generation | 🆕 suppress_output parameter, multiple formats (full/compact/csv/json/html), automatic language detection |
|
|
441
441
|
| | `extract_code_section` | Precise code section extraction | Specified line range extraction, large file efficient processing, original format preservation |
|
|
442
442
|
| **🔍 Intelligent Search** | `list_files` | High-performance file discovery | fd-based, glob patterns, file type filters, time range control |
|
|
443
|
-
| | `search_content` | Regex content search | ripgrep-based, multiple output formats, context control, encoding handling, 🆕 unified `set_project_path` support |
|
|
443
|
+
| | `search_content` | Regex content search | ripgrep-based, multiple output formats, context control, encoding handling, 🆕 parallel processing engine, unified `set_project_path` support |
|
|
444
444
|
| | `find_and_grep` | Two-stage search | File discovery → content search, fd+ripgrep combination, intelligent cache optimization, 🆕 unified `set_project_path` support |
|
|
445
445
|
| **🔧 Advanced Queries** | `query_code` | tree-sitter queries | Predefined query keys, custom query strings, filter expression support |
|
|
446
446
|
| **⚙️ System Management** | `set_project_path` | Project root path setting | Security boundary control, automatic path validation, 🆕 unified across all MCP tools |
|
|
447
447
|
| **📁 Resource Access** | Code file resources | URI code file access | File content access via URI identification |
|
|
448
448
|
| | Project statistics resources | Project statistics data access | Project analysis data and statistical information |
|
|
449
449
|
|
|
450
|
+
### 🆕 v1.9.0 New Feature: Parallel Processing Engine
|
|
451
|
+
|
|
452
|
+
Revolutionary parallel processing capabilities for enhanced search performance:
|
|
453
|
+
|
|
454
|
+
- **🔄 Parallel Processing Engine**: search_content MCP tool now supports parallel processing for multiple directories
|
|
455
|
+
- **⚡ Performance Boost**: Up to 4x faster search speeds for large codebases
|
|
456
|
+
- **🛡️ Type Safety Improvements**: 7% reduction in mypy errors (341→318)
|
|
457
|
+
- **✨ Code Style Unification**: Significant reduction in ruff violations
|
|
458
|
+
- **🏗️ Technical Debt Resolution**: Comprehensive code quality improvements
|
|
459
|
+
- **🚀 Test Execution Time**: Maintained 83% reduction (215s→37s)
|
|
460
|
+
|
|
461
|
+
#### 🔄 Parallel Processing Details
|
|
462
|
+
- **Automatic Parallel Execution**: Multiple roots directories are automatically processed in parallel
|
|
463
|
+
- **Configurable Control**: `enable_parallel` option for control (default: True)
|
|
464
|
+
- **Scalable Performance**: Performance improvements scale with directory count
|
|
465
|
+
- **Memory Efficient**: Semaphore-controlled concurrent execution limits
|
|
466
|
+
|
|
450
467
|
### 🆕 v1.8.4 New Feature: Configurable File Logging
|
|
451
468
|
|
|
452
469
|
Revolutionary environment variable-controlled file logging system:
|
|
@@ -679,7 +696,7 @@ uv run python -m tree_sitter_analyzer --show-query-languages
|
|
|
679
696
|
## 8. 🏆 Quality Assurance
|
|
680
697
|
|
|
681
698
|
### 📊 Quality Metrics
|
|
682
|
-
- **3,
|
|
699
|
+
- **3,370 tests** - 100% pass rate ✅
|
|
683
700
|
- **High code coverage** - Comprehensive test suite
|
|
684
701
|
- **Zero test failures** - Production ready
|
|
685
702
|
- **Cross-platform support** - Windows, macOS, Linux
|
|
@@ -4,11 +4,11 @@
|
|
|
4
4
|
|
|
5
5
|
[](https://python.org)
|
|
6
6
|
[](LICENSE)
|
|
7
|
-
[](#8--品質保証)
|
|
8
8
|
[](https://codecov.io/gh/aimasteracc/tree-sitter-analyzer)
|
|
9
9
|
[](#8--品質保証)
|
|
10
10
|
[](https://pypi.org/project/tree-sitter-analyzer/)
|
|
11
|
-
[](https://github.com/aimasteracc/tree-sitter-analyzer/releases)
|
|
12
12
|
[](https://zread.ai/aimasteracc/tree-sitter-analyzer)
|
|
13
13
|
[](https://github.com/aimasteracc/tree-sitter-analyzer)
|
|
14
14
|
|
|
@@ -61,7 +61,7 @@ Tree-sitter Analyzerは、AI時代のために設計されたエンタープラ
|
|
|
61
61
|
| **Go** | 基本サポート | 基本構文解析 |
|
|
62
62
|
|
|
63
63
|
### 🏆 本番環境対応
|
|
64
|
-
- **3,
|
|
64
|
+
- **3,370のテスト** - 100%合格率、エンタープライズグレードの品質保証
|
|
65
65
|
- **高カバレッジ** - 包括的なテストスイート
|
|
66
66
|
- **クロスプラットフォームサポート** - Windows、macOS、Linuxとの完全な互換性
|
|
67
67
|
- **継続的なメンテナンス** - アクティブな開発とコミュニティサポート
|
|
@@ -439,13 +439,30 @@ Tree-sitter AnalyzerはAIアシスタント向けに設計された豊富なMCP
|
|
|
439
439
|
| | `analyze_code_structure` | コード構造解析とテーブル生成 | 🆕 suppress_outputパラメータ、複数フォーマット(full/compact/csv/json)、自動言語検出 |
|
|
440
440
|
| | `extract_code_section` | 正確なコードセクション抽出 | 指定行範囲抽出、大ファイル効率処理、元フォーマット保持 |
|
|
441
441
|
| **🔍 インテリジェント検索** | `list_files` | 高性能ファイル発見 | fdベース、globパターン、ファイルタイプフィルタ、時間範囲制御 |
|
|
442
|
-
| | `search_content` | 正規表現コンテンツ検索 | ripgrepベース、複数出力フォーマット、コンテキスト制御、エンコーディング処理、🆕
|
|
442
|
+
| | `search_content` | 正規表現コンテンツ検索 | ripgrepベース、複数出力フォーマット、コンテキスト制御、エンコーディング処理、🆕 並行処理エンジン、統一`set_project_path`サポート |
|
|
443
443
|
| | `find_and_grep` | 2段階検索 | ファイル発見→コンテンツ検索、fd+ripgrep組み合わせ、インテリジェントキャッシュ最適化、🆕 統一`set_project_path`サポート |
|
|
444
444
|
| **🔧 高度なクエリ** | `query_code` | tree-sitterクエリ | 事前定義クエリキー、カスタムクエリ文字列、フィルタ式サポート |
|
|
445
445
|
| **⚙️ システム管理** | `set_project_path` | プロジェクトルートパス設定 | セキュリティ境界制御、自動パス検証、🆕 全MCPツールで統一 |
|
|
446
446
|
| **📁 リソースアクセス** | コードファイルリソース | URIコードファイルアクセス | URI識別によるファイルコンテンツアクセス |
|
|
447
447
|
| | プロジェクト統計リソース | プロジェクト統計データアクセス | プロジェクト解析データと統計情報 |
|
|
448
448
|
|
|
449
|
+
### 🆕 v1.9.0新機能:並行処理エンジン
|
|
450
|
+
|
|
451
|
+
革命的な並行処理機能による検索パフォーマンスの向上:
|
|
452
|
+
|
|
453
|
+
- **🔄 並行処理エンジン**: search_content MCPツールで複数ディレクトリの並行検索対応
|
|
454
|
+
- **⚡ パフォーマンス向上**: 大規模コードベースで最大4倍の検索速度向上
|
|
455
|
+
- **🛡️ 型安全性改善**: mypyエラー7%削減(341個→318個)
|
|
456
|
+
- **✨ コードスタイル統一**: ruff違反の大幅削減
|
|
457
|
+
- **🏗️ 技術的負債解消**: 包括的なコード品質改善
|
|
458
|
+
- **🚀 テスト実行時間**: 83%短縮の維持(215秒→37秒)
|
|
459
|
+
|
|
460
|
+
#### 🔄 並行処理機能の詳細
|
|
461
|
+
- **自動並行処理**: 複数のrootsディレクトリを自動的に並行実行
|
|
462
|
+
- **設定可能**: `enable_parallel`オプションで制御可能(デフォルト: True)
|
|
463
|
+
- **スケーラブル**: ディレクトリ数に応じた性能向上
|
|
464
|
+
- **メモリ効率**: セマフォによる同時実行数制御
|
|
465
|
+
|
|
449
466
|
### 🆕 v1.8.4新機能:設定可能ファイルログ
|
|
450
467
|
|
|
451
468
|
環境変数による柔軟なファイルログ制御システム:
|
|
@@ -675,7 +692,7 @@ uv run python -m tree_sitter_analyzer --show-query-languages
|
|
|
675
692
|
## 8. 🏆 品質保証
|
|
676
693
|
|
|
677
694
|
### 📊 品質メトリクス
|
|
678
|
-
- **3,
|
|
695
|
+
- **3,370のテスト** - 100%合格率 ✅
|
|
679
696
|
- **高コードカバレッジ** - 包括的なテストスイート
|
|
680
697
|
- **ゼロテスト失敗** - 本番環境対応
|
|
681
698
|
- **クロスプラットフォームサポート** - Windows、macOS、Linux
|
|
@@ -4,11 +4,11 @@
|
|
|
4
4
|
|
|
5
5
|
[](https://python.org)
|
|
6
6
|
[](LICENSE)
|
|
7
|
-
[](#质量保证)
|
|
8
8
|
[](https://codecov.io/gh/aimasteracc/tree-sitter-analyzer)
|
|
9
9
|
[](#质量保证)
|
|
10
10
|
[](https://pypi.org/project/tree-sitter-analyzer/)
|
|
11
|
-
[](https://github.com/aimasteracc/tree-sitter-analyzer/releases)
|
|
12
12
|
[](https://zread.ai/aimasteracc/tree-sitter-analyzer)
|
|
13
13
|
[](https://github.com/aimasteracc/tree-sitter-analyzer)
|
|
14
14
|
|
|
@@ -62,7 +62,7 @@ Tree-sitter Analyzer 是一个为AI时代设计的企业级代码分析工具,
|
|
|
62
62
|
| **Go** | 基础支持 | 基本语法解析 |
|
|
63
63
|
|
|
64
64
|
### 🏆 生产就绪
|
|
65
|
-
- **3,
|
|
65
|
+
- **3,370个测试** - 100%通过率,企业级质量保证
|
|
66
66
|
- **高覆盖率** - 全面的测试覆盖
|
|
67
67
|
- **跨平台支持** - Windows、macOS、Linux全平台兼容
|
|
68
68
|
- **持续维护** - 活跃的开发和社区支持
|
|
@@ -440,13 +440,30 @@ Tree-sitter Analyzer提供了丰富的MCP工具集,专为AI助手设计:
|
|
|
440
440
|
| | `analyze_code_structure` | 分析代码结构和生成表格 | 🆕 suppress_output参数、多种格式(full/compact/csv/json/html)、自动语言检测 |
|
|
441
441
|
| | `extract_code_section` | 精确提取代码片段 | 指定行范围提取、大文件高效处理、保持原始格式 |
|
|
442
442
|
| **🔍 智能搜索** | `list_files` | 高性能文件发现 | 基于fd、glob模式、文件类型过滤、时间范围控制 |
|
|
443
|
-
| | `search_content` | 正则表达式内容搜索 | 基于ripgrep、多种输出格式、上下文控制、编码处理、🆕
|
|
443
|
+
| | `search_content` | 正则表达式内容搜索 | 基于ripgrep、多种输出格式、上下文控制、编码处理、🆕 并行处理引擎、统一`set_project_path`支持 |
|
|
444
444
|
| | `find_and_grep` | 两阶段搜索 | 先找文件再搜内容、组合fd+ripgrep、智能缓存优化、🆕 统一`set_project_path`支持 |
|
|
445
445
|
| **🔧 高级查询** | `query_code` | tree-sitter查询 | 预定义查询键、自定义查询字符串、过滤表达式支持 |
|
|
446
446
|
| **⚙️ 系统管理** | `set_project_path` | 设置项目根路径 | 安全边界控制、自动路径验证、🆕 全MCP工具统一 |
|
|
447
447
|
| **📁 资源访问** | 代码文件资源 | URI访问代码文件 | 通过URI标识访问文件内容 |
|
|
448
448
|
| | 项目统计资源 | 访问项目统计数据 | 项目分析数据和统计信息 |
|
|
449
449
|
|
|
450
|
+
### 🆕 v1.9.0新特性:并行处理引擎
|
|
451
|
+
|
|
452
|
+
革命性的并行处理功能,显著提升搜索性能:
|
|
453
|
+
|
|
454
|
+
- **🔄 并行处理引擎**: search_content MCP工具现在支持多目录并行搜索
|
|
455
|
+
- **⚡ 性能提升**: 大型代码库搜索速度提升最高4倍
|
|
456
|
+
- **🛡️ 类型安全改进**: mypy错误减少7%(341个→318个)
|
|
457
|
+
- **✨ 代码风格统一**: ruff违规大幅减少
|
|
458
|
+
- **🏗️ 技术债务解决**: 全面的代码质量改进
|
|
459
|
+
- **🚀 测试执行时间**: 保持83%缩短(215秒→37秒)
|
|
460
|
+
|
|
461
|
+
#### 🔄 并行处理功能详情
|
|
462
|
+
- **自动并行执行**: 多个roots目录自动并行处理
|
|
463
|
+
- **可配置控制**: `enable_parallel`选项控制(默认: True)
|
|
464
|
+
- **可扩展性能**: 性能提升随目录数量扩展
|
|
465
|
+
- **内存高效**: 信号量控制并发执行限制
|
|
466
|
+
|
|
450
467
|
### 🆕 v1.8.4新特性:可配置文件日志功能
|
|
451
468
|
|
|
452
469
|
革命性的环境变量控制文件日志系统:
|
|
@@ -680,7 +697,7 @@ uv run python -m tree_sitter_analyzer --show-query-languages
|
|
|
680
697
|
## 8. 🏆 质量保证
|
|
681
698
|
|
|
682
699
|
### 📊 质量指标
|
|
683
|
-
- **3,
|
|
700
|
+
- **3,370个测试** - 100%通过率 ✅
|
|
684
701
|
- **高代码覆盖率** - 全面测试套件
|
|
685
702
|
- **零测试失败** - 生产就绪
|
|
686
703
|
- **跨平台支持** - Windows、macOS、Linux
|
|
@@ -2,89 +2,101 @@
|
|
|
2
2
|
"""
|
|
3
3
|
tree-sitter-analyzerプロジェクト固有のメトリクス収集スクリプト
|
|
4
4
|
"""
|
|
5
|
-
|
|
6
|
-
import glob
|
|
7
|
-
from pathlib import Path
|
|
8
|
-
import subprocess
|
|
9
|
-
import sys
|
|
5
|
+
|
|
10
6
|
from collections import defaultdict
|
|
7
|
+
from pathlib import Path
|
|
8
|
+
|
|
11
9
|
|
|
12
10
|
def is_project_file(filepath):
|
|
13
11
|
"""プロジェクト固有のファイルかどうかを判定"""
|
|
14
12
|
path_str = str(filepath)
|
|
15
13
|
# 除外するディレクトリ
|
|
16
|
-
exclude_dirs = [
|
|
17
|
-
|
|
14
|
+
exclude_dirs = [
|
|
15
|
+
".venv",
|
|
16
|
+
"__pycache__",
|
|
17
|
+
".git",
|
|
18
|
+
".pytest_cache",
|
|
19
|
+
"node_modules",
|
|
20
|
+
".ruff_cache",
|
|
21
|
+
]
|
|
22
|
+
|
|
18
23
|
for exclude_dir in exclude_dirs:
|
|
19
24
|
if exclude_dir in path_str:
|
|
20
25
|
return False
|
|
21
26
|
return True
|
|
22
27
|
|
|
28
|
+
|
|
23
29
|
def count_lines_in_file(filepath):
|
|
24
30
|
"""ファイルの行数を数える"""
|
|
25
31
|
try:
|
|
26
|
-
with open(filepath,
|
|
32
|
+
with open(filepath, encoding="utf-8", errors="ignore") as f:
|
|
27
33
|
lines = f.readlines()
|
|
28
34
|
total_lines = len(lines)
|
|
29
|
-
empty_lines = sum(1 for line in lines if line.strip() ==
|
|
30
|
-
comment_lines = sum(1 for line in lines if line.strip().startswith(
|
|
35
|
+
empty_lines = sum(1 for line in lines if line.strip() == "")
|
|
36
|
+
comment_lines = sum(1 for line in lines if line.strip().startswith("#"))
|
|
31
37
|
code_lines = total_lines - empty_lines - comment_lines
|
|
32
38
|
return {
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
39
|
+
"total": total_lines,
|
|
40
|
+
"empty": empty_lines,
|
|
41
|
+
"comment": comment_lines,
|
|
42
|
+
"code": code_lines,
|
|
37
43
|
}
|
|
38
44
|
except Exception as e:
|
|
39
45
|
print(f"Error reading {filepath}: {e}")
|
|
40
|
-
return {
|
|
46
|
+
return {"total": 0, "empty": 0, "comment": 0, "code": 0}
|
|
47
|
+
|
|
41
48
|
|
|
42
49
|
def collect_file_metrics():
|
|
43
50
|
"""ファイルメトリクスを収集"""
|
|
44
51
|
print("=== プロジェクトファイル統計 ===")
|
|
45
|
-
|
|
52
|
+
|
|
46
53
|
# プロジェクト固有のPythonファイルの統計
|
|
47
|
-
all_py_files = list(Path(
|
|
54
|
+
all_py_files = list(Path(".").rglob("*.py"))
|
|
48
55
|
py_files = [f for f in all_py_files if is_project_file(f)]
|
|
49
|
-
test_files = [
|
|
50
|
-
|
|
56
|
+
test_files = [
|
|
57
|
+
f
|
|
58
|
+
for f in py_files
|
|
59
|
+
if "test_" in f.name or f.name.startswith("test_") or "tests/" in str(f)
|
|
60
|
+
]
|
|
61
|
+
|
|
51
62
|
print(f"プロジェクト内Pythonファイル数: {len(py_files)}")
|
|
52
63
|
print(f"テストファイル数: {len(test_files)}")
|
|
53
64
|
print(f"プロダクションファイル数: {len(py_files) - len(test_files)}")
|
|
54
|
-
|
|
65
|
+
|
|
55
66
|
# 言語別ファイル数(プロジェクト固有のみ)
|
|
56
67
|
extensions = defaultdict(int)
|
|
57
|
-
for file_path in Path(
|
|
68
|
+
for file_path in Path(".").rglob("*"):
|
|
58
69
|
if file_path.is_file() and is_project_file(file_path):
|
|
59
70
|
ext = file_path.suffix.lower()
|
|
60
71
|
if ext:
|
|
61
72
|
extensions[ext] += 1
|
|
62
|
-
|
|
73
|
+
|
|
63
74
|
print("\n=== 言語別ファイル数(プロジェクト固有)===")
|
|
64
75
|
for ext, count in sorted(extensions.items(), key=lambda x: x[1], reverse=True):
|
|
65
76
|
if count > 1: # 2個以上のファイルがある拡張子のみ表示
|
|
66
77
|
print(f"{ext}: {count}")
|
|
67
|
-
|
|
78
|
+
|
|
68
79
|
return py_files, test_files
|
|
69
80
|
|
|
81
|
+
|
|
70
82
|
def collect_line_metrics(py_files, test_files):
|
|
71
83
|
"""行数メトリクスを収集"""
|
|
72
84
|
print("\n=== 行数統計(プロジェクト固有)===")
|
|
73
|
-
|
|
74
|
-
total_metrics = {
|
|
75
|
-
test_metrics = {
|
|
76
|
-
prod_metrics = {
|
|
77
|
-
|
|
85
|
+
|
|
86
|
+
total_metrics = {"total": 0, "empty": 0, "comment": 0, "code": 0}
|
|
87
|
+
test_metrics = {"total": 0, "empty": 0, "comment": 0, "code": 0}
|
|
88
|
+
prod_metrics = {"total": 0, "empty": 0, "comment": 0, "code": 0}
|
|
89
|
+
|
|
78
90
|
file_sizes = []
|
|
79
|
-
|
|
91
|
+
|
|
80
92
|
for py_file in py_files:
|
|
81
93
|
metrics = count_lines_in_file(py_file)
|
|
82
|
-
file_sizes.append((py_file, metrics[
|
|
83
|
-
|
|
94
|
+
file_sizes.append((py_file, metrics["total"]))
|
|
95
|
+
|
|
84
96
|
# 総計に追加
|
|
85
97
|
for key in total_metrics:
|
|
86
98
|
total_metrics[key] += metrics[key]
|
|
87
|
-
|
|
99
|
+
|
|
88
100
|
# テストファイルかプロダクションファイルかで分類
|
|
89
101
|
if py_file in test_files:
|
|
90
102
|
for key in test_metrics:
|
|
@@ -92,98 +104,106 @@ def collect_line_metrics(py_files, test_files):
|
|
|
92
104
|
else:
|
|
93
105
|
for key in prod_metrics:
|
|
94
106
|
prod_metrics[key] += metrics[key]
|
|
95
|
-
|
|
107
|
+
|
|
96
108
|
print("全体:")
|
|
97
109
|
print(f" 総行数: {total_metrics['total']:,}")
|
|
98
110
|
print(f" 実効コード行数: {total_metrics['code']:,}")
|
|
99
111
|
print(f" コメント行数: {total_metrics['comment']:,}")
|
|
100
112
|
print(f" 空行数: {total_metrics['empty']:,}")
|
|
101
|
-
|
|
113
|
+
|
|
102
114
|
print("\nプロダクションコード:")
|
|
103
115
|
print(f" 総行数: {prod_metrics['total']:,}")
|
|
104
116
|
print(f" 実効コード行数: {prod_metrics['code']:,}")
|
|
105
|
-
|
|
117
|
+
|
|
106
118
|
print("\nテストコード:")
|
|
107
119
|
print(f" 総行数: {test_metrics['total']:,}")
|
|
108
120
|
print(f" 実効コード行数: {test_metrics['code']:,}")
|
|
109
|
-
|
|
121
|
+
|
|
110
122
|
# 最大ファイルサイズ(プロジェクト固有のみ)
|
|
111
123
|
file_sizes.sort(key=lambda x: x[1], reverse=True)
|
|
112
124
|
print("\n=== 最大ファイル(上位10件)===")
|
|
113
125
|
for i, (file_path, lines) in enumerate(file_sizes[:10]):
|
|
114
|
-
print(f"{i+1:2d}. {file_path} ({lines:,} 行)")
|
|
115
|
-
|
|
126
|
+
print(f"{i + 1:2d}. {file_path} ({lines:,} 行)")
|
|
127
|
+
|
|
116
128
|
return total_metrics, prod_metrics, test_metrics
|
|
117
129
|
|
|
130
|
+
|
|
118
131
|
def analyze_project_structure():
|
|
119
132
|
"""プロジェクト構造を分析"""
|
|
120
133
|
print("\n=== プロジェクト構造分析 ===")
|
|
121
|
-
|
|
134
|
+
|
|
122
135
|
# メインパッケージのディレクトリ構造
|
|
123
|
-
main_package = Path(
|
|
136
|
+
main_package = Path("tree_sitter_analyzer")
|
|
124
137
|
if main_package.exists():
|
|
125
138
|
print(f"メインパッケージ: {main_package}")
|
|
126
|
-
subdirs = [d for d in main_package.rglob(
|
|
139
|
+
subdirs = [d for d in main_package.rglob("*") if d.is_dir()]
|
|
127
140
|
print(f"サブディレクトリ数: {len(subdirs)}")
|
|
128
|
-
|
|
141
|
+
|
|
129
142
|
# 主要なサブモジュール
|
|
130
143
|
main_subdirs = [d for d in main_package.iterdir() if d.is_dir()]
|
|
131
144
|
print("主要サブモジュール:")
|
|
132
145
|
for subdir in sorted(main_subdirs):
|
|
133
|
-
py_files_in_subdir = list(subdir.rglob(
|
|
146
|
+
py_files_in_subdir = list(subdir.rglob("*.py"))
|
|
134
147
|
print(f" {subdir.name}: {len(py_files_in_subdir)} ファイル")
|
|
135
148
|
|
|
149
|
+
|
|
136
150
|
def check_dependencies():
|
|
137
151
|
"""依存関係を確認"""
|
|
138
152
|
print("\n=== 依存関係確認 ===")
|
|
139
|
-
|
|
153
|
+
|
|
140
154
|
# pyproject.tomlから依存関係を読み取り
|
|
141
|
-
pyproject_path = Path(
|
|
155
|
+
pyproject_path = Path("pyproject.toml")
|
|
142
156
|
if pyproject_path.exists():
|
|
143
157
|
print("pyproject.tomlから依存関係を確認:")
|
|
144
158
|
try:
|
|
145
|
-
with open(pyproject_path,
|
|
159
|
+
with open(pyproject_path, encoding="utf-8") as f:
|
|
146
160
|
content = f.read()
|
|
147
|
-
if
|
|
148
|
-
lines = content.split(
|
|
161
|
+
if "[tool.poetry.dependencies]" in content:
|
|
162
|
+
lines = content.split("\n")
|
|
149
163
|
in_deps = False
|
|
150
164
|
for line in lines:
|
|
151
|
-
if
|
|
165
|
+
if "[tool.poetry.dependencies]" in line:
|
|
152
166
|
in_deps = True
|
|
153
167
|
continue
|
|
154
|
-
elif line.startswith(
|
|
168
|
+
elif line.startswith("[") and in_deps:
|
|
155
169
|
break
|
|
156
|
-
elif in_deps and
|
|
170
|
+
elif in_deps and "=" in line:
|
|
157
171
|
print(f" {line.strip()}")
|
|
158
172
|
except Exception as e:
|
|
159
173
|
print(f"pyproject.toml読み取りエラー: {e}")
|
|
160
174
|
|
|
175
|
+
|
|
161
176
|
def main():
|
|
162
177
|
"""メイン関数"""
|
|
163
178
|
print("tree-sitter-analyzer プロジェクト固有メトリクス収集")
|
|
164
179
|
print("=" * 60)
|
|
165
|
-
|
|
180
|
+
|
|
166
181
|
# ファイルメトリクス収集
|
|
167
182
|
py_files, test_files = collect_file_metrics()
|
|
168
|
-
|
|
183
|
+
|
|
169
184
|
# 行数メトリクス収集
|
|
170
|
-
total_metrics, prod_metrics, test_metrics = collect_line_metrics(
|
|
171
|
-
|
|
185
|
+
total_metrics, prod_metrics, test_metrics = collect_line_metrics(
|
|
186
|
+
py_files, test_files
|
|
187
|
+
)
|
|
188
|
+
|
|
172
189
|
# プロジェクト構造分析
|
|
173
190
|
analyze_project_structure()
|
|
174
|
-
|
|
191
|
+
|
|
175
192
|
# 依存関係確認
|
|
176
193
|
check_dependencies()
|
|
177
|
-
|
|
194
|
+
|
|
178
195
|
print("\n" + "=" * 60)
|
|
179
196
|
print("プロジェクト固有メトリクス収集完了")
|
|
180
|
-
|
|
197
|
+
|
|
181
198
|
# サマリー
|
|
182
199
|
print("\n=== サマリー ===")
|
|
183
200
|
print(f"プロジェクト規模: {len(py_files)} Pythonファイル")
|
|
184
201
|
print(f"総コード行数: {total_metrics['code']:,} 行")
|
|
185
202
|
print(f"テストカバレッジ対象: {len(test_files)} テストファイル")
|
|
186
|
-
print(
|
|
203
|
+
print(
|
|
204
|
+
f"平均ファイルサイズ: {total_metrics['total'] // len(py_files) if py_files else 0} 行/ファイル"
|
|
205
|
+
)
|
|
206
|
+
|
|
187
207
|
|
|
188
208
|
if __name__ == "__main__":
|
|
189
|
-
main()
|
|
209
|
+
main()
|