tree-sitter-analyzer 0.8.1__tar.gz → 0.8.3__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.

Files changed (110) hide show
  1. {tree_sitter_analyzer-0.8.1 → tree_sitter_analyzer-0.8.3}/CHANGELOG.md +67 -0
  2. {tree_sitter_analyzer-0.8.1 → tree_sitter_analyzer-0.8.3}/PKG-INFO +35 -7
  3. {tree_sitter_analyzer-0.8.1 → tree_sitter_analyzer-0.8.3}/PROJECT_ROOT_CONFIG.md +203 -203
  4. {tree_sitter_analyzer-0.8.1 → tree_sitter_analyzer-0.8.3}/README.md +34 -6
  5. tree_sitter_analyzer-0.8.3/RELEASE_CHECKLIST_v0.8.2.md +182 -0
  6. tree_sitter_analyzer-0.8.3/RELEASE_NOTES_v0.8.2.md +181 -0
  7. {tree_sitter_analyzer-0.8.1 → tree_sitter_analyzer-0.8.3}/examples/project_root_demo.py +247 -247
  8. {tree_sitter_analyzer-0.8.1 → tree_sitter_analyzer-0.8.3}/examples/security_demo.py +282 -282
  9. {tree_sitter_analyzer-0.8.1 → tree_sitter_analyzer-0.8.3}/examples/security_integration_demo.py +216 -216
  10. {tree_sitter_analyzer-0.8.1 → tree_sitter_analyzer-0.8.3}/pyproject.toml +360 -360
  11. tree_sitter_analyzer-0.8.3/start_mcp_server.py +116 -0
  12. {tree_sitter_analyzer-0.8.1 → tree_sitter_analyzer-0.8.3}/tree_sitter_analyzer/__init__.py +1 -1
  13. {tree_sitter_analyzer-0.8.1 → tree_sitter_analyzer-0.8.3}/tree_sitter_analyzer/cli/commands/base_command.py +3 -1
  14. {tree_sitter_analyzer-0.8.1 → tree_sitter_analyzer-0.8.3}/tree_sitter_analyzer/cli/commands/query_command.py +1 -1
  15. {tree_sitter_analyzer-0.8.1 → tree_sitter_analyzer-0.8.3}/tree_sitter_analyzer/mcp/server.py +29 -1
  16. {tree_sitter_analyzer-0.8.1 → tree_sitter_analyzer-0.8.3}/tree_sitter_analyzer/mcp/tools/analyze_scale_tool.py +677 -673
  17. {tree_sitter_analyzer-0.8.1 → tree_sitter_analyzer-0.8.3}/tree_sitter_analyzer/mcp/tools/analyze_scale_tool_cli_compatible.py +4 -9
  18. {tree_sitter_analyzer-0.8.1 → tree_sitter_analyzer-0.8.3}/tree_sitter_analyzer/mcp/utils/error_handler.py +18 -0
  19. {tree_sitter_analyzer-0.8.1 → tree_sitter_analyzer-0.8.3}/tree_sitter_analyzer/project_detector.py +317 -317
  20. {tree_sitter_analyzer-0.8.1 → tree_sitter_analyzer-0.8.3}/tree_sitter_analyzer/security/__init__.py +22 -22
  21. {tree_sitter_analyzer-0.8.1 → tree_sitter_analyzer-0.8.3}/tree_sitter_analyzer/security/boundary_manager.py +44 -2
  22. {tree_sitter_analyzer-0.8.1 → tree_sitter_analyzer-0.8.3}/tree_sitter_analyzer/security/regex_checker.py +292 -292
  23. {tree_sitter_analyzer-0.8.1 → tree_sitter_analyzer-0.8.3}/tree_sitter_analyzer/security/validator.py +5 -2
  24. {tree_sitter_analyzer-0.8.1 → tree_sitter_analyzer-0.8.3}/uv.lock +830 -830
  25. {tree_sitter_analyzer-0.8.1 → tree_sitter_analyzer-0.8.3}/.gitignore +0 -0
  26. {tree_sitter_analyzer-0.8.1 → tree_sitter_analyzer-0.8.3}/.pre-commit-config.yaml +0 -0
  27. {tree_sitter_analyzer-0.8.1 → tree_sitter_analyzer-0.8.3}/AI_COLLABORATION_GUIDE.md +0 -0
  28. {tree_sitter_analyzer-0.8.1 → tree_sitter_analyzer-0.8.3}/CODE_STYLE_GUIDE.md +0 -0
  29. {tree_sitter_analyzer-0.8.1 → tree_sitter_analyzer-0.8.3}/CONTRIBUTING.md +0 -0
  30. {tree_sitter_analyzer-0.8.1 → tree_sitter_analyzer-0.8.3}/DEPLOYMENT_GUIDE.md +0 -0
  31. {tree_sitter_analyzer-0.8.1 → tree_sitter_analyzer-0.8.3}/LLM_CODING_GUIDELINES.md +0 -0
  32. {tree_sitter_analyzer-0.8.1 → tree_sitter_analyzer-0.8.3}/MCP_SETUP_DEVELOPERS.md +0 -0
  33. {tree_sitter_analyzer-0.8.1 → tree_sitter_analyzer-0.8.3}/MCP_SETUP_USERS.md +0 -0
  34. {tree_sitter_analyzer-0.8.1 → tree_sitter_analyzer-0.8.3}/README_ja.md +0 -0
  35. {tree_sitter_analyzer-0.8.1 → tree_sitter_analyzer-0.8.3}/README_zh.md +0 -0
  36. {tree_sitter_analyzer-0.8.1 → tree_sitter_analyzer-0.8.3}/build_standalone.py +0 -0
  37. {tree_sitter_analyzer-0.8.1 → tree_sitter_analyzer-0.8.3}/check_quality.py +0 -0
  38. {tree_sitter_analyzer-0.8.1 → tree_sitter_analyzer-0.8.3}/docs/api.md +0 -0
  39. {tree_sitter_analyzer-0.8.1 → tree_sitter_analyzer-0.8.3}/examples/BigService.java +0 -0
  40. {tree_sitter_analyzer-0.8.1 → tree_sitter_analyzer-0.8.3}/examples/BigService.json +0 -0
  41. {tree_sitter_analyzer-0.8.1 → tree_sitter_analyzer-0.8.3}/examples/BigService.summary.json +0 -0
  42. {tree_sitter_analyzer-0.8.1 → tree_sitter_analyzer-0.8.3}/examples/JavaDocTest.java +0 -0
  43. {tree_sitter_analyzer-0.8.1 → tree_sitter_analyzer-0.8.3}/examples/MultiClass.java +0 -0
  44. {tree_sitter_analyzer-0.8.1 → tree_sitter_analyzer-0.8.3}/examples/Sample.java +0 -0
  45. {tree_sitter_analyzer-0.8.1 → tree_sitter_analyzer-0.8.3}/examples/calculate_token_comparison.py +0 -0
  46. {tree_sitter_analyzer-0.8.1 → tree_sitter_analyzer-0.8.3}/examples/sample.py +0 -0
  47. {tree_sitter_analyzer-0.8.1 → tree_sitter_analyzer-0.8.3}/llm_code_checker.py +0 -0
  48. {tree_sitter_analyzer-0.8.1 → tree_sitter_analyzer-0.8.3}/pytest.ini +0 -0
  49. {tree_sitter_analyzer-0.8.1 → tree_sitter_analyzer-0.8.3}/tree_sitter_analyzer/__main__.py +0 -0
  50. {tree_sitter_analyzer-0.8.1 → tree_sitter_analyzer-0.8.3}/tree_sitter_analyzer/api.py +0 -0
  51. {tree_sitter_analyzer-0.8.1 → tree_sitter_analyzer-0.8.3}/tree_sitter_analyzer/cli/__init__.py +0 -0
  52. {tree_sitter_analyzer-0.8.1 → tree_sitter_analyzer-0.8.3}/tree_sitter_analyzer/cli/__main__.py +0 -0
  53. {tree_sitter_analyzer-0.8.1 → tree_sitter_analyzer-0.8.3}/tree_sitter_analyzer/cli/commands/__init__.py +0 -0
  54. {tree_sitter_analyzer-0.8.1 → tree_sitter_analyzer-0.8.3}/tree_sitter_analyzer/cli/commands/advanced_command.py +0 -0
  55. {tree_sitter_analyzer-0.8.1 → tree_sitter_analyzer-0.8.3}/tree_sitter_analyzer/cli/commands/default_command.py +0 -0
  56. {tree_sitter_analyzer-0.8.1 → tree_sitter_analyzer-0.8.3}/tree_sitter_analyzer/cli/commands/partial_read_command.py +0 -0
  57. {tree_sitter_analyzer-0.8.1 → tree_sitter_analyzer-0.8.3}/tree_sitter_analyzer/cli/commands/structure_command.py +0 -0
  58. {tree_sitter_analyzer-0.8.1 → tree_sitter_analyzer-0.8.3}/tree_sitter_analyzer/cli/commands/summary_command.py +0 -0
  59. {tree_sitter_analyzer-0.8.1 → tree_sitter_analyzer-0.8.3}/tree_sitter_analyzer/cli/commands/table_command.py +0 -0
  60. {tree_sitter_analyzer-0.8.1 → tree_sitter_analyzer-0.8.3}/tree_sitter_analyzer/cli/info_commands.py +0 -0
  61. {tree_sitter_analyzer-0.8.1 → tree_sitter_analyzer-0.8.3}/tree_sitter_analyzer/cli_main.py +0 -0
  62. {tree_sitter_analyzer-0.8.1 → tree_sitter_analyzer-0.8.3}/tree_sitter_analyzer/core/__init__.py +0 -0
  63. {tree_sitter_analyzer-0.8.1 → tree_sitter_analyzer-0.8.3}/tree_sitter_analyzer/core/analysis_engine.py +0 -0
  64. {tree_sitter_analyzer-0.8.1 → tree_sitter_analyzer-0.8.3}/tree_sitter_analyzer/core/cache_service.py +0 -0
  65. {tree_sitter_analyzer-0.8.1 → tree_sitter_analyzer-0.8.3}/tree_sitter_analyzer/core/engine.py +0 -0
  66. {tree_sitter_analyzer-0.8.1 → tree_sitter_analyzer-0.8.3}/tree_sitter_analyzer/core/parser.py +0 -0
  67. {tree_sitter_analyzer-0.8.1 → tree_sitter_analyzer-0.8.3}/tree_sitter_analyzer/core/query.py +0 -0
  68. {tree_sitter_analyzer-0.8.1 → tree_sitter_analyzer-0.8.3}/tree_sitter_analyzer/encoding_utils.py +0 -0
  69. {tree_sitter_analyzer-0.8.1 → tree_sitter_analyzer-0.8.3}/tree_sitter_analyzer/exceptions.py +0 -0
  70. {tree_sitter_analyzer-0.8.1 → tree_sitter_analyzer-0.8.3}/tree_sitter_analyzer/file_handler.py +0 -0
  71. {tree_sitter_analyzer-0.8.1 → tree_sitter_analyzer-0.8.3}/tree_sitter_analyzer/formatters/__init__.py +0 -0
  72. {tree_sitter_analyzer-0.8.1 → tree_sitter_analyzer-0.8.3}/tree_sitter_analyzer/formatters/base_formatter.py +0 -0
  73. {tree_sitter_analyzer-0.8.1 → tree_sitter_analyzer-0.8.3}/tree_sitter_analyzer/formatters/formatter_factory.py +0 -0
  74. {tree_sitter_analyzer-0.8.1 → tree_sitter_analyzer-0.8.3}/tree_sitter_analyzer/formatters/java_formatter.py +0 -0
  75. {tree_sitter_analyzer-0.8.1 → tree_sitter_analyzer-0.8.3}/tree_sitter_analyzer/formatters/python_formatter.py +0 -0
  76. {tree_sitter_analyzer-0.8.1 → tree_sitter_analyzer-0.8.3}/tree_sitter_analyzer/interfaces/__init__.py +0 -0
  77. {tree_sitter_analyzer-0.8.1 → tree_sitter_analyzer-0.8.3}/tree_sitter_analyzer/interfaces/cli.py +0 -0
  78. {tree_sitter_analyzer-0.8.1 → tree_sitter_analyzer-0.8.3}/tree_sitter_analyzer/interfaces/cli_adapter.py +0 -0
  79. {tree_sitter_analyzer-0.8.1 → tree_sitter_analyzer-0.8.3}/tree_sitter_analyzer/interfaces/mcp_adapter.py +0 -0
  80. {tree_sitter_analyzer-0.8.1 → tree_sitter_analyzer-0.8.3}/tree_sitter_analyzer/interfaces/mcp_server.py +0 -0
  81. {tree_sitter_analyzer-0.8.1 → tree_sitter_analyzer-0.8.3}/tree_sitter_analyzer/language_detector.py +0 -0
  82. {tree_sitter_analyzer-0.8.1 → tree_sitter_analyzer-0.8.3}/tree_sitter_analyzer/language_loader.py +0 -0
  83. {tree_sitter_analyzer-0.8.1 → tree_sitter_analyzer-0.8.3}/tree_sitter_analyzer/languages/__init__.py +0 -0
  84. {tree_sitter_analyzer-0.8.1 → tree_sitter_analyzer-0.8.3}/tree_sitter_analyzer/languages/java_plugin.py +0 -0
  85. {tree_sitter_analyzer-0.8.1 → tree_sitter_analyzer-0.8.3}/tree_sitter_analyzer/languages/javascript_plugin.py +0 -0
  86. {tree_sitter_analyzer-0.8.1 → tree_sitter_analyzer-0.8.3}/tree_sitter_analyzer/languages/python_plugin.py +0 -0
  87. {tree_sitter_analyzer-0.8.1 → tree_sitter_analyzer-0.8.3}/tree_sitter_analyzer/mcp/__init__.py +0 -0
  88. {tree_sitter_analyzer-0.8.1 → tree_sitter_analyzer-0.8.3}/tree_sitter_analyzer/mcp/resources/__init__.py +0 -0
  89. {tree_sitter_analyzer-0.8.1 → tree_sitter_analyzer-0.8.3}/tree_sitter_analyzer/mcp/resources/code_file_resource.py +0 -0
  90. {tree_sitter_analyzer-0.8.1 → tree_sitter_analyzer-0.8.3}/tree_sitter_analyzer/mcp/resources/project_stats_resource.py +0 -0
  91. {tree_sitter_analyzer-0.8.1 → tree_sitter_analyzer-0.8.3}/tree_sitter_analyzer/mcp/tools/__init__.py +0 -0
  92. {tree_sitter_analyzer-0.8.1 → tree_sitter_analyzer-0.8.3}/tree_sitter_analyzer/mcp/tools/base_tool.py +0 -0
  93. {tree_sitter_analyzer-0.8.1 → tree_sitter_analyzer-0.8.3}/tree_sitter_analyzer/mcp/tools/read_partial_tool.py +0 -0
  94. {tree_sitter_analyzer-0.8.1 → tree_sitter_analyzer-0.8.3}/tree_sitter_analyzer/mcp/tools/table_format_tool.py +0 -0
  95. {tree_sitter_analyzer-0.8.1 → tree_sitter_analyzer-0.8.3}/tree_sitter_analyzer/mcp/tools/universal_analyze_tool.py +0 -0
  96. {tree_sitter_analyzer-0.8.1 → tree_sitter_analyzer-0.8.3}/tree_sitter_analyzer/mcp/utils/__init__.py +0 -0
  97. {tree_sitter_analyzer-0.8.1 → tree_sitter_analyzer-0.8.3}/tree_sitter_analyzer/models.py +0 -0
  98. {tree_sitter_analyzer-0.8.1 → tree_sitter_analyzer-0.8.3}/tree_sitter_analyzer/output_manager.py +0 -0
  99. {tree_sitter_analyzer-0.8.1 → tree_sitter_analyzer-0.8.3}/tree_sitter_analyzer/plugins/__init__.py +0 -0
  100. {tree_sitter_analyzer-0.8.1 → tree_sitter_analyzer-0.8.3}/tree_sitter_analyzer/plugins/base.py +0 -0
  101. {tree_sitter_analyzer-0.8.1 → tree_sitter_analyzer-0.8.3}/tree_sitter_analyzer/plugins/manager.py +0 -0
  102. {tree_sitter_analyzer-0.8.1 → tree_sitter_analyzer-0.8.3}/tree_sitter_analyzer/queries/__init__.py +0 -0
  103. {tree_sitter_analyzer-0.8.1 → tree_sitter_analyzer-0.8.3}/tree_sitter_analyzer/queries/java.py +0 -0
  104. {tree_sitter_analyzer-0.8.1 → tree_sitter_analyzer-0.8.3}/tree_sitter_analyzer/queries/javascript.py +0 -0
  105. {tree_sitter_analyzer-0.8.1 → tree_sitter_analyzer-0.8.3}/tree_sitter_analyzer/queries/python.py +0 -0
  106. {tree_sitter_analyzer-0.8.1 → tree_sitter_analyzer-0.8.3}/tree_sitter_analyzer/queries/typescript.py +0 -0
  107. {tree_sitter_analyzer-0.8.1 → tree_sitter_analyzer-0.8.3}/tree_sitter_analyzer/query_loader.py +0 -0
  108. {tree_sitter_analyzer-0.8.1 → tree_sitter_analyzer-0.8.3}/tree_sitter_analyzer/table_formatter.py +0 -0
  109. {tree_sitter_analyzer-0.8.1 → tree_sitter_analyzer-0.8.3}/tree_sitter_analyzer/utils.py +0 -0
  110. {tree_sitter_analyzer-0.8.1 → tree_sitter_analyzer-0.8.3}/upload_to_pypi.py +0 -0
