Beispiel #1
0
        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();
            });
        }
Beispiel #2
0
        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);
        }
Beispiel #3
0
        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();
            });
        }
Beispiel #4
0
        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);
        }
Beispiel #5
0
        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);
        }
Beispiel #6
0
        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);
        }