public override IEnumerable<Result> Execute(Release release) { var res = new List<Result>(); var helper = new StageHelper(); foreach (var obj in release.Objects) { foreach (var el in obj.ApplicationDefinition.Elements.Where(i => i.Type.ToLowerInvariant().Contains("html"))) { foreach (var at in el.Attributes) { if (at.Name.ToLowerInvariant() == "purl" && at.IsInUse) { var uses = helper.ElementUses(el, obj); if (uses.Count() <= 0) continue; res.Add(new Result() { Type = ResultType.Error, Parent = obj.Name, Page = "Application Modeller", Scope = "Object", RuleName = Name, RuleDescription = GetRuleDescription(), Message = string.Format(@"Parent Url is being used for element ""{0}"" the element is being used {1} times in these stages {2}", el.Name, uses.Count(), string.Join(",", uses.Select(i => i.Name))) }); } } } } return res; }
public override IEnumerable <Result> Execute(Release release) { var helper = new StageHelper(); var res = new List <Result>(); var units = release.GetAnalysisUnits(i => i.Type == "Action" || i.Type == "Anchor"); var stages = units.Select(i => i.Stage).ToList(); var mark = GetQueueStages(stages.Where(i => i.Type == "Action"), "Mark Exception").ToList(); var tag = GetQueueStages(stages.Where(i => i.Type == "Action"), "Tag Item").ToList(); foreach (var ac in mark) { //no tag for the mark exception var tagFound = tag.Any(i => { var next = helper.GetNextStage(i.OnSuccess, stages); return (!string.IsNullOrWhiteSpace(i.OnSuccess) && next != null && next.Id == ac.Id); }); if (!tagFound) { res.Add(FromStageAnalysis(units.First(i => i.Stage.Id == ac.Id), ResultType.Error, string.Format(@"Mark exception stage ""{0}"" requires that item has the exception labeled", ac.Name), "" )); } } return(res); }
public override IEnumerable <Result> Execute(Release release) { var res = new List <Result>(); var helper = new StageHelper(); foreach (var obj in release.Objects) { foreach (var el in obj.ApplicationDefinition.Elements.Where(i => !string.IsNullOrWhiteSpace(i.Type) && i.Type.ToLowerInvariant().Contains("html"))) { var atts = el.Attributes.Where(i => i.IsInUse).ToList(); var max = GetMaxCount(); if (atts.Count <= max) { continue; } var uses = helper.ElementUses(el, obj); if (uses.Count() <= 0) { continue; } res.Add(new Result() { Type = ResultType.Warning, Parent = obj.Name, Page = "Application Modeller", Scope = "Object", RuleName = Name, RuleDescription = GetRuleDescription(), Message = string.Format("Too many attributes are used to identify the element {0}, a total of {1} are in used, and the max allowed is {2}. List attributes {3}. Element is used {4} times in stages {5}" , el.Name, atts.Count, max, string.Join(", ", atts.Select(i => i.Name)), uses.Count(), string.Join(",", uses.Select(i => i.Name))) }); } } return(res); }
private IEnumerable <object> GetElements(Release release) { var res = new List <object>(); var helper = new StageHelper(); foreach (var obj in release.Objects) { foreach (var el in obj.ApplicationDefinition.Elements) { var stages = helper.ElementUses(el, obj); foreach (var att in el.Attributes.Where(i => i.IsInUse)) { res.Add(new { Object = obj.Name, Element = el.Name, Type = el.Type, Name = att.Name, DataType = att.DataType, Value = att.Value, UseCount = stages.Count() }); } } } return(res); }
public override IEnumerable<Result> Execute(Release release) { var helper = new StageHelper(); var res = new List<Result>(); var units = release.GetAnalysisUnits(); var readsAndWrites = units.Where(i => i.Stage.Type == "Read" || i.Stage.Type == "Write").ToList(); foreach (var u in readsAndWrites) { if (HasExclusion(u.Stage)) continue; var stages = helper.FilterStagesByPage(u, units); if (!helper.HasAnImediatePreviousWait(u.Stage, units.Where(i => i.PageId == u.PageId).Select(i => i.Stage))) res.Add(FromStageAnalysis(u, ResultType.Error, string.Format("{0} stage {1} is not preceeded by a proper wait stage", u.Stage.Type, u.Stage.Name), "")); } return res; }
public override IEnumerable <Result> Execute(Release release) { var helper = new StageHelper(); var res = new List <Result>(); var units = release.GetAnalysisUnits(); var navigateStages = FilterStagesToAnalize(release.GetAnalysisUnits()); foreach (var u in navigateStages) { var stages = helper.FilterStagesByPage(u, units); if (!helper.HasAnImediatePreviousWait(u.Stage, units.Where(i => i.PageId == u.PageId).Select(i => i.Stage))) { res.Add(FromStageAnalysis(u, ResultType.Error, string.Format("{0} stage {1} is not preceeded by a proper wait stage", u.Stage.Type, u.Stage.Name), "")); } } return(res); }
public void Load(IEnumerable <Stage> stages, string parent, string pageName, string type) { Parent = parent; PageName = pageName; Type = type; var helper = new StageHelper(); var blocks = stages.Where(i => i.Type == "Block").ToList(); var otherStages = stages.Where(i => i.Type != "Block").ToList(); foreach (var block in blocks) { var inBlock = helper.GetStagesInBlock(block, otherStages); if (!inBlock.Any()) { continue; } Blocks.Add(new BlockGroupItem() { Block = block, Stages = inBlock.ToList() }); } StagesOutsideOfBlock = stages.Where(i => i.Type != "Block" && !Blocks.SelectMany(s => s.Stages).Contains(i)).ToList(); }