@@ -1,10 +1,77 @@
1
1
  # Changelog
2
2
 
3
+ ## [Unreleased]
4
+
5
+ ## [0.8.3] - 2025-08-11
6
+
7
+ ### Fixed
8
+ - CLI: Ensure security validation error messaging uses "Invalid file path" when path fails project boundary checks.
9
+ - Windows: Normalize project root handling to avoid 8.3 short/long path mismatches in MCP server and security boundary checks.
10
+ - Security: Improve absolute-path validation on Windows to also treat leading `/` or `\\` as absolute and gate by project root.
11
+ - MCP AnalyzeScaleTool: Return `ValueError("Invalid file path ...")` for invalid input paths (previously `FileNotFoundError`).
12
+ - Boundary Manager: Use `os.path.realpath` for `project_root` to align with expectations in tests and relative-path calculations.
13
+
14
+ ### Performance
15
+ - AnalyzeScaleToolCLICompatible: Use `time.perf_counter()` and measure only the engine call to improve timing accuracy and reduce measured latency.
16
+
3
17
  All notable changes to this project will be documented in this file.
4
18
 
5
19
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
20
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
21
 
22
+ ## [0.8.2] - 2025-08-05
23
+
24
+ ### 🎯 Major Quality Improvements
25
+
26
+ #### 🏆 Complete Test Suite Stabilization
27
+ - **Fixed**: All 31 failing tests now pass - achieved **100% test success rate** (1358/1358 tests)
28
+ - **Fixed**: Windows file permission issues in temporary file handling
29
+ - **Fixed**: API signature mismatches in QueryExecutor test calls
30
+ - **Fixed**: Return format inconsistencies in ReadPartialTool tests
31
+ - **Fixed**: Exception type mismatches between error handler and test expectations
32
+ - **Fixed**: SecurityValidator method name discrepancies in component tests
33
+ - **Fixed**: Mock dependency path issues in engine configuration tests
34
+
35
+ #### 📊 Test Coverage Enhancements
36
+ - **Enhanced**: Formatters module coverage from **0%** to **42.30%** - complete breakthrough
37
+ - **Enhanced**: Error handler coverage from **61.64%** to **82.76%** (+21.12%)
38
+ - **Enhanced**: Overall project coverage from **71.97%** to **74.82%** (+2.85%)
39
+ - **Added**: 104 new comprehensive test cases across critical modules
40
+ - **Added**: Edge case testing for binary files, Unicode content, and large files
41
+ - **Added**: Performance and concurrency testing for core components
42
+
43
+ #### 🔧 Test Infrastructure Improvements
44
+ - **Improved**: Cross-platform compatibility with proper Windows file handling
45
+ - **Improved**: Systematic error classification and batch fixing methodology
46
+ - **Improved**: Test reliability with proper exception type imports
47
+ - **Improved**: Mock object configuration and dependency injection testing
48
+ - **Improved**: Temporary file lifecycle management across all test scenarios
49
+
50
+ #### 🧪 New Test Modules
51
+ - **Added**: `test_formatters_comprehensive.py` - Complete formatters testing (30 tests)
52
+ - **Added**: `test_core_engine_extended.py` - Extended engine edge case testing (14 tests)
53
+ - **Added**: `test_core_query_extended.py` - Query executor performance testing (13 tests)
54
+ - **Added**: `test_universal_analyze_tool_extended.py` - Tool robustness testing (17 tests)
55
+ - **Added**: `test_read_partial_tool_extended.py` - Partial reading comprehensive testing (19 tests)
56
+ - **Added**: `test_mcp_server_initialization.py` - Server startup validation (15 tests)
57
+ - **Added**: `test_error_handling_improvements.py` - Error handling verification (20 tests)
58
+
59
+ ### 🚀 Technical Achievements
60
+ - **Achievement**: Zero test failures - complete CI/CD readiness
61
+ - **Achievement**: Comprehensive formatters module testing foundation established
62
+ - **Achievement**: Cross-platform test compatibility ensured
63
+ - **Achievement**: Robust error handling validation implemented
64
+ - **Achievement**: Performance and stress testing coverage added
65
+
66
+ ### 📈 Quality Metrics
67
+ - **Metric**: 1358 total tests (100% pass rate)
68
+ - **Metric**: 74.82% code coverage (industry-standard quality)
69
+ - **Metric**: 6 error categories systematically resolved
70
+ - **Metric**: 5 test files comprehensively updated
71
+ - **Metric**: Zero breaking changes to existing functionality
72
+
73
+ ---
74
+
8
75
  ## [0.8.1] - 2025-08-05
