internal static bool RegisterDiagnostic()

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;
        }