Add analyzer and code fix for public types in Lucene.Net.Support, #1100 (#2) * Add analyzer for public types in Support namespace * Remove migrated resource for code fix title * Remove .globalconfig file * Upgrade RAT to 0.16.1, clean up line endings after running * Fix casing of code fix provider name * Fix code fix with partial classes * Revert Markdown changes and exclude from RAT * RAT exclude only AnalyzerReleases files; fix warning about AnalyzerReleases version number * Use MajorMinorVersion instead of Version * Fix code fix to preserve license headers and comments The code fix was stripping leading trivia (license headers, comments) when changing public to internal. The fix now preserves both leading trivia from the first modifier and trailing trivia from the accessibility modifier being replaced. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> --------- Co-authored-by: Claude <noreply@anthropic.com>
This repo contains custom Roslyn analyzers that are used by the Apache Lucene.NET project to enforce code quality and consistency, as well as provide automated code fixes.
These analyzers are intended for use by contributors to the Lucene.NET project only. They are not intended for public use outside of this project. Therefore, any releases or NuGet packages produced from this repository are not official Apache Lucene.NET project artifacts, and are not subject to the same quality control or testing as the official Lucene.NET releases. They are also not subject to the release policy or voting process, as these are not intended to be used “beyond the group that owns it.”
To build the analyzers, you will need to have the .NET 8 SDK installed.
To build from the repo root, run the following command:
dotnet build
To run the tests, you can use the following command:
dotnet test
These analyzers have been tested with Visual Studio 2022 and JetBrains Rider. They should work with any IDE that supports Roslyn analyzers, but your mileage may vary. Importantly, they also work with MSBuild, so they can be used in our CI pipelines, or to help validate your changes when you build before submitting a pull request.
A Lucene.Net.CodeAnalysis.Dev.Sample project has been provided to demonstrate and debug the analyzers and code fixes in the IDE during development of them. After building, you should notice the analyzers producing the expected warnings in the Sample project. You can also debug the analyzers by setting a breakpoint in your analyzer and launching the DebugRoslynAnalyzers target of the Lucene.Net.CodeAnalysis.Dev project. You can also debug them by debugging the unit tests.
Please read and follow the Apache Lucene.NET Contributor's Guide first before proceeding further.
Before creating any analyzers, you'll need a reserved diagnostic ID for your analyzer(s). To avoid multiple contributors attempting to use the same ID at the same time, we have created a simple process to follow. It is important that you follow this process to avoid rework of your PR.
approved-rule label.main branch, as the only file in the commit. DO NOT include any other code or changes in this commit. In the event of a conflict, do not merge this file; discard your changes, pull latest, and try again. Include the issue number in your commit message.Before submitting a pull request to this repo, ensure that each analyzer you're adding:
Lucene.Net.CodeAnalysis.Dev.Sample projectLucene.Net.CodeAnalysis.Dev.Tests project, using existing styles and practices per the other unit tests there