/// <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 }; }
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(); }); }