public override void Apply(IReport report, IDocument document, IContext context) { // TODO: Пока проверяются только справочники. if (document.ComponentType != ComponentType.ReferenceType || !document.Path.StartsWith(DocumentPathPrefix, StringComparison.OrdinalIgnoreCase) || !Enum.TryParse(document.Path.Substring(DocumentPathPrefix.Length), out EventType eventType) || !CheckingEvents.ContainsKey(eventType)) { return; } var tree = document.GetSyntaxTree(); var walker = new ParseTreeWalker(); var listener = new InteractiveWindowsOnEventsListener(); walker.Walk(listener, tree); var referenceType = context.Development.ReferenceTypes .FirstOrDefault(r => r.Name == document.ComponentName); Severity severity; string description; if (referenceType?.NumerationMethod == NumerationMethod.StronglyAuto) { severity = Severity.Error; description = string.Format(Resources.InteractiveWindowsOnStronglyNumerationReferenceEvents, CheckingEvents[eventType]); } else { severity = Severity.Warning; description = string.Format(Resources.InteractiveWindowsOnEvents, CheckingEvents[eventType]); } foreach (var contextWithError in listener.ContextWithFunctionErrors) { report.Add(severity, Code, description, document, contextWithError.GetTextPosition()); } }
/// <summary> /// Add插入一条指定的报告记录 /// </summary> /// <param name="model"></param> /// <returns></returns> public int Add(IModel model) { return(dal.Add(model)); }