Skip to content

Conversation

@Evangelink
Copy link
Member

Attempts to fix #5427

Copy link
Contributor

Copilot AI left a 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

Copy link
Contributor

Copilot AI commented Jan 30, 2026

@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.

@Youssef1313 Youssef1313 self-assigned this Feb 4, 2026
@Youssef1313 Youssef1313 self-requested a review February 4, 2026 15:47
Comment on lines +137 to 143
// 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;
}
Copy link
Member

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:

  1. Not report a diagnostic at all and consider it okay.
  2. Report a diagnostic and suggest that the fixtures get moved to a different class that is marked as static.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Clarify wording and documentation of MSTEST0016

3 participants