coverlet
coverlet copied to clipboard
[BUG] Constructorless ControllerBase implementations produce no code coverage
Describe the bug When producing code coverage for a WebApi/MVC project, if a Controller has no explicit constructor, it may not produce any code coverage results for the entire file.
These Controllers/Classes seem to be affected by the ExcludeByAttribute=CompilerGeneratedAttribute switch - as removing this option produces code coverage for these files.
To Reproduce Sample Repository: https://github.com/chrish619/coverlet-coverage-issue-20250103/
Controller must inherit from either ControllerBase, or another constructor-less Controller abstraction.
ExcludeByAttribute in either MSBuild property flags, or a runsettings file, must contain CompilerGeneratedAttribute.
Expected behavior WebApi/MVC Controllers without an explicit constructor, should produce code coverage results.
Actual behavior
WebApi/MVC Controllers without an explicit constructor produces no code coverage results when
ExcludeByAttribute=CompilerGeneratedAttribute is used.
These Controllers may use Actions with [FromServices] dependency injection - whilst also not declaring a constructor.
WebApi/MVC Controllers with an explicit constructor will always produce code coverage results.
Configuration (please complete the following information): Please provide more information on your .NET configuration:
- Which coverlet package and version was used? 6.0.2/6.0.3
- Which version of .NET is the code running on? .Net8/.Net9
- What OS and version, and what distro if applicable? Windows 10
- What is the architecture (x64, x86, ARM, ARM64)? x64
- Do you know whether it is specific to that configuration? Specifically caused by
ExcludeByAttribute=CompilerGeneratedAttribute