Browse Source

[CodeIssue] LocalVariableNotUsedIssue: Find unused foreach variable

newNRvisualizers
Mansheng Yang 14 years ago
parent
commit
454bfe5e39
  1. 12
      ICSharpCode.NRefactory.CSharp/Refactoring/CodeIssues/VariableNotUsedIssues/LocalVariableNotUsedIssue.cs
  2. 33
      ICSharpCode.NRefactory.Tests/CSharp/CodeIssues/LocalVariableNotUsedIssueTests.cs

12
ICSharpCode.NRefactory.CSharp/Refactoring/CodeIssues/VariableNotUsedIssues/LocalVariableNotUsedIssue.cs

@ -79,6 +79,18 @@ namespace ICSharpCode.NRefactory.CSharp.Refactoring @@ -79,6 +79,18 @@ namespace ICSharpCode.NRefactory.CSharp.Refactoring
}
});
}
public override void VisitForeachStatement (ForeachStatement foreachStatement)
{
var resolveResult = ctx.Resolve (foreachStatement.VariableNameToken) as LocalResolveResult;
if (resolveResult == null)
return;
if (FindUsage (ctx, unit, resolveResult.Variable, foreachStatement.VariableNameToken))
return;
AddIssue (foreachStatement.VariableNameToken, ctx.TranslateString ("Local variable is never used"));
}
}
}

33
ICSharpCode.NRefactory.Tests/CSharp/CodeIssues/LocalVariableNotUsedIssueTests.cs

@ -91,5 +91,38 @@ class TestClass { @@ -91,5 +91,38 @@ class TestClass {
Test<LocalVariableNotUsedIssue> (input2, 0);
}
[Test]
public void TestUnusedForeachVariable ()
{
var input = @"
class TestClass {
void TestMethod ()
{
var array = new int[10];
foreach (var i in array) {
}
}
}";
Test<LocalVariableNotUsedIssue> (input, 1);
}
[Test]
public void TestUsedForeachVariable ()
{
var input = @"
class TestClass {
void TestMethod ()
{
var array = new int[10];
int j = 0;
foreach (var i in array) {
j += i;
}
}
}";
Test<LocalVariableNotUsedIssue> (input, 0);
}
}
}

Loading…
Cancel
Save