| using System; | |
| using System.Collections.Generic; | |
| using System.IO; | |
| using System.Linq; | |
| using System.Text; | |
| using YamlDotNet.Serialization; | |
| using YamlDotNet.Serialization.NamingConventions; | |
| namespace LLVM.ClangTidy | |
| { | |
| public class CheckInfo | |
| { | |
| [YamlAlias("Name")] | |
| public string Name { get; set; } | |
| [YamlAlias("Label")] | |
| public string Label { get; set; } | |
| [YamlAlias("Description")] | |
| public string Desc { get; set; } | |
| [YamlAlias("Category")] | |
| public string Category { get; set; } | |
| } | |
| /// <summary> | |
| /// Reads the list of checks from Yaml and builds a description of each one. | |
| /// This list of checks is then used by the PropertyGrid to determine what | |
| /// items to display. | |
| /// </summary> | |
| public static class CheckDatabase | |
| { | |
| static CheckInfo[] Checks_ = null; | |
| class CheckRoot | |
| { | |
| [YamlAlias("Checks")] | |
| public CheckInfo[] Checks { get; set; } | |
| } | |
| static CheckDatabase() | |
| { | |
| using (StringReader Reader = new StringReader(Resources.ClangTidyChecks)) | |
| { | |
| Deserializer D = new Deserializer(namingConvention: new PascalCaseNamingConvention()); | |
| var Root = D.Deserialize<CheckRoot>(Reader); | |
| Checks_ = Root.Checks; | |
| HashSet<string> Names = new HashSet<string>(); | |
| foreach (var Check in Checks_) | |
| { | |
| if (Names.Contains(Check.Name)) | |
| continue; | |
| Names.Add(Check.Name); | |
| } | |
| } | |
| } | |
| public static IEnumerable<CheckInfo> Checks | |
| { | |
| get | |
| { | |
| return Checks_; | |
| } | |
| } | |
| } | |
| } |