Browse Source

Naming rules now get their rules out of the refactoring context.

newNRvisualizers
mike 14 years ago
parent
commit
293859fa31
  1. 5
      ICSharpCode.NRefactory.CSharp/Refactoring/BaseRefactoringContext.cs
  2. 7
      ICSharpCode.NRefactory.CSharp/Refactoring/CodeIssues/InconsistentNamingIssue/DefaultRules.cs
  3. 4
      ICSharpCode.NRefactory.CSharp/Refactoring/CodeIssues/InconsistentNamingIssue/InconsistentNamingIssue.cs
  4. 47
      ICSharpCode.NRefactory.CSharp/Refactoring/CodeIssues/InconsistentNamingIssue/NamingRule.cs
  5. 7
      ICSharpCode.NRefactory.Tests/CSharp/CodeActions/TestRefactoringContext.cs

5
ICSharpCode.NRefactory.CSharp/Refactoring/BaseRefactoringContext.cs

@ -64,6 +64,11 @@ namespace ICSharpCode.NRefactory.CSharp.Refactoring @@ -64,6 +64,11 @@ namespace ICSharpCode.NRefactory.CSharp.Refactoring
this.cancellationToken = cancellationToken;
}
/// <summary>
/// Requests data that can be provided by the IDE
/// </summary>
public abstract T RequestData<T>();
#region Resolving
public ResolveResult Resolve (AstNode node)
{

7
ICSharpCode.NRefactory.CSharp/Refactoring/CodeIssues/InconsistentNamingIssue/DefaultRules.cs

@ -30,13 +30,6 @@ namespace ICSharpCode.NRefactory.CSharp.Refactoring @@ -30,13 +30,6 @@ namespace ICSharpCode.NRefactory.CSharp.Refactoring
{
public static class DefaultRules
{
public static readonly List<NamingRule> Rules = new List<NamingRule>();
static DefaultRules()
{
Rules.AddRange(GetFdgRules());
}
public static IEnumerable<NamingRule> GetFdgRules()
{
// PascalCasing for namespace

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

@ -50,12 +50,12 @@ namespace ICSharpCode.NRefactory.CSharp.Refactoring @@ -50,12 +50,12 @@ namespace ICSharpCode.NRefactory.CSharp.Refactoring
public GatherVisitor (BaseRefactoringContext ctx, InconsistentNamingIssue inspector) : base (ctx)
{
this.inspector = inspector;
rules = new List<NamingRule> (DefaultRules.Rules);
rules = new List<NamingRule> (ctx.RequestData<IEnumerable<NamingRule>> () ?? Enumerable.Empty<NamingRule> ());
}
void CheckName(AffectedEntity entity, Identifier identifier, Modifiers accessibilty)
{
Console.WriteLine(entity);
foreach (var rule in rules) {
if (!rule.AffectedEntity.HasFlag(entity)) {
continue;

47
ICSharpCode.NRefactory.CSharp/Refactoring/CodeIssues/InconsistentNamingIssue/NamingRule.cs

@ -30,9 +30,9 @@ using System.Collections.Generic; @@ -30,9 +30,9 @@ using System.Collections.Generic;
namespace ICSharpCode.NRefactory.CSharp.Refactoring
{
public class NamingRule
public class NamingRule : IEquatable<NamingRule>
{
public string Name { get; set; }
/// <summary>
/// If set, identifiers are required to be prefixed with one of these values.
/// </summary>
@ -128,34 +128,6 @@ namespace ICSharpCode.NRefactory.CSharp.Refactoring @@ -128,34 +128,6 @@ namespace ICSharpCode.NRefactory.CSharp.Refactoring
return true;
}
public string GetPreview()
{
var result = new StringBuilder();
if (RequiredPrefixes != null && RequiredPrefixes.Length > 0) {
result.Append(RequiredPrefixes [0]);
}
switch (NamingStyle) {
case NamingStyle.PascalCase:
result.Append("PascalCase");
break;
case NamingStyle.CamelCase:
result.Append("camelCase");
break;
case NamingStyle.AllUpper:
result.Append("ALL_UPPER");
break;
case NamingStyle.AllLower:
result.Append("all_lower");
break;
case NamingStyle.FirstUpper:
result.Append("First_upper");
break;
}
if (RequiredSuffixes != null && RequiredSuffixes.Length > 0) {
result.Append(RequiredSuffixes [0]);
}
return result.ToString();
}
public string GetErrorMessage(BaseRefactoringContext ctx, string name, out IList<string> suggestedNames)
{
@ -391,6 +363,21 @@ namespace ICSharpCode.NRefactory.CSharp.Refactoring @@ -391,6 +363,21 @@ namespace ICSharpCode.NRefactory.CSharp.Refactoring
sb.Append(word.ToLower());
sb [sb.Length - word.Length] = char.ToUpper(sb [sb.Length - word.Length]);
}
#region IEquatable implementation
public bool Equals (NamingRule other)
{
return Name == other.Name &&
AffectedEntity == other.AffectedEntity &&
VisibilityMask == other.VisibilityMask &&
NamingStyle == other.NamingStyle;
}
#endregion
public NamingRule Clone ()
{
return (NamingRule)MemberwiseClone ();
}
}
}

7
ICSharpCode.NRefactory.Tests/CSharp/CodeActions/TestRefactoringContext.cs

@ -79,6 +79,13 @@ namespace ICSharpCode.NRefactory.CSharp.CodeActions @@ -79,6 +79,13 @@ namespace ICSharpCode.NRefactory.CSharp.CodeActions
}
}
}
public override T RequestData<T> ()
{
if (typeof(T).Equals (typeof(IEnumerable<NamingRule>)))
return (T)DefaultRules.GetFdgRules ();
return default (T);
}
#region Text stuff
public override string EolMarker { get { return Environment.NewLine; } }

Loading…
Cancel
Save