From b38d4133a7dfbad0930d59fc18de5e2cdf7175cc Mon Sep 17 00:00:00 2001 From: frank-dong-ms <55860649+frank-dong-ms@users.noreply.github.com> Date: Fri, 7 Feb 2020 11:50:00 -0800 Subject: [PATCH] modify base test class analyzer, allow also to extend from ft base test class --- .../BaseTestClassAnalyzer.cs | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/tools-local/Microsoft.ML.InternalCodeAnalyzer/BaseTestClassAnalyzer.cs b/tools-local/Microsoft.ML.InternalCodeAnalyzer/BaseTestClassAnalyzer.cs index 9b670ef5d4..34f90e846e 100644 --- a/tools-local/Microsoft.ML.InternalCodeAnalyzer/BaseTestClassAnalyzer.cs +++ b/tools-local/Microsoft.ML.InternalCodeAnalyzer/BaseTestClassAnalyzer.cs @@ -16,10 +16,10 @@ public sealed class BaseTestClassAnalyzer : DiagnosticAnalyzer private const string Category = "Test"; internal const string DiagnosticId = "MSML_ExtendBaseTestClass"; - private const string Title = "Test classes should be derived from BaseTestClass"; - private const string Format = "Test class '{0}' should extend BaseTestClass."; + private const string Title = "Test classes should be derived from BaseTestClass or FunctionalTestBaseClass"; + private const string Format = "Test class '{0}' should extend BaseTestClass or FunctionalTestBaseClass."; private const string Description = - "Test classes should be derived from BaseTestClass."; + "Test classes should be derived from BaseTestClass or FunctionalTestBaseClass."; private static DiagnosticDescriptor Rule = new DiagnosticDescriptor(DiagnosticId, Title, Format, Category, @@ -51,6 +51,7 @@ private sealed class AnalyzerImpl private readonly Compilation _compilation; private readonly INamedTypeSymbol _factAttribute; private readonly INamedTypeSymbol _baseTestClass; + private readonly INamedTypeSymbol _FTbaseTestClass; private readonly ConcurrentDictionary _knownTestAttributes = new ConcurrentDictionary(); public AnalyzerImpl(Compilation compilation, INamedTypeSymbol factAttribute) @@ -58,6 +59,7 @@ public AnalyzerImpl(Compilation compilation, INamedTypeSymbol factAttribute) _compilation = compilation; _factAttribute = factAttribute; _baseTestClass = _compilation.GetTypeByMetadataName("Microsoft.ML.TestFramework.BaseTestClass"); + _FTbaseTestClass = _compilation.GetTypeByMetadataName("Microsoft.ML.Functional.Tests.FunctionalTestBaseClass"); } public void AnalyzeNamedType(SymbolAnalysisContext context) @@ -87,12 +89,14 @@ public void AnalyzeNamedType(SymbolAnalysisContext context) private bool ExtendsBaseTestClass(INamedTypeSymbol namedType) { - if (_baseTestClass is null) + if (_baseTestClass is null && + _FTbaseTestClass is null) return false; for (var current = namedType; current is object; current = current.BaseType) { - if (Equals(current, _baseTestClass)) + if (Equals(current, _baseTestClass) || + Equals(current, _FTbaseTestClass)) return true; }