mirror of
https://github.com/nsnail/spectre.console.git
synced 2025-04-19 10:12:50 +08:00
Do not register analyzers if SpectreConsole is not available in the current compilation
This commit is contained in:
parent
a7ab1b690e
commit
10467a2912
@ -16,11 +16,15 @@ public class FavorInstanceAnsiConsoleOverStaticAnalyzer : SpectreAnalyzer
|
|||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
protected override void AnalyzeCompilation(CompilationStartAnalysisContext compilationStartContext)
|
protected override void AnalyzeCompilation(CompilationStartAnalysisContext compilationStartContext)
|
||||||
{
|
{
|
||||||
|
var ansiConsoleType = compilationStartContext.Compilation.GetTypeByMetadataName("Spectre.Console.AnsiConsole");
|
||||||
|
if (ansiConsoleType == null)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
compilationStartContext.RegisterOperationAction(
|
compilationStartContext.RegisterOperationAction(
|
||||||
context =>
|
context =>
|
||||||
{
|
{
|
||||||
var ansiConsoleType = context.Compilation.GetTypeByMetadataName("Spectre.Console.AnsiConsole");
|
|
||||||
|
|
||||||
// if this operation isn't an invocation against one of the System.Console methods
|
// if this operation isn't an invocation against one of the System.Console methods
|
||||||
// defined in _methods then we can safely stop analyzing and return;
|
// defined in _methods then we can safely stop analyzing and return;
|
||||||
var invocationOperation = (IInvocationOperation)context.Operation;
|
var invocationOperation = (IInvocationOperation)context.Operation;
|
||||||
|
@ -17,6 +17,16 @@ public class NoConcurrentLiveRenderablesAnalyzer : SpectreAnalyzer
|
|||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
protected override void AnalyzeCompilation(CompilationStartAnalysisContext compilationStartContext)
|
protected override void AnalyzeCompilation(CompilationStartAnalysisContext compilationStartContext)
|
||||||
{
|
{
|
||||||
|
var liveTypes = Constants.LiveRenderables
|
||||||
|
.Select(i => compilationStartContext.Compilation.GetTypeByMetadataName(i))
|
||||||
|
.Where(i => i != null)
|
||||||
|
.ToImmutableArray();
|
||||||
|
|
||||||
|
if (liveTypes.Length == 0)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
compilationStartContext.RegisterOperationAction(
|
compilationStartContext.RegisterOperationAction(
|
||||||
context =>
|
context =>
|
||||||
{
|
{
|
||||||
@ -29,10 +39,6 @@ public class NoConcurrentLiveRenderablesAnalyzer : SpectreAnalyzer
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
var liveTypes = Constants.LiveRenderables
|
|
||||||
.Select(i => context.Compilation.GetTypeByMetadataName(i))
|
|
||||||
.ToImmutableArray();
|
|
||||||
|
|
||||||
if (liveTypes.All(i => !SymbolEqualityComparer.Default.Equals(i, methodSymbol.ContainingType)))
|
if (liveTypes.All(i => !SymbolEqualityComparer.Default.Equals(i, methodSymbol.ContainingType)))
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
|
@ -17,6 +17,14 @@ public class NoPromptsDuringLiveRenderablesAnalyzer : SpectreAnalyzer
|
|||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
protected override void AnalyzeCompilation(CompilationStartAnalysisContext compilationStartContext)
|
protected override void AnalyzeCompilation(CompilationStartAnalysisContext compilationStartContext)
|
||||||
{
|
{
|
||||||
|
var ansiConsoleType = compilationStartContext.Compilation.GetTypeByMetadataName("Spectre.Console.AnsiConsole");
|
||||||
|
var ansiConsoleExtensionsType = compilationStartContext.Compilation.GetTypeByMetadataName("Spectre.Console.AnsiConsoleExtensions");
|
||||||
|
|
||||||
|
if (ansiConsoleType is null && ansiConsoleExtensionsType is null)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
compilationStartContext.RegisterOperationAction(
|
compilationStartContext.RegisterOperationAction(
|
||||||
context =>
|
context =>
|
||||||
{
|
{
|
||||||
@ -31,9 +39,6 @@ public class NoPromptsDuringLiveRenderablesAnalyzer : SpectreAnalyzer
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
var ansiConsoleType = context.Compilation.GetTypeByMetadataName("Spectre.Console.AnsiConsole");
|
|
||||||
var ansiConsoleExtensionsType = context.Compilation.GetTypeByMetadataName("Spectre.Console.AnsiConsoleExtensions");
|
|
||||||
|
|
||||||
if (!SymbolEqualityComparer.Default.Equals(methodSymbol.ContainingType, ansiConsoleType) &&
|
if (!SymbolEqualityComparer.Default.Equals(methodSymbol.ContainingType, ansiConsoleType) &&
|
||||||
!SymbolEqualityComparer.Default.Equals(methodSymbol.ContainingType, ansiConsoleExtensionsType))
|
!SymbolEqualityComparer.Default.Equals(methodSymbol.ContainingType, ansiConsoleExtensionsType))
|
||||||
{
|
{
|
||||||
|
@ -18,6 +18,13 @@ public class UseSpectreInsteadOfSystemConsoleAnalyzer : SpectreAnalyzer
|
|||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
protected override void AnalyzeCompilation(CompilationStartAnalysisContext compilationStartContext)
|
protected override void AnalyzeCompilation(CompilationStartAnalysisContext compilationStartContext)
|
||||||
{
|
{
|
||||||
|
var systemConsoleType = compilationStartContext.Compilation.GetTypeByMetadataName("System.Console");
|
||||||
|
var spectreConsoleType = compilationStartContext.Compilation.GetTypeByMetadataName("Spectre.Console.AnsiConsole");
|
||||||
|
if (systemConsoleType == null || spectreConsoleType == null)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
compilationStartContext.RegisterOperationAction(
|
compilationStartContext.RegisterOperationAction(
|
||||||
context =>
|
context =>
|
||||||
{
|
{
|
||||||
@ -31,8 +38,6 @@ public class UseSpectreInsteadOfSystemConsoleAnalyzer : SpectreAnalyzer
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
var systemConsoleType = context.Compilation.GetTypeByMetadataName("System.Console");
|
|
||||||
|
|
||||||
if (!SymbolEqualityComparer.Default.Equals(invocationOperation.TargetMethod.ContainingType, systemConsoleType))
|
if (!SymbolEqualityComparer.Default.Equals(invocationOperation.TargetMethod.ContainingType, systemConsoleType))
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user