You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
@@ -9,17 +9,68 @@ A semantic diff tool for .NET source code using Roslyn.
9
9
10
10
roslyn-diff provides semantic-aware diffing capabilities for .NET source code. Unlike traditional line-by-line diff tools, roslyn-diff understands code structure using the Roslyn compiler platform, enabling it to detect and report changes at the semantic level (classes, methods, properties, etc.).
11
11
12
+
### Why Roslyn over tree-sitter?
13
+
14
+
For .NET languages (C# and Visual Basic), roslyn-diff uses Microsoft's Roslyn compiler instead of generic syntax parsers like tree-sitter:
15
+
16
+
-**Full semantic understanding** - Roslyn provides complete type information, symbol resolution, and semantic analysis, not just syntax trees
17
+
-**Rename detection** - Can distinguish between a renamed method vs. delete+add because Roslyn tracks symbol identity
18
+
-**Visibility tracking** - Knows if a member is public, internal, private, or protected for impact analysis
19
+
-**Type-aware comparisons** - Understands that `int` and `System.Int32` are the same type
20
+
-**Reference resolution** - Tracks cross-file dependencies and inheritance hierarchies
21
+
-**Official .NET tooling** - Same compiler used by Visual Studio, ensuring 100% compatibility with C# and VB.NET language features
22
+
23
+
tree-sitter is excellent for general-purpose syntax highlighting and basic structural analysis, but Roslyn provides the deep semantic insight needed for accurate impact classification and change analysis in .NET codebases.
24
+
12
25
## Features
13
26
27
+
### Impact Classification (v0.7.0) 🎯
28
+
29
+
Automatically categorizes every code change by its potential impact on consumers:
30
+
31
+
-**Breaking Public API** - Changes that break external consumers (method signature changes, removed public members)
-**Non-Breaking** - Safe changes with no execution impact (private field renames, code reordering)
34
+
-**Formatting Only** - Pure whitespace/comment changes
35
+
36
+
Each change includes visibility tracking, caveat warnings (e.g., "parameter rename may break named arguments"), and smart filtering. See [Impact Classification Guide](docs/impact-classification.md) for details.
37
+
38
+
### Whitespace Intelligence (v0.8.0) 🔍
39
+
40
+
Fine-grained whitespace handling with language-aware detection:
-**Class-to-Class Comparison** - Compare specific classes between files with flexible matching
21
57
-**Line-by-Line Fallback** - Supports non-.NET files with traditional diff
22
58
59
+
## Screenshots
60
+
61
+
### HTML Output with Impact Classification
62
+
63
+
*Coming soon* - Interactive HTML report showing side-by-side diff with color-coded impact badges, caveat warnings, and IDE integration links. See [docs/images/](docs/images/) for screenshot specifications.
64
+
65
+
### JSON Output with Impact Breakdown
66
+
67
+
*Coming soon* - JSON Schema v2 output showing `impactBreakdown` statistics and per-change impact classification. See [docs/images/](docs/images/) for screenshot specifications.
68
+
69
+
For examples of what the output looks like, check out the [sample outputs](samples/):
70
+
-[samples/impact-demo/output.html](samples/impact-demo/output.html) - Full HTML report with impact indicators
71
+
-[samples/impact-demo/output.json](samples/impact-demo/output.json) - JSON with impact classification
72
+
-[samples/output-example.html](samples/output-example.html) - Calculator example HTML report
See [Output Formats Guide](docs/output-formats.md) for details on all HTML features.
304
+
213
305
### Text (`--text`)
214
306
215
307
Structured plain text showing semantic changes:
@@ -413,12 +505,35 @@ var flatChanges = changes.Flatten().ToList();
413
505
414
506
This change fixes BUG-003 where duplicate nodes could be reported when using the old flat extraction method.
415
507
508
+
## Synaptic Canvas Integration
509
+
510
+
roslyn-diff is available as a skill in the Synaptic Canvas Claude Code plugin marketplace:
511
+
512
+
**[sc-roslyn-diff](https://github.com/randlee/synaptic-canvas/blob/develop/packages/sc-roslyn-diff/README.md)** - Claude Code integration for semantic .NET diff analysis
513
+
514
+
This plugin enables AI-powered code review and impact analysis:
515
+
- Automatically analyzes pull requests for semantic changes
516
+
- Generates natural language summaries of code modifications
517
+
- Highlights breaking changes and potential impact on consumers
518
+
- Integrates with GitHub workflows for automated code review
519
+
520
+
See the [Synaptic Canvas documentation](https://github.com/randlee/synaptic-canvas) for installation and usage instructions.
521
+
416
522
## Documentation
417
523
524
+
### Feature Guides
525
+
526
+
-**[Impact Classification Guide](docs/impact-classification.md)** - Complete guide to impact levels, filtering, caveats, and use cases (v0.7.0)
527
+
-**[Whitespace Handling Guide](docs/whitespace-handling.md)** - Whitespace modes, language-aware detection, and best practices (v0.8.0)
528
+
-[Output Formats](docs/output-formats.md) - Format specifications, JSON Schema v2, and feature comparison
529
+
-[Sample Outputs](samples/README.md) - Example diffs with impact classification
530
+
531
+
### Reference Documentation
532
+
418
533
-[Usage Guide](docs/usage.md) - Detailed CLI usage and examples
419
-
-[Output Formats](docs/output-formats.md) - Format specifications and schemas
420
534
-[API Reference](docs/api.md) - Programmatic API documentation
421
535
-[Architecture](docs/architecture.md) - Project structure and design
Use Playwright or Puppeteer to generate screenshots programmatically. See examples in `/docs/screenshot-requirements.md`.
49
+
50
+
### Option 3: Request Screenshots
51
+
52
+
If you don't have the tools to create these screenshots, open a GitHub issue requesting screenshot generation and tag it with `documentation` and `help-wanted`.
53
+
54
+
## File Naming Convention
55
+
56
+
-`html-output-screenshot.png` - Main HTML output showcase
57
+
-`json-impact-breakdown.png` - JSON output with impact data
0 commit comments