Ejemplo n.º 1
0
        /// <summary>
        ///
        /// </summary>
        private void PrepareViolationsSummaryAndChartData()
        {
            if (SourceCodeFilesCollection == null || SourceCodeFilesCollection?.Count == 0)
            {
                return;
            }

            ViolationSummaryCollection?.Clear();

            var unanalyzedFilesCount = SourceCodeFilesCollection.Count((x) => x.IsChecked == false);

            ViolationSummaryCollection.Add(new SummaryData {
                SummaryName = "Unanalyzed File Count", SummaryCount = unanalyzedFilesCount
            });

            var analyzedFilesCount = SourceCodeFilesCollection.Count((x) => x.IsChecked == true);

            ViolationSummaryCollection.Add(new SummaryData {
                SummaryName = "Analyzed File Count", SummaryCount = analyzedFilesCount
            });

            var okCodeFilesCount = SourceCodeFilesCollection.Count((x) => x.IsChecked == true && x.AnalysisStatusInstance == AnalysisStatus.Completed_Ok);

            ViolationSummaryCollection.Add(new SummaryData {
                SummaryName = "OK Code File Count", SummaryCount = okCodeFilesCount
            });

            var ngCodeFiles = SourceCodeFilesCollection.Where((x) => x.IsChecked == true && x.AnalysisStatusInstance == AnalysisStatus.Completed_NG).ToList();

            var ngCodeFilesCount = ngCodeFiles.Count;

            ViolationSummaryCollection.Add(new SummaryData {
                SummaryName = "NG Code File Count", SummaryCount = ngCodeFilesCount
            });
            var totalNGDetected = ngCodeFiles.Where((y) => y.AnalysisResultDataInstance?.NameRuleErrors.Count > 0).ToList();

            ViolationSummaryCollection.Add(new SummaryData {
                SummaryName = "Total Violations Count", SummaryCount = totalNGDetected.Count
            });
            TotalViolationsCount = totalNGDetected.Count;

            var classNameViolationsCount = totalNGDetected.Count((x) => x.AnalysisResultDataInstance.NameRuleErrors.
                                                                 Any((y) => y.Violation == NameRuleViolations.ClassNameRuleViolation));

            ViolationSummaryCollection.Add(new SummaryData {
                SummaryName = "Class Violations", SummaryCount = classNameViolationsCount
            });
            ClassNameViolationsChartValue = new ChartValues <int> {
                classNameViolationsCount
            };


            var methodNameViolationsCount = totalNGDetected.Count((x) => x.AnalysisResultDataInstance.NameRuleErrors.
                                                                  Any((y) => y.Violation == NameRuleViolations.MethodNameRuleViolation));

            ViolationSummaryCollection.Add(new SummaryData {
                SummaryName = "Method Violations", SummaryCount = methodNameViolationsCount
            });
            MethodNameViolationsChartValue = new ChartValues <int> {
                methodNameViolationsCount
            };

            var namespaceNameViolationsCount = totalNGDetected.Count((x) => x.AnalysisResultDataInstance.NameRuleErrors.
                                                                     Any((y) => y.Violation == NameRuleViolations.NamespaceRuleViolation));

            ViolationSummaryCollection.Add(new SummaryData {
                SummaryName = "Namespace Violations", SummaryCount = namespaceNameViolationsCount
            });
            NamespaceNameViolationsChartValue = new ChartValues <int> {
                namespaceNameViolationsCount
            };


            var parameterNameViolations = totalNGDetected.Count((x) => x.AnalysisResultDataInstance.NameRuleErrors.
                                                                Any((y) => y.Violation == NameRuleViolations.ParameterNameRuleViolation));

            ViolationSummaryCollection.Add(new SummaryData {
                SummaryName = "Parameter Violations", SummaryCount = parameterNameViolations
            });
            ParameterNameViolationsChartValue = new ChartValues <int> {
                parameterNameViolations
            };

            var privFieldViolationsCount = totalNGDetected.Count((x) => x.AnalysisResultDataInstance.NameRuleErrors.
                                                                 Any((y) => y.Violation == NameRuleViolations.PrivateFieldNameRuleViolation));

            ViolationSummaryCollection.Add(new SummaryData {
                SummaryName = "Private Field Violations", SummaryCount = privFieldViolationsCount
            });
            PrivateFieldNameViolationsChartValue = new ChartValues <int> {
                privFieldViolationsCount
            };

            var protFieldViolationsCount = totalNGDetected.Count((x) => x.AnalysisResultDataInstance.NameRuleErrors.
                                                                 Any((y) => y.Violation == NameRuleViolations.ProtectedFieldNameRuleViolation));

            ViolationSummaryCollection.Add(new SummaryData {
                SummaryName = "Protected Field Violations", SummaryCount = protFieldViolationsCount
            });
            ProtectedFieldNameViolationsChartValue = new ChartValues <int> {
                protFieldViolationsCount
            };

            var pubFieldViolationsCount = totalNGDetected.Count((x) => x.AnalysisResultDataInstance.NameRuleErrors.
                                                                Any((y) => y.Violation == NameRuleViolations.PublicFieldNameRuleViolation));

            ViolationSummaryCollection.Add(new SummaryData {
                SummaryName = "Public Field Violations", SummaryCount = pubFieldViolationsCount
            });
            PublicFieldNameViolationsChartValue = new ChartValues <int> {
                pubFieldViolationsCount
            };

            var privPropViolationsCount = totalNGDetected.Count((x) => x.AnalysisResultDataInstance.NameRuleErrors.
                                                                Any((y) => y.Violation == NameRuleViolations.PrivatePropertyNameRuleViolation));

            ViolationSummaryCollection.Add(new SummaryData {
                SummaryName = "Private Property Violations", SummaryCount = privPropViolationsCount
            });
            PrivatePropertyNameViolationsChartValue = new ChartValues <int> {
                privPropViolationsCount
            };

            var protPropViolationsCount = totalNGDetected.Count((x) => x.AnalysisResultDataInstance.NameRuleErrors.
                                                                Any((y) => y.Violation == NameRuleViolations.ProtectedPropertyNameRuleViolation));

            ViolationSummaryCollection.Add(new SummaryData {
                SummaryName = "Protected Property Violations", SummaryCount = protPropViolationsCount
            });
            ProtectedPropertyNameViolationsChartValue = new ChartValues <int> {
                protPropViolationsCount
            };

            var pubPropViolationsCount = totalNGDetected.Count((x) => x.AnalysisResultDataInstance.NameRuleErrors.
                                                               Any((y) => y.Violation == NameRuleViolations.PublicPropertyNameRuleViolation));

            ViolationSummaryCollection.Add(new SummaryData {
                SummaryName = "Public Property Violations", SummaryCount = pubPropViolationsCount
            });
            PublicPropertyNameViolationsChartValue = new ChartValues <int> {
                pubPropViolationsCount
            };

            var largeMethodBodyViolationsCount = totalNGDetected.Count((x) => x.AnalysisResultDataInstance.NameRuleErrors.
                                                                       Any((y) => y.Violation == NameRuleViolations.LargeMethodBodyRuleViolation));

            ViolationSummaryCollection.Add(new SummaryData {
                SummaryName = "Large Method Body Violations", SummaryCount = largeMethodBodyViolationsCount
            });
            LargeMethodViolationsChartValue = new ChartValues <int> {
                largeMethodBodyViolationsCount
            };
        }
