in src/WebJobs.Extensions.DurableTask.Analyzers/Analyzers/Orchestrator/EnvironmentVariableAnalyzer.cs [23:55]
internal static bool RegisterDiagnostic(CompilationAnalysisContext context, SemanticModel semanticModel, SyntaxNode method)
{
var diagnosedIssue = false;
foreach (SyntaxNode descendant in method.DescendantNodes())
{
if (descendant is IdentifierNameSyntax identifierName)
{
var identifierText = identifierName.Identifier.ValueText;
if (identifierText == "GetEnvironmentVariable" || identifierText == "GetEnvironmentVariables" || identifierText == "ExpandEnvironmentVariables")
{
var memberAccessExpression = identifierName.Parent;
var invocationExpression = memberAccessExpression.Parent;
if (SyntaxNodeUtils.TryGetISymbol(semanticModel, memberAccessExpression, out ISymbol memberSymbol))
{
if (memberSymbol.ToString().StartsWith("System.Environment"))
{
var diagnostic = Diagnostic.Create(Rule, invocationExpression.GetLocation(), memberAccessExpression);
if (context.Compilation.ContainsSyntaxTree(method.SyntaxTree))
{
context.ReportDiagnostic(diagnostic);
}
diagnosedIssue = true;
}
}
}
}
}
return diagnosedIssue;
}