Browse Source

Add fast check to discard most invocations early in FormatStringIssue.

Simon Lindgren 14 years ago
parent
commit
db31f5f80d
  1. 11
      ICSharpCode.NRefactory.CSharp/Refactoring/CodeIssues/FormatStringIssues/FormatStringIssue.cs

11
ICSharpCode.NRefactory.CSharp/Refactoring/CodeIssues/FormatStringIssues/FormatStringIssue.cs

@ -54,6 +54,15 @@ namespace ICSharpCode.NRefactory.CSharp.Refactoring
public override void VisitInvocationExpression(InvocationExpression invocationExpression) public override void VisitInvocationExpression(InvocationExpression invocationExpression)
{ {
base.VisitInvocationExpression(invocationExpression); base.VisitInvocationExpression(invocationExpression);
// Speed up the inspector by discarding some invocations early
var hasEligibleArgument = invocationExpression.Arguments.Any(argument => {
var primitiveArg = argument as PrimitiveExpression;
return primitiveArg != null && primitiveArg.Value is string;
});
if (!hasEligibleArgument)
return;
var invocationResolveResult = context.Resolve(invocationExpression) as CSharpInvocationResolveResult; var invocationResolveResult = context.Resolve(invocationExpression) as CSharpInvocationResolveResult;
if (invocationResolveResult == null) if (invocationResolveResult == null)
return; return;
@ -65,7 +74,7 @@ namespace ICSharpCode.NRefactory.CSharp.Refactoring
return; return;
} }
var primitiveArgument = formatArgument as PrimitiveExpression; var primitiveArgument = formatArgument as PrimitiveExpression;
if (primitiveArgument == null || !(primitiveArgument.Value is String)) if (primitiveArgument == null || !(primitiveArgument.Value is string))
return; return;
var format = (string)primitiveArgument.Value; var format = (string)primitiveArgument.Value;
var parsingResult = context.ParseFormatString(format); var parsingResult = context.ParseFormatString(format);

Loading…
Cancel
Save