| 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; } | |
| } | |
| } |