9
76
 
10
77
  ### 🔧 Fixed
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: tree-sitter-analyzer
3
- Version: 0.8.1
3
+ Version: 0.8.3
4
4
  Summary: Extensible multi-language code analyzer framework using Tree-sitter with dynamic plugin architecture
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
@@ -137,7 +137,9 @@ Description-Content-Type: text/markdown
137
137
 
138
138
  [![Python Version](https://img.shields.io/badge/python-3.10%2B-blue.svg)](https://python.org)
139
139
  [![License](https://img.shields.io/badge/license-MIT-green.svg)](LICENSE)
140
- [![Tests](https://img.shields.io/badge/tests-1126%20passed-brightgreen.svg)](#testing)
140
+ [![Tests](https://img.shields.io/badge/tests-1358%20passed-brightgreen.svg)](#testing)
141
+ [![Coverage](https://img.shields.io/badge/coverage-74.82%25-green.svg)](#testing)
142
+ [![Quality](https://img.shields.io/badge/quality-enterprise%20grade-blue.svg)](#quality)
141
143
 
142
144
  **Solve the LLM token limit problem for large code files.**
143
145
 
@@ -332,18 +334,44 @@ Tree-sitter-analyzer automatically detects and secures your project boundaries:
332
334
  }
333
335
  ```
334
336
 
335
- ## 🧪 Testing
337
+ ## 🧪 Testing & Quality
336
338
 
337
- This project maintains high code quality with **1126 passing tests**.
339
+ This project maintains **enterprise-grade quality** with comprehensive testing:
338
340
 
341
+ ### 📊 Quality Metrics
342
+ - **1358 tests** - 100% pass rate ✅
343
+ - **74.82% code coverage** - Industry standard quality
344
+ - **Zero test failures** - Complete CI/CD readiness
345
+ - **Cross-platform compatibility** - Windows, macOS, Linux
346
+
347
+ ### 🏆 Recent Quality Achievements (v0.8.2+)
348
+ - ✅ **Complete test suite stabilization** - All 1358 tests passing
349
+ - ✅ **Windows compatibility improvements** - Fixed path handling and security validation
350
+ - ✅ **Enhanced error messaging** - Consistent CLI and MCP error reporting
351
+ - ✅ **Performance optimizations** - Improved timing accuracy in analysis tools
352
+ - ✅ **Security framework enhancements** - Better project boundary management
353
+
354
+ ### 🔧 Running Tests
339
355
  ```bash
340
- # Run tests
356
+ # Run all tests
341
357
  pytest tests/ -v
342
358
 
343
- # Run with coverage
344
- pytest tests/ --cov=tree_sitter_analyzer
359
+ # Run with coverage report
360
+ pytest tests/ --cov=tree_sitter_analyzer --cov-report=html
361
+
362
+ # Run specific test categories
363
+ pytest tests/test_formatters_comprehensive.py -v
364
+ pytest tests/test_core_engine_extended.py -v
365
+ pytest tests/test_mcp_server_initialization.py -v
345
366
  ```
346
367
 
368
+ ### 📈 Coverage Highlights
369
+ - **Formatters**: 42.30% (newly established)
370
+ - **Error Handler**: 82.76% (major improvement)
371
+ - **Language Detector**: 98.41% (excellent)
372
+ - **CLI Main**: 97.78% (excellent)
373
+ - **Security Framework**: 78%+ across all modules
374
+
347
375
  ## 📄 License
348
376
 
349
377
  MIT License - see [LICENSE](LICENSE) file for details.
@@ -1,203 +1,203 @@
1
- # Project Root Configuration Guide
2
-
3
- **Quick reference for configuring project root in tree-sitter-analyzer**
4
-
5
- ## 🎯 Recommended Configuration (Most Users)
6
-
7
- ### MCP Server (Claude Desktop)
8
-
9
- ```json
10
- {
11
- "mcpServers": {
12
- "tree-sitter-analyzer": {
13
- "command": "uv",
14
- "args": [
15
- "run", "--with", "tree-sitter-analyzer[mcp]",
16
- "python", "-m", "tree_sitter_analyzer.mcp.server"
17
- ],
18
- "env": {
19
- "TREE_SITTER_PROJECT_ROOT": "${workspaceFolder}"
20
- }
21
- }
22
- }
23
- }
24
- ```
25
-
26
- ### CLI Usage
27
-
28
- ```bash
29
- # Auto-detect project root (recommended)
30
- tree-sitter-analyzer src/main.py --table=full
31
-
32
- # Explicit project root (when needed)
33
- tree-sitter-analyzer src/main.py --project-root /path/to/project --table=full
34
- ```
35
-
36
- ## 🔧 How It Works
37
-
38
- ### Auto-Detection Process
39
-
40
- 1. **Searches for project markers** (in priority order):
41
- - Version control: `.git`, `.hg`, `.svn`
42
- - Python: `pyproject.toml`, `setup.py`, `requirements.txt`
43
- - JavaScript: `package.json`, `yarn.lock`, `node_modules`
44
- - Java: `pom.xml`, `build.gradle`, `gradlew`
45
- - And 20+ more project types
46
-
47
- 2. **Traverses upward** from file location
48
- 3. **Selects best match** based on marker priority and count
49
- 4. **Falls back** to file directory if no markers found
50
-
51
- ### Security Benefits
52
-
53
- - ✅ **File access control**: Only files within project boundaries
54
- - ✅ **Path traversal protection**: Blocks `../../../etc/passwd` attacks
55
- - ✅ **Symlink safety**: Prevents symlink-based boundary bypass
56
- - ✅ **Audit logging**: Records all security events
57
-
58
- ## 📋 Configuration Options
59
-
60
- ### Priority Order (Highest to Lowest)
61
-
62
- | Priority | Method | CLI | MCP | Use Case |
63
- |----------|--------|-----|-----|----------|
64
- | 🥇 **1st** | Command line argument | `--project-root /path` | `"args": [..., "--project-root", "/path"]` | Fixed paths, overrides |
65
- | 🥈 **2nd** | Environment variable | `TREE_SITTER_PROJECT_ROOT=/path` | `"env": {"TREE_SITTER_PROJECT_ROOT": "/path"}` | Dynamic, workspace integration |
66
- | 🥉 **3rd** | Auto-detection | *(default)* | *(default)* | Zero configuration |
67
-
68
- ### When to Use Each Method
69
-
70
- #### Environment Variable (Recommended)
71
- ```json
72
- "env": {"TREE_SITTER_PROJECT_ROOT": "${workspaceFolder}"}
73
- ```
74
- - ✅ **Best for**: Most users, IDE integration
75
- - ✅ **Benefits**: Automatic workspace adaptation, flexible
76
- - ✅ **Works with**: VS Code, most IDEs
77
-
78
- #### Command Line Argument
79
- ```bash
80
- --project-root /specific/path
81
- ```
82
- - ✅ **Best for**: Fixed paths, CI/CD, overrides
83
- - ✅ **Benefits**: Explicit control, highest priority
84
- - ✅ **Works with**: Scripts, automation
85
-
86
- #### Auto-Detection
87
- ```bash
88
- # No configuration needed
89
- ```
90
- - ✅ **Best for**: Development, quick testing
91
- - ✅ **Benefits**: Zero configuration, intelligent
92
- - ✅ **Works with**: Standard project structures
93
-
94
- ## 🚨 Common Issues & Solutions
95
-
96
- ### Issue: "Absolute path must be within project directory"
97
-
98
- **Cause**: File is outside detected project boundary
99
-
100
- **Solutions:**
101
- 1. Use explicit project root: `--project-root /correct/path`
102
- 2. Check project markers exist in expected location
103
- 3. Verify file is actually within intended project
104
-
105
- ### Issue: "No project root detected"
106
-
107
- **Cause**: No project markers found
108
-
109
- **Solutions:**
110
- 1. Add a project marker file (`.git`, `pyproject.toml`, etc.)
111
- 2. Use explicit project root: `--project-root .`
112
- 3. Check current working directory
113
-
114
- ### Issue: Wrong project root detected
115
-
116
- **Cause**: Multiple nested projects or unexpected markers
117
-
118
- **Solutions:**
119
- 1. Use explicit project root to override
120
- 2. Remove unwanted project markers
121
- 3. Check marker priority (`.git` > `pyproject.toml` > `README.md`)
122
-
123
- ## 🧪 Testing Your Configuration
124
-
125
- ### Test Auto-Detection
126
- ```bash
127
- cd /your/project
128
- python -c "
129
- from tree_sitter_analyzer.project_detector import detect_project_root
130
- print('Detected:', detect_project_root())
131
- "
132
- ```
133
-
134
- ### Test MCP Server
135
- ```bash
136
- # Test with your configuration
137
- python -m tree_sitter_analyzer.mcp.server --help
138
- # Check logs for "MCP server starting with project root: ..."
139
- ```
140
-
141
- ### Test Security Boundaries
142
- ```bash
143
- # Should work (file within project)
144
- tree-sitter-analyzer src/main.py --table=compact
145
-
146
- # Should fail (file outside project)
147
- tree-sitter-analyzer ../outside.py --table=compact
148
- ```
149
-
150
- ## 📖 Examples by Project Type
151
-
152
- ### Python Project
153
- ```
154
- my-python-project/
155
- ├── pyproject.toml # ← Detected as project root
156
- ├── src/
157
- │ └── mypackage/
158
- │ └── main.py # ← Analyze this file
159
- └── tests/
160
- ```
161
-
162
- ### JavaScript Project
163
- ```
164
- my-js-project/
165
- ├── package.json # ← Detected as project root
166
- ├── src/
167
- │ └── index.js # ← Analyze this file
168
- └── node_modules/
169
- ```
170
-
171
- ### Java Project
172
- ```
173
- my-java-project/
174
- ├── pom.xml # ← Detected as project root
175
- ├── src/
176
- │ └── main/
177
- │ └── java/
178
- │ └── Main.java # ← Analyze this file
179
- └── target/
180
- ```
181
-
182
- ### Git Repository
183
- ```
184
- any-project/
185
- ├── .git/ # ← Detected as project root (highest priority)
186
- ├── src/
187
- │ └── code.ext # ← Analyze this file
188
- └── docs/
189
- ```
190
-
191
- ## 🎯 Best Practices
192
-
193
- 1. **Use environment variable for MCP**: `${workspaceFolder}` adapts automatically
194
- 2. **Let auto-detection work**: Most projects have standard markers
195
- 3. **Override when needed**: Use command line for special cases
196
- 4. **Test your setup**: Verify project root detection works as expected
197
- 5. **Keep it simple**: Start with recommended configuration, customize only if needed
198
-
199
- ---
200
-
201
- **Need help?** Check the full setup guides:
202
- - [MCP Setup for Users](MCP_SETUP_USERS.md)
203
- - [MCP Setup for Developers](MCP_SETUP_DEVELOPERS.md)
1
+ # Project Root Configuration Guide
2
+
3
+ **Quick reference for configuring project root in tree-sitter-analyzer**
4
+
5
+ ## 🎯 Recommended Configuration (Most Users)
6
+
7
+ ### MCP Server (Claude Desktop)
8
+
9
+ ```json
10
+ {
11
+ "mcpServers": {
12
+ "tree-sitter-analyzer": {
13
+ "command": "uv",
14
+ "args": [
15
+ "run", "--with", "tree-sitter-analyzer[mcp]",
16
+ "python", "-m", "tree_sitter_analyzer.mcp.server"
17
+ ],
18
+ "env": {
19
+ "TREE_SITTER_PROJECT_ROOT": "${workspaceFolder}"
20
+ }
21
+ }
22
+ }
23
+ }
24
+ ```
25
+
26
+ ### CLI Usage
27
+
28
+ ```bash
29
+ # Auto-detect project root (recommended)
30
+ tree-sitter-analyzer src/main.py --table=full
31
+
32
+ # Explicit project root (when needed)
33
+ tree-sitter-analyzer src/main.py --project-root /path/to/project --table=full
34
+ ```
35
+
36
+ ## 🔧 How It Works
37
+
38
+ ### Auto-Detection Process
39
+
40
+ 1. **Searches for project markers** (in priority order):
41
+ - Version control: `.git`, `.hg`, `.svn`
42
+ - Python: `pyproject.toml`, `setup.py`, `requirements.txt`
43
+ - JavaScript: `package.json`, `yarn.lock`, `node_modules`
44
+ - Java: `pom.xml`, `build.gradle`, `gradlew`
45
+ - And 20+ more project types
46
+
47
+ 2. **Traverses upward** from file location
48
+ 3. **Selects best match** based on marker priority and count
49
+ 4. **Falls back** to file directory if no markers found
50
+
51
+ ### Security Benefits
52
+
53
+ - ✅ **File access control**: Only files within project boundaries
54
+ - ✅ **Path traversal protection**: Blocks `../../../etc/passwd` attacks
55
+ - ✅ **Symlink safety**: Prevents symlink-based boundary bypass
56
+ - ✅ **Audit logging**: Records all security events
57
+
58
+ ## 📋 Configuration Options
59
+
60
+ ### Priority Order (Highest to Lowest)
61
+
62
+ | Priority | Method | CLI | MCP | Use Case |
63
+ |----------|--------|-----|-----|----------|
64
+ | 🥇 **1st** | Command line argument | `--project-root /path` | `"args": [..., "--project-root", "/path"]` | Fixed paths, overrides |
65
+ | 🥈 **2nd** | Environment variable | `TREE_SITTER_PROJECT_ROOT=/path` | `"env": {"TREE_SITTER_PROJECT_ROOT": "/path"}` | Dynamic, workspace integration |
66
+ | 🥉 **3rd** | Auto-detection | *(default)* | *(default)* | Zero configuration |
67
+
68
+ ### When to Use Each Method
69
+
70
+ #### Environment Variable (Recommended)
71
+ ```json
72
+ "env": {"TREE_SITTER_PROJECT_ROOT": "${workspaceFolder}"}
73
+ ```
74
+ - ✅ **Best for**: Most users, IDE integration
75
+ - ✅ **Benefits**: Automatic workspace adaptation, flexible
76
+ - ✅ **Works with**: VS Code, most IDEs
77
+
78
+ #### Command Line Argument
79
+ ```bash
80
+ --project-root /specific/path
81
+ ```
82
+ - ✅ **Best for**: Fixed paths, CI/CD, overrides
83
+ - ✅ **Benefits**: Explicit control, highest priority
84
+ - ✅ **Works with**: Scripts, automation
85
+
86
+ #### Auto-Detection
87
+ ```bash
88
+ # No configuration needed
89
+ ```
90
+ - ✅ **Best for**: Development, quick testing
91
+ - ✅ **Benefits**: Zero configuration, intelligent
92
+ - ✅ **Works with**: Standard project structures
93
+
94
+ ## 🚨 Common Issues & Solutions
95
+
96
+ ### Issue: "Absolute path must be within project directory"
97
+
98
+ **Cause**: File is outside detected project boundary
99
+
100
+ **Solutions:**
101
+ 1. Use explicit project root: `--project-root /correct/path`
102
+ 2. Check project markers exist in expected location
103
+ 3. Verify file is actually within intended project
104
+
105
+ ### Issue: "No project root detected"
106
+
107
+ **Cause**: No project markers found
108
+
109
+ **Solutions:**
110
+ 1. Add a project marker file (`.git`, `pyproject.toml`, etc.)
111
+ 2. Use explicit project root: `--project-root .`
112
+ 3. Check current working directory
113
+
114
+ ### Issue: Wrong project root detected
115
+
116
+ **Cause**: Multiple nested projects or unexpected markers
117
+
118
+ **Solutions:**
119
+ 1. Use explicit project root to override
120
+ 2. Remove unwanted project markers
121
+ 3. Check marker priority (`.git` > `pyproject.toml` > `README.md`)
122
+
123
+ ## 🧪 Testing Your Configuration
124
+
125
+ ### Test Auto-Detection
126
+ ```bash
127
+ cd /your/project
128
+ python -c "
129
+ from tree_sitter_analyzer.project_detector import detect_project_root
130
+ print('Detected:', detect_project_root())
131
+ "
132
+ ```
133
+
134
+ ### Test MCP Server
135
+ ```bash
136
+ # Test with your configuration
137
+ python -m tree_sitter_analyzer.mcp.server --help
138
+ # Check logs for "MCP server starting with project root: ..."
139
+ ```
140
+
141
+ ### Test Security Boundaries
142
+ ```bash
143
+ # Should work (file within project)
144
+ tree-sitter-analyzer src/main.py --table=compact
145
+
146
+ # Should fail (file outside project)
147
+ tree-sitter-analyzer ../outside.py --table=compact
148
+ ```
149
+
150
+ ## 📖 Examples by Project Type
151
+
152
+ ### Python Project
153
+ ```
154
+ my-python-project/
155
+ ├── pyproject.toml # ← Detected as project root
156
+ ├── src/
157
+ │ └── mypackage/
158
+ │ └── main.py # ← Analyze this file
159
+ └── tests/
160
+ ```
161
+
162
+ ### JavaScript Project
163
+ ```
164
+ my-js-project/
165
+ ├── package.json # ← Detected as project root
166
+ ├── src/
167
+ │ └── index.js # ← Analyze this file
168
+ └── node_modules/
169
+ ```
170
+
171
+ ### Java Project
172
+ ```
173
+ my-java-project/
174
+ ├── pom.xml # ← Detected as project root
175
+ ├── src/
176
+ │ └── main/
177
+ │ └── java/
178
+ │ └── Main.java # ← Analyze this file
179
+ └── target/
180
+ ```
181
+
182
+ ### Git Repository
183
+ ```
184
+ any-project/
185
+ ├── .git/ # ← Detected as project root (highest priority)
186
+ ├── src/
187
+ │ └── code.ext # ← Analyze this file
188
+ └── docs/
189
+ ```
190
+
191
+ ## 🎯 Best Practices
192
+
193
+ 1. **Use environment variable for MCP**: `${workspaceFolder}` adapts automatically
194
+ 2. **Let auto-detection work**: Most projects have standard markers
195
+ 3. **Override when needed**: Use command line for special cases
196
+ 4. **Test your setup**: Verify project root detection works as expected
197
+ 5. **Keep it simple**: Start with recommended configuration, customize only if needed
198
+
199
+ ---
200
+
201
+ **Need help?** Check the full setup guides:
202
+ - [MCP Setup for Users](MCP_SETUP_USERS.md)
203
+ - [MCP Setup for Developers](MCP_SETUP_DEVELOPERS.md)
@@ -2,7 +2,9 @@
2
2
 
3
3
  [![Python Version](https://img.shields.io/badge/python-3.10%2B-blue.svg)](https://python.org)
4
4
  [![License](https://img.shields.io/badge/license-MIT-green.svg)](LICENSE)
5
- [![Tests](https://img.shields.io/badge/tests-1126%20passed-brightgreen.svg)](#testing)
5
+ [![Tests](https://img.shields.io/badge/tests-1358%20passed-brightgreen.svg)](#testing)
6
+ [![Coverage](https://img.shields.io/badge/coverage-74.82%25-green.svg)](#testing)
7
+ [![Quality](https://img.shields.io/badge/quality-enterprise%20grade-blue.svg)](#quality)
6
8
 
7
9
  **Solve the LLM token limit problem for large code files.**
8
10
 
@@ -197,18 +199,44 @@ Tree-sitter-analyzer automatically detects and secures your project boundaries:
197
199
  }
198
200
  ```
199
201
 
200
- ## 🧪 Testing
202
+ ## 🧪 Testing & Quality
201
203
 
202
- This project maintains high code quality with **1126 passing tests**.
204
+ This project maintains **enterprise-grade quality** with comprehensive testing:
203
205
 
206
+ ### 📊 Quality Metrics
207
+ - **1358 tests** - 100% pass rate ✅
208
+ - **74.82% code coverage** - Industry standard quality
209
+ - **Zero test failures** - Complete CI/CD readiness
210
+ - **Cross-platform compatibility** - Windows, macOS, Linux
211
+
212
+ ### 🏆 Recent Quality Achievements (v0.8.2+)
213
+ - ✅ **Complete test suite stabilization** - All 1358 tests passing
214
+ - ✅ **Windows compatibility improvements** - Fixed path handling and security validation
215
+ - ✅ **Enhanced error messaging** - Consistent CLI and MCP error reporting
216
+ - ✅ **Performance optimizations** - Improved timing accuracy in analysis tools
217
+ - ✅ **Security framework enhancements** - Better project boundary management
218
+
219
+ ### 🔧 Running Tests
204
220
  ```bash
205
- # Run tests
221
+ # Run all tests
206
222
  pytest tests/ -v
207
223
 
208
- # Run with coverage
209
- pytest tests/ --cov=tree_sitter_analyzer
224
+ # Run with coverage report
225
+ pytest tests/ --cov=tree_sitter_analyzer --cov-report=html
226
+
227
+ # Run specific test categories
228
+ pytest tests/test_formatters_comprehensive.py -v
229
+ pytest tests/test_core_engine_extended.py -v
230
+ pytest tests/test_mcp_server_initialization.py -v
210
231
  ```
211
232
 
233
+ ### 📈 Coverage Highlights
234
+ - **Formatters**: 42.30% (newly established)
235
+ - **Error Handler**: 82.76% (major improvement)
236
+ - **Language Detector**: 98.41% (excellent)
237
+ - **CLI Main**: 97.78% (excellent)
238
+ - **Security Framework**: 78%+ across all modules
239
+
212
240
  ## 📄 License
213
241
 
214
242
  MIT License - see [LICENSE](LICENSE) file for details.