Browse Source

[CodeIssues] Improved naming check (skipp overriden members).

newNRvisualizers
Mike Krüger 13 years ago
parent
commit
da2eea8353
  1. 6
      ICSharpCode.NRefactory.CSharp/Refactoring/CodeIssue.cs
  2. 21
      ICSharpCode.NRefactory.CSharp/Refactoring/CodeIssues/InconsistentNamingIssue/InconsistentNamingIssue.cs
  3. 25
      ICSharpCode.NRefactory.Tests/CSharp/CodeIssues/InconsistentNamingTests.cs

6
ICSharpCode.NRefactory.CSharp/Refactoring/CodeIssue.cs

@ -35,9 +35,9 @@ namespace ICSharpCode.NRefactory.CSharp.Refactoring @@ -35,9 +35,9 @@ namespace ICSharpCode.NRefactory.CSharp.Refactoring
public class CodeIssue
{
/// <summary>
/// Gets the desription of the issue.
/// Gets the description of the issue.
/// </summary>
public string Desription {
public string Description {
get;
private set;
}
@ -83,7 +83,7 @@ namespace ICSharpCode.NRefactory.CSharp.Refactoring @@ -83,7 +83,7 @@ namespace ICSharpCode.NRefactory.CSharp.Refactoring
/// </param>
public CodeIssue(string description, TextLocation start, TextLocation end, IEnumerable<CodeAction> actions = null)
{
Desription = description;
Description = description;
Start = start;
End = end;
if (actions != null)

21
ICSharpCode.NRefactory.CSharp/Refactoring/CodeIssues/InconsistentNamingIssue/InconsistentNamingIssue.cs

@ -215,12 +215,31 @@ namespace ICSharpCode.NRefactory.CSharp.Refactoring @@ -215,12 +215,31 @@ namespace ICSharpCode.NRefactory.CSharp.Refactoring
public override void VisitPropertyDeclaration(PropertyDeclaration propertyDeclaration)
{
if (propertyDeclaration.Modifiers.HasFlag (Modifiers.Override))
return;
base.VisitPropertyDeclaration(propertyDeclaration);
CheckName(propertyDeclaration, AffectedEntity.Property, propertyDeclaration.NameToken, GetAccessibiltiy(propertyDeclaration, Modifiers.Private));
}
public override void VisitMethodDeclaration(MethodDeclaration methodDeclaration)
{
if (methodDeclaration.Modifiers.HasFlag(Modifiers.Override)) {
var rr = ctx.Resolve (methodDeclaration) as MemberResolveResult;
if (rr == null)
return;
var baseType = rr.Member.DeclaringType.DirectBaseTypes.FirstOrDefault (t => t.Kind != TypeKind.Interface);
var method = baseType != null ? baseType.GetMethods (m => m.Name == rr.Member.Name && m.IsOverridable && m.Parameters.Count == methodDeclaration.Parameters.Count).FirstOrDefault () : null;
if (method == null)
return;
int i = 0;
foreach (var par in methodDeclaration.Parameters) {
if (method.Parameters[i++].Name != par.Name) {
par.AcceptVisitor (this);
}
}
return;
}
base.VisitMethodDeclaration(methodDeclaration);
CheckName(methodDeclaration, methodDeclaration.Modifiers.HasFlag(Modifiers.Async) ? AffectedEntity.AsyncMethod : AffectedEntity.Method, methodDeclaration.NameToken, GetAccessibiltiy(methodDeclaration, Modifiers.Private));
@ -262,6 +281,8 @@ namespace ICSharpCode.NRefactory.CSharp.Refactoring @@ -262,6 +281,8 @@ namespace ICSharpCode.NRefactory.CSharp.Refactoring
public override void VisitCustomEventDeclaration(CustomEventDeclaration eventDeclaration)
{
if (eventDeclaration.Modifiers.HasFlag (Modifiers.Override))
return;
base.VisitCustomEventDeclaration(eventDeclaration);
CheckName(eventDeclaration, AffectedEntity.Event, eventDeclaration.NameToken, GetAccessibiltiy(eventDeclaration, Modifiers.Private));
}

25
ICSharpCode.NRefactory.Tests/CSharp/CodeIssues/InconsistentNamingTests.cs

@ -237,6 +237,31 @@ namespace ICSharpCode.NRefactory.CSharp.CodeIssues @@ -237,6 +237,31 @@ namespace ICSharpCode.NRefactory.CSharp.CodeIssues
var output = @"struct Str<TK> { TK k;}";
CheckNaming (input, output);
}
[Test]
public void TestOverrideMembers ()
{
var input = @"
class Base { public virtual int method (int Param) {} }
class MyClass : Base { public override int method (int Param) {} }";
TestRefactoringContext context;
var issues = GetIssues (new InconsistentNamingIssue (), input, out context);
Assert.AreEqual (2, issues.Count);
}
[Test]
public void TestOverrideMembersParameterNameCaseMismatch ()
{
var input = @"
class Base { public virtual int Method (int param) {} }
class MyClass : Base { public override int Method (int Param) {} }";
TestRefactoringContext context;
var issues = GetIssues (new InconsistentNamingIssue (), input, out context);
foreach (var issue in issues)
Console.WriteLine(issue.Description);
Assert.AreEqual (1, issues.Count);
}
}
[TestFixture]

Loading…
Cancel
Save