-
Notifications
You must be signed in to change notification settings - Fork 292
Rework MSTEST0016 message and description #7258
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull request overview
This pull request improves the clarity and helpfulness of the MSTEST0016 analyzer diagnostic message and description, addressing issue #5427. The analyzer detects test classes (marked with [TestClass]) that don't contain any test methods.
Changes:
- Rewrote the diagnostic message to be more explicit about the problem and provide actionable suggestions
- Expanded the description to include detailed explanation of what constitutes a test method, exceptions to the rule, and common scenarios where the rule triggers
- Updated all localization (.xlf) files with new source text and marked them for translation review
Reviewed changes
Copilot reviewed 14 out of 14 changed files in this pull request and generated no comments.
Show a summary per file
| File | Description |
|---|---|
| src/Analyzers/MSTest.Analyzers/Resources.resx | Updated the English diagnostic message and description for MSTEST0016 with clearer, more comprehensive text |
| src/Analyzers/MSTest.Analyzers/xlf/Resources.cs.xlf | Updated Czech localization file with new source text, marked for translation review |
| src/Analyzers/MSTest.Analyzers/xlf/Resources.de.xlf | Updated German localization file with new source text, marked for translation review |
| src/Analyzers/MSTest.Analyzers/xlf/Resources.es.xlf | Updated Spanish localization file with new source text, marked for translation review |
| src/Analyzers/MSTest.Analyzers/xlf/Resources.fr.xlf | Updated French localization file with new source text, marked for translation review |
| src/Analyzers/MSTest.Analyzers/xlf/Resources.it.xlf | Updated Italian localization file with new source text, marked for translation review |
| src/Analyzers/MSTest.Analyzers/xlf/Resources.ja.xlf | Updated Japanese localization file with new source text, marked for translation review |
| src/Analyzers/MSTest.Analyzers/xlf/Resources.ko.xlf | Updated Korean localization file with new source text, marked for translation review |
| src/Analyzers/MSTest.Analyzers/xlf/Resources.pl.xlf | Updated Polish localization file with new source text, marked for translation review |
| src/Analyzers/MSTest.Analyzers/xlf/Resources.pt-BR.xlf | Updated Brazilian Portuguese localization file with new source text, marked for translation review |
| src/Analyzers/MSTest.Analyzers/xlf/Resources.ru.xlf | Updated Russian localization file with new source text, marked for translation review |
| src/Analyzers/MSTest.Analyzers/xlf/Resources.tr.xlf | Updated Turkish localization file with new source text, marked for translation review |
| src/Analyzers/MSTest.Analyzers/xlf/Resources.zh-Hans.xlf | Updated Simplified Chinese localization file with new source text, marked for translation review |
| src/Analyzers/MSTest.Analyzers/xlf/Resources.zh-Hant.xlf | Updated Traditional Chinese localization file with new source text, marked for translation review |
src/Analyzers/MSTest.Analyzers/TestClassShouldHaveTestMethodAnalyzer.cs
Outdated
Show resolved
Hide resolved
|
@Evangelink I've opened a new pull request, #7319, to work on those changes. Once the pull request is ready, I'll request review from you. |
Co-authored-by: Evangelink <11340282+Evangelink@users.noreply.github.com>
| // Non-static class that inherits assembly attributes from base class - suggest making it static | ||
| if (!classSymbol.IsStatic && hasAssemblyAttributeInBaseClass && baseClassWithAssemblyAttribute is not null) | ||
| { | ||
| context.ReportDiagnostic(classSymbol.CreateDiagnostic(TestClassShouldHaveTestMethodRule, classSymbol.Name)); | ||
| context.ReportDiagnostic(classSymbol.CreateDiagnostic(TestClassShouldHaveTestMethodRuleBaseClassHasAssemblyAttributes, classSymbol.Name, baseClassWithAssemblyAttribute.Name)); | ||
|
|
||
| return; | ||
| } |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm not sure if this is really addressing the original reported complaint.
Per the description in the linked DC ticket, I think a repro would be something like this:
[TestClass]
public abstract class TestClass
{
[AssemblyInitialize]
public static void M(TestContext _) { }
}So, asm init is in the same class being analyzed. Given that the class doesn't have any non-static members, the correct action user needs to take is to mark the class static instead of abstract, and they don't need to inherit from it anywhere.
A different scenario to consider in this case is when the abstract class have other non-static members. In this case, we might have two options:
- Not report a diagnostic at all and consider it okay.
- Report a diagnostic and suggest that the fixtures get moved to a different class that is marked as static.
Attempts to fix #5427