Skip to content

Provide code analysis rule to detect attribute routing for non-action methods#63657

Open
Alex-Sob wants to merge 3 commits intodotnet:mainfrom
Alex-Sob:dev/alex-sob/ASP0029
Open

Provide code analysis rule to detect attribute routing for non-action methods#63657
Alex-Sob wants to merge 3 commits intodotnet:mainfrom
Alex-Sob:dev/alex-sob/ASP0029

Conversation

@Alex-Sob
Copy link
Copy Markdown

@Alex-Sob Alex-Sob commented Sep 12, 2025

This PR should address #56791

This PR is adding a new code analysis rule ASP0029: Attribute routing is used for a method that is not an action. The diagnostic should be reported for a controller method if the following conditions are met:

  • The method is not an action, e.g. it's not public or marked with [NonAction] attribute.
  • Attribute routing is used for that method, e.g. it's marked with [Route] or [Http{Method}] or [AcceptVerbs] attributes.

Changes

  • Modified MvcAnalyzer so that it checks non-action methods of a controller to see if a method is marked with an attribute that implements IRouteTemplateProvider. In such a case it reports ASP0029 diagnostic.

  • Added basic unit tests, I could add more if PR is accepted for review.

    I used the same approach for unit tests here that I suggested separately in [Proposal] Performance/usability improvements for analyzer tests #63684

@github-actions github-actions Bot added the area-infrastructure Includes: MSBuild projects/targets, build scripts, CI, Installers and shared framework label Sep 12, 2025
@dotnet-policy-service dotnet-policy-service Bot added the community-contribution Indicates that the PR has been added by a community member label Sep 12, 2025
@dotnet-policy-service
Copy link
Copy Markdown
Contributor

Looks like this PR hasn't been active for some time and the codebase could have been changed in the meantime.
To make sure no conflicting changes have occurred, please rerun validation before merging. You can do this by leaving an /azp run comment here (requires commit rights), or by simply closing and reopening.

@dotnet-policy-service dotnet-policy-service Bot added the pending-ci-rerun When assigned to a PR indicates that the CI checks should be rerun label Sep 26, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area-infrastructure Includes: MSBuild projects/targets, build scripts, CI, Installers and shared framework community-contribution Indicates that the PR has been added by a community member pending-ci-rerun When assigned to a PR indicates that the CI checks should be rerun

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants