Пример #1
0
        public List <SelectListItem> GetKeywordsListItems()
        {
            var result =
                AllKeywords.Select(c => new SelectListItem
            {
                Value = c.Id.ToString(),
                Text  = c.Name
            }).ToList();

            return(result);
        }
Пример #2
0
        /// <summary>Tries to get a keyword by name.</summary>
        public static bool TryGetKeyword(string name, out Keyword keyword)
        {
            if (name is null)
            {
                keyword = null;
                return(false);
            }

            keyword = AllKeywords.FirstOrDefault(c => c.Name.Is(name));
            if (keyword is object)
            {
                return(true);
            }

            if (name.StartsWith("dotnet_naming_", StringComparison.OrdinalIgnoreCase) && name.IndexOf('.') > 0)
            {
                string[] parts = name.Split('.');

                if (parts.Length >= 3)
                {
                    string first = $"{parts[0]}.";
                    string last  = $".{parts[parts.Length - 1]}";
                    keyword = AllKeywords.FirstOrDefault(c => c.Name.StartsWith(first, StringComparison.OrdinalIgnoreCase) && c.Name.EndsWith(last, StringComparison.OrdinalIgnoreCase));
                }
            }
            else if (name.StartsWith("dotnet_diagnostic.", StringComparison.OrdinalIgnoreCase))
            {
                string[] parts = name.Split('.');
                if (parts.Length == 3 &&
                    parts[0] == "dotnet_diagnostic" &&
                    parts[2] == "severity")
                {
                    keyword = AllKeywords.FirstOrDefault(c => c.Name.Is("dotnet_diagnostic.<rule_id>.severity"));
                }
            }
            else if (name.StartsWith("dotnet_analyzer_diagnostic.", StringComparison.OrdinalIgnoreCase))
            {
                string[] parts = name.Split('.');
                if (parts.Length == 3 &&
                    parts[0] == "dotnet_analyzer_diagnostic" &&
                    parts[1].StartsWith("category-", StringComparison.OrdinalIgnoreCase) &&
                    parts[2] == "severity")
                {
                    keyword = AllKeywords.FirstOrDefault(c => c.Name.Is("dotnet_analyzer_diagnostic.category-<category>.severity"));
                }
            }

            return(keyword != null);
        }
Пример #3
0
        internal static void ParseJson(string file = null)
        {
            if (string.IsNullOrEmpty(file))
            {
                string assembly = Assembly.GetExecutingAssembly().Location;
                string folder   = Path.GetDirectoryName(assembly);
                file = Path.Combine(folder, "schema\\EditorConfig.json");
            }

            if (File.Exists(file))
            {
                var obj = JObject.Parse(File.ReadAllText(file));

                Severities      = JsonConvert.DeserializeObject <IEnumerable <Severity> >(obj["severities"].ToString());
                AllKeywords     = JsonConvert.DeserializeObject <IEnumerable <Keyword> >(obj["properties"].ToString());
                VisibleKeywords = AllKeywords.Where(p => p.IsVisible);
            }
        }
Пример #4
0
        /// <summary>Tries to get a keyword by name.</summary>
        public static bool TryGetKeyword(string name, out Keyword keyword)
        {
            keyword = AllKeywords.FirstOrDefault(c => c.Name.Is(name));

            if (keyword == null && name != null && name.StartsWith("dotnet_naming_", StringComparison.OrdinalIgnoreCase) && name.IndexOf('.') > 0)
            {
                string[] parts = name.Split('.');

                if (parts.Length >= 3)
                {
                    string first = $"{parts[0]}.";
                    string last  = $".{parts[parts.Length - 1]}";
                    keyword = AllKeywords.FirstOrDefault(c => c.Name.StartsWith(first, StringComparison.OrdinalIgnoreCase) && c.Name.EndsWith(last, StringComparison.OrdinalIgnoreCase));
                }
            }

            return(keyword != null);
        }