in src/Microsoft.VisualStudio.SDK.Analyzers/VSSDK007ThreadHelperJTFRunAsync.cs [346:386]
private static bool VariablePassedAsArgumentToInvokedMethod(
string variableName,
InvocationExpressionSyntax invocationExpr,
out IdentifierNameSyntax? methodName,
out int? argumentIndex)
{
if (string.IsNullOrEmpty(variableName))
{
methodName = null;
argumentIndex = 0;
return false;
}
ArgumentListSyntax? argList = invocationExpr.ChildNodes().OfType<ArgumentListSyntax>().FirstOrDefault();
if (argList == null)
{
methodName = null;
argumentIndex = 0;
return false;
}
var index = 0;
foreach (ArgumentSyntax? arg in argList.ChildNodes().OfType<ArgumentSyntax>())
{
foreach (IdentifierNameSyntax? identiferName in arg.ChildNodes().OfType<IdentifierNameSyntax>())
{
if (identiferName.Identifier.ValueText == variableName)
{
methodName = invocationExpr.ChildNodes().OfType<IdentifierNameSyntax>().FirstOrDefault();
argumentIndex = index;
return true;
}
}
++index;
}
methodName = null;
argumentIndex = 0;
return false;
}