protected override List <PatternDto> InitPatterns() { JToken[] jsonTokens = JToken.Parse(patternsData).ReadArray(); var result = new List <PatternDto>(); JsonSerializer patternJsonSerializer = null; foreach (JToken token in jsonTokens) { try { PatternDto patternDto; if (token[nameof(PatternUst.Kind)] != null) { if (patternJsonSerializer == null) { patternJsonSerializer = new JsonSerializer(); var converters = patternJsonSerializer.Converters; converters.Add(new PatternJsonConverterReader(new CodeFile(patternsData))); var textSpanJsonConverter = new TextSpanJsonConverter(); converters.Add(textSpanJsonConverter); converters.Add(new CodeFileJsonConverter() { TextSpanJsonConverter = textSpanJsonConverter }); } PatternRoot patternRoot = token.ToObject <PatternRoot>(patternJsonSerializer); patternDto = patternConverter.ConvertBack(new[] { patternRoot })[0]; } else { patternDto = token.ToObject <PatternDto>(); } result.Add(patternDto); } catch (Exception ex) { Logger.LogError(ex); } } return(result); }
private PatternDto ProcessToken(JToken token) { try { PatternDto patternDto; if (token[nameof(PatternUst.Kind)] != null) { if (patternJsonSerializer == null) { patternJsonSerializer = new JsonSerializer(); var converters = patternJsonSerializer.Converters; var patternJsonConverterReader = new PatternJsonConverterReader(new TextFile(patternsData)) { Logger = Logger, DefaultDataFormat = DefaultDataFormat, DefaultKey = DefaultKey, DefaultFilenameWildcard = DefaultFilenameWildcard, DefaultLanguages = DefaultLanguages }; converters.Add(patternJsonConverterReader); var textSpanJsonConverter = new TextSpanJsonConverter { Logger = Logger }; converters.Add(textSpanJsonConverter); var sourceFileJsonConverter = new SourceFileJsonConverter { Logger = Logger, SetCurrentSourceFileAction = sourceFile => { textSpanJsonConverter.CurrentSourceFile = sourceFile; } }; converters.Add(sourceFileJsonConverter); } PatternRoot patternRoot = token.ToObject <PatternRoot>(patternJsonSerializer); patternDto = patternConverter.ConvertBack(new[] { patternRoot })[0]; } else { patternDto = new PatternDto { Name = token[nameof(PatternDto.Name)]?.ToString() ?? string.Empty, Key = token[nameof(PatternDto.Key)]?.ToString() ?? string.Empty, DataFormat = token[nameof(PatternDto.DataFormat)]?.ToString(), Value = token[nameof(PatternDto.Value)]?.ToString(), CweId = token[nameof(PatternDto.CweId)]?.ToString(), Description = token[nameof(PatternDto.Description)]?.ToString(), FilenameWildcard = token[nameof(PatternDto.FilenameWildcard)]?.ToString() }; HashSet <string> languages; var languagesToken = token["Languages"]; if (languagesToken == null) { languages = new HashSet <string>(); } else if (languagesToken is JArray) { languages = new HashSet <string>(languagesToken.Select(x => x.ToString())); } else { languages = new HashSet <string>(languagesToken.ToString() .Split(',').Select(x => x.Trim())); } patternDto.Languages = languages; } return(patternDto); } catch (Exception ex) { Logger.LogError(ex); } return(null); }