using System; | |
using System.Collections.Generic; | |
using System.ComponentModel; | |
using System.Globalization; | |
using System.Linq; | |
using System.Reflection; | |
using System.Runtime.InteropServices; | |
using System.Text; | |
using System.Threading.Tasks; | |
namespace LLVM.ClangTidy | |
{ | |
public class ClangTidyProperties : DynamicPropertyComponent | |
{ | |
private static ClangTidyProperties RootProperties_ = null; | |
private CheckTree CheckTree_; | |
private bool HasUnsavedChanges_ = false; | |
public struct CheckMapping | |
{ | |
public string CheckName; | |
public string Property; | |
} | |
public ClangTidyProperties() | |
: base(null) | |
{ | |
AddClangCheckProperties(); | |
CheckTree_ = CheckTree.Build(this); | |
} | |
public ClangTidyProperties(DynamicPropertyComponent Parent) | |
: base(Parent) | |
{ | |
AddClangCheckProperties(); | |
CheckTree_ = CheckTree.Build(this); | |
} | |
static ClangTidyProperties() | |
{ | |
RootProperties_ = new ClangTidyProperties(null); | |
} | |
public static ClangTidyProperties RootProperties | |
{ | |
get { return RootProperties_; } | |
} | |
private void AddClangCheckProperties() | |
{ | |
// Add each check in the check database | |
HashSet<string> Categories = new HashSet<string>(); | |
foreach (var Check in CheckDatabase.Checks) | |
{ | |
string Name = Check.Name.Replace('-', '_'); | |
List<Attribute> Attrs = new List<Attribute>(); | |
Attrs.Add(new CategoryAttribute(Check.Category)); | |
Attrs.Add(new DisplayNameAttribute(Check.Label)); | |
Attrs.Add(new DefaultValueAttribute(true)); | |
Attrs.Add(new DescriptionAttribute(Check.Desc)); | |
Attrs.Add(new ClangTidyCheckAttribute(Check.Name)); | |
Categories.Add(Check.Category); | |
AddDynamicProperty<bool>(Check.Name, Attrs.ToArray()); | |
} | |
// Add a category verb for each unique category. | |
foreach (string Cat in Categories) | |
{ | |
List<Attribute> Attrs = new List<Attribute>(); | |
Attrs.Add(new CategoryAttribute(Cat)); | |
Attrs.Add(new DisplayNameAttribute("(Category Verbs)")); | |
Attrs.Add(new TypeConverterAttribute(typeof(CategoryVerbConverter))); | |
Attrs.Add(new DefaultValueAttribute(CategoryVerb.None)); | |
AddDynamicProperty<CategoryVerb>(Cat + "Verb", Attrs.ToArray()); | |
} | |
} | |
public CheckTree GetCheckTree() { return CheckTree_; } | |
public bool GetHasUnsavedChanges() { return HasUnsavedChanges_; } | |
public void SetHasUnsavedChanges(bool Value) { HasUnsavedChanges_ = Value; } | |
} | |
} |