private static bool AnalyzeIdentifierThread()

in src/WebJobs.Extensions.DurableTask.Analyzers/Analyzers/Orchestrator/TimerAnalyzer.cs [86:124]


        private static bool AnalyzeIdentifierThread(SyntaxNode method, CompilationAnalysisContext context, SemanticModel semanticModel)
        {
            var diagnosedIssue = false;

            foreach (SyntaxNode descendant in method.DescendantNodes())
            {
                if (descendant is IdentifierNameSyntax identifierName)
                {
                    version = SyntaxNodeUtils.GetDurableVersion(semanticModel);

                    var identifierText = identifierName.Identifier.ValueText;
                    if (identifierText == "Sleep")
                    {
                        var memberAccessExpression = identifierName.Parent;
                        if (SyntaxNodeUtils.TryGetISymbol(semanticModel, memberAccessExpression, out ISymbol memberSymbol))
                        {
                            if (memberSymbol != null && memberSymbol.ToString().StartsWith("System.Threading.Thread"))
                            {
                                if (TryGetRuleFromVersion(out DiagnosticDescriptor rule))
                                {
                                    var expression = GetAwaitOrInvocationExpression(memberAccessExpression);

                                    var diagnostic = Diagnostic.Create(rule, expression.GetLocation(), expression);

                                    if (context.Compilation.ContainsSyntaxTree(method.SyntaxTree))
                                    {
                                        context.ReportDiagnostic(diagnostic);
                                    }

                                    diagnosedIssue = true;
                                }
                            }
                        }
                    }
                }
            }

            return diagnosedIssue;
        }