private void RunSolutionAnalyzer() { mIssues.Clear(); //TODO: once this analyzer is taking long time due to many checks, run it using parallel //ObservableList<BusinessFlow> BFs = App.LocalRepository.GetAllBusinessFlows(); ObservableList <BusinessFlow> BFs = WorkSpace.Instance.SolutionRepository.GetAllRepositoryItems <BusinessFlow>(); // Run it in another task so UI gets updates Task t = Task.Factory.StartNew(() => { List <AnalyzerItemBase> issues = AnalyzeSolution.Analyze(mSolution); List <string> usedVariablesInSolution = new List <string>(); AddIssues(issues); foreach (BusinessFlow BF in BFs) { List <string> tempList = RunBusinessFlowAnalyzer(BF, false); usedVariablesInSolution.AddRange(tempList); } ReportUnusedVariables(mSolution, usedVariablesInSolution); SetAnalayzeProceesAsCompleted(); }); }
public void RunSolutionAnalyzer(Solution solution, ObservableList <AnalyzerItemBase> issuesList) { foreach (AnalyzerItemBase issue in AnalyzeSolution.Analyze(solution)) { AddIssue(issuesList, issue); } //TODO: once this analyzer is taking long time due to many checks, run it using parallel ObservableList <BusinessFlow> BFs = WorkSpace.Instance.SolutionRepository.GetAllRepositoryItems <BusinessFlow>(); List <string> usedVariablesInSolution = new List <string>(); //foreach (BusinessFlow BF in BFs) Parallel.ForEach(BFs, new ParallelOptions { MaxDegreeOfParallelism = 5 }, BF => { List <string> tempList = RunBusinessFlowAnalyzer(BF, issuesList); MergeVariablesList(usedVariablesInSolution, tempList); }); ReportUnusedVariables(solution, usedVariablesInSolution, issuesList); }
private void RunSolutionAnalyzer() { mIssues.Clear(); //TODO: once this analyzer is taking long time due to many checks, run it using parallel //ObservableList<BusinessFlow> BFs = App.LocalRepository.GetAllBusinessFlows(); ObservableList <BusinessFlow> BFs = App.LocalRepository.GetSolutionBusinessFlows(); // Run it in another task so UI gets updates Task t = Task.Factory.StartNew(() => { List <AnalyzerItemBase> issues = AnalyzeSolution.Analyze(mSolution); AddIssues(issues); foreach (BusinessFlow BF in BFs) { RunBusinessFlowAnalyzer(BF, false); } SetAnalayzeProceesAsCompleted(); }); }
public static List <AnalyzerItemBase> Analyze(Solution Solution) { // Put all tests on Solution here List <AnalyzerItemBase> IssuesList = new List <AnalyzerItemBase>(); if (Solution.ApplicationPlatforms == null || Solution.ApplicationPlatforms.Count() == 0) { AnalyzeSolution AS = new AnalyzeSolution(); AS.Details = "Solution doesn't have Applications/Platforms defined"; AS.Description = "Solution doesn't have Applications/Platforms defined"; AS.HowToFix = "Goto to Solution tab, select the solution tree item, add application to the grid"; AS.Status = AnalyzerItemBase.eStatus.NeedFix; AS.CanAutoFix = AnalyzerItemBase.eCanFix.No; AS.Impact = "Activities will not run and will fail"; AS.ItemParent = "NA"; AS.ItemName = "No Applications / Platforms defined"; AS.ItemClass = "Solution"; AS.Severity = eSeverity.Critical; AS.Selected = false; IssuesList.Add(AS); } return(IssuesList); }
public void ReportUnusedVariables(object obj, List <string> usedVariables) { List <AnalyzerItemBase> IssuesList = new List <AnalyzerItemBase>(); Solution solution = null; BusinessFlow businessFlow = null; Activity activity = null; string variableSourceType = ""; string variableSourceName = ""; ObservableList <VariableBase> AvailableAllVariables = new ObservableList <VariableBase>(); if (typeof(BusinessFlow).Equals(obj.GetType())) { businessFlow = (BusinessFlow)obj; if (businessFlow.Variables.Count > 0) { AvailableAllVariables = businessFlow.Variables; variableSourceType = GingerDicser.GetTermResValue(eTermResKey.BusinessFlow); variableSourceName = businessFlow.Name; } } else if (typeof(Activity).Equals(obj.GetType())) { activity = (Activity)obj; if (activity.Variables.Count > 0) { AvailableAllVariables = activity.Variables; variableSourceType = GingerDicser.GetTermResValue(eTermResKey.Activity); variableSourceName = activity.ActivityName; } } else if (typeof(Solution).Equals(obj.GetType())) { solution = (Solution)obj; AvailableAllVariables = solution.Variables; variableSourceType = "Solution"; variableSourceName = solution.Name; } foreach (VariableBase var in AvailableAllVariables) { if (usedVariables != null && (!usedVariables.Contains(var.Name))) { if (obj.GetType().Equals(typeof(BusinessFlow))) { AnalyzeBusinessFlow aa = new AnalyzeBusinessFlow(); aa.Status = AnalyzerItemBase.eStatus.NeedFix; aa.ItemName = var.Name; aa.Description = var + " is Unused in " + variableSourceType + ": " + businessFlow.Name; aa.Details = variableSourceType; aa.mBusinessFlow = businessFlow; aa.ItemParent = variableSourceName; aa.CanAutoFix = AnalyzerItemBase.eCanFix.Yes; aa.IssueType = eType.Error; aa.FixItHandler = DeleteUnusedVariables; aa.Severity = eSeverity.Medium; IssuesList.Add(aa); } else if (obj.GetType().Equals(typeof(Solution))) { AnalyzeSolution aa = new AnalyzeSolution(); aa.Status = AnalyzerItemBase.eStatus.NeedFix; aa.ItemName = var.Name; aa.Description = var + " is Unused in Solution"; aa.Details = variableSourceType; aa.ItemParent = variableSourceName; aa.CanAutoFix = AnalyzerItemBase.eCanFix.Yes; aa.IssueType = eType.Error; aa.FixItHandler = DeleteUnusedVariables; aa.Severity = eSeverity.Medium; IssuesList.Add(aa); } else { AnalyzeActivity aa = new AnalyzeActivity(); aa.Status = AnalyzerItemBase.eStatus.NeedFix; aa.ItemName = var.Name; aa.Description = var + " is Unused in " + variableSourceType + ": " + activity.ActivityName; aa.Details = variableSourceType; aa.mActivity = activity; //aa.mBusinessFlow = businessFlow; aa.ItemParent = variableSourceName; aa.CanAutoFix = AnalyzerItemBase.eCanFix.Yes; aa.IssueType = eType.Error; aa.FixItHandler = DeleteUnusedVariables; aa.Severity = eSeverity.Medium; IssuesList.Add(aa); } } } AddIssues(IssuesList); }
public void ReportUnusedVariables(object obj, List <string> usedVariables) { List <AnalyzerItemBase> IssuesList = new List <AnalyzerItemBase>(); BusinessFlow BusinessFlow = App.BusinessFlow; Activity activity = BusinessFlow.Activities[0]; string variableSourceType = ""; string variableSourceName = ""; ObservableList <VariableBase> AvailableAllVariables = new ObservableList <VariableBase>(); if (typeof(BusinessFlow).Equals(obj.GetType())) { BusinessFlow = (BusinessFlow)obj; if (BusinessFlow.Variables.Count > 0) { AvailableAllVariables = BusinessFlow.Variables; variableSourceType = "BusinessFlow"; variableSourceName = BusinessFlow.Name; } } else if (typeof(Activity).Equals(obj.GetType())) { activity = (Activity)obj; if (activity.Variables.Count > 0) { AvailableAllVariables = activity.Variables; variableSourceType = "Activity"; variableSourceName = activity.ActivityName; } } else if (typeof(Solution).Equals(obj.GetType())) { Solution solution = (Solution)obj; AvailableAllVariables = solution.Variables; variableSourceType = "Solution"; variableSourceName = solution.Name; activity = BusinessFlow.Activities[0]; } foreach (VariableBase var in AvailableAllVariables) { if (usedVariables != null && (!usedVariables.Contains(var.Name))) { if (obj.GetType().Equals(typeof(BusinessFlow))) { AnalyzeBusinessFlow aa = new AnalyzeBusinessFlow(); aa.Status = AnalyzerItemBase.eStatus.NeedFix; aa.ItemName = var.Name; aa.Description = var + " is Unused in Business Flow : " + BusinessFlow.Name; aa.Details = variableSourceType; aa.mBusinessFlow = BusinessFlow; aa.ItemParent = variableSourceName; aa.CanAutoFix = AnalyzerItemBase.eCanFix.Yes; // we can autofix by delete, but don't want to aa.IssueType = eType.Error; aa.FixItHandler = DeleteUnusedVariables; aa.Severity = eSeverity.Medium; IssuesList.Add(aa); } else if (obj.GetType().Equals(typeof(Solution))) { AnalyzeSolution aa = new AnalyzeSolution(); aa.Status = AnalyzerItemBase.eStatus.NeedFix; aa.ItemName = var.Name; aa.Description = var + " is Unused in Solution"; aa.Details = variableSourceType; aa.ItemParent = variableSourceName; aa.CanAutoFix = AnalyzerItemBase.eCanFix.Yes; // we can autofix by delete, but don't want to aa.IssueType = eType.Error; aa.FixItHandler = DeleteUnusedVariables; aa.Severity = eSeverity.Medium; IssuesList.Add(aa); } else { AnalyzeActivity aa = new AnalyzeActivity(); aa.Status = AnalyzerItemBase.eStatus.NeedFix; aa.ItemName = var.Name; aa.Description = var + " is Unused in Activity : " + activity.ActivityName; aa.Details = variableSourceType; aa.mActivity = activity; aa.mBusinessFlow = BusinessFlow; aa.ItemParent = variableSourceName; aa.CanAutoFix = AnalyzerItemBase.eCanFix.Yes; // we can autofix by delete, but don't want to aa.IssueType = eType.Error; aa.FixItHandler = DeleteUnusedVariables; aa.Severity = eSeverity.Medium; IssuesList.Add(aa); } } } AddIssues(IssuesList); }