Complete list of analyzer rules can be found in RULES.md
What's Changed
📣 Breaking Changes ⚠
- StaticMemberAnalyzer (SMA) is now
SatorImaging.MeticulousAnalyzer(SMA) by @sator-imaging in #466 - Drop special handling for HasFlag in EnumAnalyzer by @google-labs-jules[bot] in #183
- feat!: drop
.vsixsupport by @sator-imaging in #271 - feat!: AI created icon is refined by AI by @sator-imaging in #302
- feat: remove VisualBasic things by @sator-imaging in #311
- Configuration update: use enable/disable for boolean settings by @google-labs-jules[bot] in #410
- Update
ExplicitNumberDeclarationAnalyzerto report diagnostics onvarby @google-labs-jules[bot] in #460
🚀 Features
- Update Argument Analyzer for string/char and constructors by @google-labs-jules[bot] in #187
- Add task local variable tracking feature by @google-labs-jules[bot] in #190
- perf & refactor by @sator-imaging in #210
- Add ExplicitNumberDeclarationAnalyzer (SMA8001) by @google-labs-jules[bot] in #208
- Add ternary expression support to DisposableAnalyzer by @google-labs-jules[bot] in #214
- Implicit boxing suppression and README updates by @google-labs-jules[bot] in #216
- Add explicit number analyzer tests for members and method returns by @google-labs-jules[bot] in #217
- Add Null Suppression analyzer and code fix (SMA8002) by @google-labs-jules[bot] in #212
- Update ArgumentAnalyzer: Boolean parameter exemption for 'true'/'false' methods by @google-labs-jules[bot] in #225
- feat(disposable): massive refactor by @sator-imaging in #248
- feat: coding assistance diagnostics by @sator-imaging in #262
- feat: Allow Math and Mathf in SMA8000 analysis by @sator-imaging in #267
- Expand LambdaAnalyzer delegate support and add async tests by @google-labs-jules[bot] in #265
- feat: relax SMA8000 by @sator-imaging in #310
- perf: linq by @sator-imaging in #338
- perf: add benchmark for Linq_Where.ToImmutableArray by @kiro-agent[bot] in #339
- Add cross-file static initialization tests by @kiro-agent[bot] in #337
- feat: add params support to named argument analysis and codefix by @kiro-agent[bot] in #345
- feat: add ToDiagnosticMessageName helper for generic type display by @kiro-agent[bot] in #350
- feat: Add SMA7010/SMA7011 System.Reflection usage analyzers by @sator-ai-dev in #374
- feat: Update ExplicitNumberDeclarationAnalyzer to handle out var and foreach by @sator-imaging in #391
- feat: Add SMA0080: internal cross-namespace access analyzer by @sator-ai-dev in #367
- feat: add
objectas an omittable first argument type by @sator-imaging in #408 - Exempt single-argument System namespace methods from SMA8000 by @google-labs-jules[bot] in #412
- Allow internal access for Core namespaces by @sator-imaging in #409
- BurstLinq Performance Optimizations and Concrete Overloads by @google-labs-jules[bot] in #401
- perf: remove unnecessary check by @sator-imaging in #431
- Exempt generated code from internal namespace access analyzer by @google-labs-jules[bot] in #428
- Add new
catchanalyzer (SMA8010) by @google-labs-jules[bot] in #420 - Implement
SMA8011: Catch-All Block Without Throw Analyzer by @google-labs-jules[bot] in #449 - Add new debug assertion analyzer
SMA8003by @google-labs-jules[bot] in #448 - Update
DebugAssertAnalyzerto check for method names starting withAssertby @google-labs-jules[bot] in #456
✨ Bug Fixes
- fix: more accurate argument detection by @sator-imaging in #198
- fix and refactor by @sator-imaging in #199
- Fix Enum analyzer null-conditional access support by @google-labs-jules[bot] in #195
- fix: broken codefixes by recalculating nodes from diagnostics in Fix All scenarios by @google-labs-jules[bot] in #228
- Fix "Fix All" support in NamedArgumentCodeFixProvider (SMA8000) by @google-labs-jules[bot] in #229
- fix: CLI 'Fix All' functionality by aligning equivalenceKey with title by @google-labs-jules[bot] in #233
- fix: disposable analyzer misdetection by @sator-imaging in #237
- Fix: Task discard is not recognized by @google-labs-jules[bot] in #239
- Fix keyword handling and trivia preservation in LambdaStaticCodeFixProvider by @google-labs-jules[bot] in #264
- fix: suppression comment for untracked cast by @sator-imaging in #301
- fix: lol by @sator-imaging in #309
- fix(codefix): preserve separator trivia in EnumObfuscationCodeFixProvider by @kiro-agent[bot] in #347
- fix: add SMA0032 suppress info and clean up Description strings by @kiro-agent[bot] in #351
- Allow
yield returnin DisposableAnalyzer (SMA0040) by @google-labs-jules[bot] in #405 - fix: internal namespace analyzer
nameofmember reference fix by @google-labs-jules[bot] in #407 - Fix SMA0040 false positive with null-coalescing operator by @google-labs-jules[bot] in #404
- Fix infinite loop in InternalNamespaceAccessAnalyzer by @google-labs-jules[bot] in #423
- Support
awaitoperations inDisposableAnalyzerby @google-labs-jules[bot] in #457
📖 Documentation
- Add helper diagnostic message to rule SMA8000 by @google-labs-jules[bot] in #189
- Reflect ArgumentAnalyzer updates in READMEs by @google-labs-jules[bot] in #194
- Update Argument Analyzer documentation in READMEs by @google-labs-jules[bot] in #203
- Update READMEs for test framework exemption clarification by @google-labs-jules[bot] in #227
- Update SMA8002 TIP block and resx strings by @google-labs-jules[bot] in #243
- docs: add test conventions README by @kiro-agent[bot] in #340
- docs: update FixAllTest conventions in test/README.md by @kiro-agent[bot] in #346
- Update diagnostic messages: tone, suppression help, cleanup by @kiro-agent[bot] in #349
- docs: simplify by @sator-imaging in #363
- Update README table of contents by @google-labs-jules[bot] in #365
- docs: Update TOC label for RULES.md in README files by @google-labs-jules[bot] in #368
- Update README toc items by @google-labs-jules[bot] in #369
- docs: reorganize by @sator-imaging in #440
- docs: document CatchAnalyzer in Analysis for Code Review (EN/JA/ZH) by @sator-imaging in #442
- Update CatchAnalyzer documentation for catch-all restrictions by @google-labs-jules[bot] in #452
- docs: styling by @sator-imaging in #461
- Add enum.HasFlag workaround documentation to READMEs by @google-labs-jules[bot] in #464
📚 Other Changes
- Update SMA0043 reporting to include both type and members by @google-labs-jules[bot] in #184
- Don't report SMA0043 on type identifier by @google-labs-jules[bot] in #188
- Refactor ArgumentAnalyzer to merge SyntaxNode and Operation analysis logic by @google-labs-jules[bot] in #191
- Work/update argument analyzer tests by @sator-imaging in #193
- Work/update argument analyzer boolean expression by @sator-imaging in #202
- Add implicit conversion tests to ArgumentAnalyzer by @google-labs-jules[bot] in #205
- Update terminology to "Async context analysis" by @google-labs-jules[bot] in #204
- Centralize suppression comment handling by @sator-imaging in #209
- Add unit tests for builtin primitives and disposable field suppression by @google-labs-jules[bot] in #211
- optimize by @sator-imaging in #218
- optimize phase 1 by @sator-imaging in #222
- simplify by @sator-imaging in #226
- Optimize codefix providers and remove redundant checks by @google-labs-jules[bot] in #234
- style by @sator-imaging in #240
- Update Null suppression diagnostic message and documentation by @google-labs-jules[bot] in #241
- Update EnumAnalyzer and comment suppression logic by @google-labs-jules[bot] in #242
- refactor: DocsGen by @sator-imaging in #249
- refactor: AnalyzerDebug by @sator-imaging in #250
- Add Fix All emulation tests by @google-labs-jules[bot] in #256
- Add DisposableAnalyzer foreach tests and fix enumerator false positives by @google-labs-jules[bot] in #258
- test: fix xplat problem by @sator-imaging in #268
- Update FixAll tests with leading and trailing trivia by @google-labs-jules[bot] in #270
- Add FixAllTest for LambdaAnalyzer by @google-labs-jules[bot] in #269
- Rename test methods to follow standard pattern by @google-labs-jules[bot] in #273
- chore: remove AssemblyInfo.cs by @sator-imaging in #278
- Update README Table of Contents to align with implementation by @google-labs-jules[bot] in #277
- refactor: massive csproj update by @sator-imaging in #279
- Test Update Phase 1.5: Renaming and Duplicate Removal by @google-labs-jules[bot] in #275
- Test Update phase 2.1: Reorganize SMA000* tests by @google-labs-jules[bot] in #283
- Reorganize SMA001* Analyzer Tests by @google-labs-jules[bot] in #284
- Reorganize SMA002* Enum Tests by @google-labs-jules[bot] in #285
- Test Update Phase 2.4: Reorganize SMA003* Tests by @google-labs-jules[bot] in #286
- Reorganize SMA004* Tests by @google-labs-jules[bot] in #287
- Reorganize SMA005* tests by @google-labs-jules[bot] in #288
- Test Update phase 2.7 (SMA006*) by @google-labs-jules[bot] in #289
- Refactor FixAllTests by @sator-imaging in #290
- Reorganize SMA007* tests by @google-labs-jules[bot] in #292
- Test Reorganization Phase 2.9 (SMA700*) by @google-labs-jules[bot] in #293
- Reorganize SMA800* Test Files by @google-labs-jules[bot] in #291
- refactor: reorganize folders by @sator-imaging in #294
- refactor: DocsGen is now file-based app by @sator-imaging in #298
- Update test method naming convention by @google-labs-jules[bot] in #306
- Refactor test naming convention to {RuleId}_{Name}Tests by @google-labs-jules[bot] in #307
- Update analyzer configuration documentation in READMEs by @google-labs-jules[bot] in #308
- Implement missing SMA004* tests and fix test suite structure by @google-labs-jules[bot] in #312
- test: add missing enum analyzer tests (phase 3.2) by @kiro-agent[bot] in #313
- test: increase LambdaAnalyzer coverage (SMA7000/7001/7002) by @kiro-agent[bot] in #314
- test: increase TaskAnalyzer coverage (phase 2) by @kiro-agent[bot] in #315
- Test coverage phase 3: NullSuppressionAnalyzer tests by @kiro-agent[bot] in #316
- Add comprehensive BurstLinq unit tests by @kiro-agent[bot] in #317
- Align First() exceptions to ImmutableArray with DoesNotReturn throw helper by @kiro-agent[bot] in #322
- Increase branch coverage to >= 80% with 60 new tests by @kiro-agent[bot] in #324
- Targeted branch coverage tests for DisposableAnalyzer by @kiro-agent[bot] in #326
- Remove using System.Linq from source files by @kiro-agent[bot] in #323
- Rename config-related test methods to Config convention by @kiro-agent[bot] in #327
- Reorganize config tests into ConfigTest_ files by @kiro-agent[bot] in #329
- test: add ResourceTest for coverage (no reflection) by @kiro-agent[bot] in #331
- Add BurstLinq benchmark using BenchmarkDotNet by @kiro-agent[bot] in #328
- Add CoreTest.cs to increase Core.cs coverage by @kiro-agent[bot] in #332
- test: add missing EnumAnalyzer tests from debug/EnumTests.cs by @kiro-agent[bot] in #335
- Add missing DisposableAnalyzer tests from debug/DisposableTests.cs by @kiro-agent[bot] in #336
- Update BurstLinqBenchmark to multi-target net10.0 and net5.0 by @kiro-agent[bot] in #334
- BurstLinq: add ICollection.Contains fast path by @kiro-agent[bot] in #341
- BurstLinq: use ICollection.CopyTo in ToArray by @kiro-agent[bot] in #343
- test: add cast-and-forget tests for (new Disposable()) as object by @kiro-agent[bot] in #344
- Rename Rule_ and RuleId_ fields to reflect actual targets by @kiro-agent[bot] in #348
- Remove xml docs to avoid unnecessary diffs by @sator-imaging in #352
- Use ToDiagnosticMessageName() instead of .Name in Diagnostic.Create by @kiro-agent[bot] in #354
- Add 20 tests to increase analyzer code coverage by @kiro-agent[bot] in #355
- feat: complete ToDiagnosticMessageName migration for Diagnostic.Create by @sator-imaging in #356
- Include outer type in nested type diagnostic names by @sator-ai-dev in #360
- feat: use ToDiagnosticMessageName for all remaining Diagnostic.Create symbol args by @sator-imaging in #361
- mv: debug->sandbox by @sator-imaging in #371
- test: ci events by @sator-imaging in #377
- Replace .WithSpan with marker syntax in tests by @google-labs-jules[bot] in #378
- Increase test coverage for Core and Resources by @google-labs-jules[bot] in #380
- Refactor code structure by @sator-imaging in #384
- Refactor tests to use marker syntax instead of .WithSpan() by @google-labs-jules[bot] in #397
- Add duck typing tests for DisposableAnalyzer (SMA0040) by @google-labs-jules[bot] in #400
- Emphasize autogenerated warning in DocsGen output by @sator-imaging with @Copilot in #411
- Add DisposableAnalyzer regression coverage for constructor-based coalesce expressions by @sator-imaging with @Copilot in #416
- Update InternalNamespaceAccessAnalyzer to report on all locations by @google-labs-jules[bot] in #434
- refactor: test namespaces by @sator-imaging in #436
- Add missing disposable tests for object initializers and composite expressions by @google-labs-jules[bot] in #435
- chore: global namespace display by @sator-imaging in #438
- refactor: tests by @sator-imaging in #437
- refactor: suppression comment detection by @sator-imaging in #439
- refactor: visible internal checks by @sator-imaging in #445
- Remove ripgrep dependency from test-coverage workflow by @google-labs-jules[bot] in #450
- chore: catch analyzer by @sator-imaging in #451
- test: add custom assert method by @sator-imaging in #455
- ci: post coverage as PR comment by @sator-imaging in #465
New Contributors
- @kiro-agent[bot] made their first contribution in #313
- @sator-ai-dev made their first contribution in #360
- @sator-imaging with @Copilot made their first contribution in #411
Full Changelog: v4.5.1...v5.0.0