Ejemplo n.º 2
0
        private void InitializeCommands()
        {
            BrowseCommand = new DelegateCommand(() =>
            {
                using (var dialog = new System.Windows.Forms.FolderBrowserDialog())
                {
                    System.Windows.Forms.DialogResult result = dialog.ShowDialog();
                    if (result == System.Windows.Forms.DialogResult.OK)
                    {
                        CodeRootLocation = dialog.SelectedPath;
                    }
                }
            });
            ViolationSummaryCommand = new DelegateCommand(() =>
            {
                PrepareViolationsSummaryAndChartData();
            });

            LoadCodeCommand = new DelegateCommand(() =>
            {
                SelectedSourceCodeFile = default(DocumentData);
                SourceCodeFilesCollection?.Clear();
                ViolationSummaryCollection?.Clear();
                InitializePieChartProperties();
                //OrigCodeString = string.Empty;



                if (string.IsNullOrEmpty(CodeRootLocation) || !Directory.Exists(CodeRootLocation))
                {
                    MessageBox.Show("Incorrect or empty source code directory provided.", "Path Error");
                    return;
                }

                var documentDataList = _folderScanner.GetFileListWithFullPath(CodeRootLocation).Where((x) => x != null).ToList <DocumentData>();

                SourceCodeFilesCollection.Clear();
                SourceCodeFilesCollection.AddRange(documentDataList);
            });

            AnalyzeCommand = new DelegateCommand(() =>
            {
                var selectedFilesForAnalysis = SourceCodeFilesCollection.Where((x) => x.IsChecked == true).ToList();

                if (selectedFilesForAnalysis?.Count == 0)
                {
                    MessageBox.Show("No source files found for analysis.", "Cannot proceed analysis");
                    return;
                }

                foreach (var codeFile in selectedFilesForAnalysis)
                {
                    string codeString = _codeParser.GetCodeFromFile(codeFile.FilePath);
                    //codeString =codeString.Replace("\r", "");

                    //codeString = InputText;
                    var analysisResult = _analysisManager.RunAnalysis(codeString);
                    codeFile.AnalysisResultDataInstance = analysisResult;
                    var status = (analysisResult.NameRuleErrors.Count == 0) ? AnalysisStatus.Completed_Ok : AnalysisStatus.Completed_NG;
                    codeFile.AnalysisStatusInstance = status;
                    //codeFile.OrigString = codeString;
                }

                PrepareViolationsSummaryAndChartData();
            });
        }