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());
            }
        }
Beispiel #2
0
 /// <summary>
 /// Add插入一条指定的报告记录
 /// </summary>
 /// <param name="model"></param>
 /// <returns></returns>
 public int Add(IModel model)
 {
     return(dal.Add(model));
 }