diff --git a/src/NetPackageAnalyzer/NetPackageAnalyzerConsole/Program.cs b/src/NetPackageAnalyzer/NetPackageAnalyzerConsole/Program.cs index ba2183d..c9f8e30 100644 --- a/src/NetPackageAnalyzer/NetPackageAnalyzerConsole/Program.cs +++ b/src/NetPackageAnalyzer/NetPackageAnalyzerConsole/Program.cs @@ -4,7 +4,7 @@ Console.WriteLine($"{TheAssemblyInfo.GeneratedNameNice}"); if (args.Length == 0) - { + { args = new[] { "-h" }; //args = new[] { "generateFiles", // "--folder", @"D:\gth\PackageAnalyzer\src\NetPackageAnalyzer\", diff --git a/src/NetPackageAnalyzer/NetPackageAnalyzerExportHTML/HtmlSummary.cshtml b/src/NetPackageAnalyzer/NetPackageAnalyzerExportHTML/HtmlSummary.cshtml index 94ec8c1..52c4e56 100644 --- a/src/NetPackageAnalyzer/NetPackageAnalyzerExportHTML/HtmlSummary.cshtml +++ b/src/NetPackageAnalyzer/NetPackageAnalyzerExportHTML/HtmlSummary.cshtml @@ -4,15 +4,13 @@ var nameSolution = GlobalsForGenerating.NameSolution; var info = Model.Item1; var projectDicts = Model.Item2; - var nrProjectsNoTests = info.nrProjects - info.nrTestProjects; var more1Version = Model.Item3; var refSummary = Model.Item4; var publicClassRefData = Model.Item5; var assemblyDataFromMSFT = Model.Item6; - var mostPublicClasses = publicClassRefData - .Assemblies_PublicClasses? - .FirstOrDefault(); + var publicClasses=new NamePerCountArray(publicClassRefData.Assemblies_PublicClasses,true); + var mostPublicClasses = publicClasses.First1(); var maxAssemblyRef = refSummary.AssembliesReferences?.FirstOrDefault(); var keysPackageMultiple = more1Version.KeysPackageMultipleMajorDiffers(); @@ -36,8 +34,8 @@ var top10Files = projectDicts.FilesWithMaxCommits(null); var medianCommits = projectDicts.MedianCommits(null); KeyValuePair? filewithMaxCommits = top10Files?.Length > 0 ? top10Files.First() : null; - Tuple tuple; - Tuple tupleThreshold; + Tuple tuple; + Tuple tupleThreshold; NamePerCountDisplayThreshold namePerCountDisplayThreshold; NamePerCountDisplay namePerCountDisplay; YEARNamePerCountDisplay yearFolders = new(yearWithFolders); @@ -46,94 +44,90 @@ var testProjects = projectDicts.TestsProjects; var rootProjects = projectDicts.RootProjects; - var execAssLines = new NamePerCountArray(assemblyDataFromMSFT - .AssemblyMetric(eMSFTMetrics.ExecutableLines)); + var execAssLines = new NamePerCountArray( + assemblyDataFromMSFT + .AssemblyMetric(eMSFTMetrics.ExecutableLines) + ,true); ; - var maxexecAssLines = execAssLines.Max1(); + var execClassLines = new NamePerCountArray(assemblyDataFromMSFT - .ClassesMetrics(eMSFTMetrics.ExecutableLines)); - ; - var maxExecClassLines = execAssLines.Max1(); + .ClassesMetrics(eMSFTMetrics.ExecutableLines),true); ; + + var execMethodsLines = new NamePerCountArray(assemblyDataFromMSFT - .MethodsMetrics(eMSFTMetrics.ExecutableLines)); + .MethodsMetrics(eMSFTMetrics.ExecutableLines),true); - var maxExecMethodsLines = execMethodsLines.Max1(); + var nrClassesPerAssembly = new NamePerCountArray(assemblyDataFromMSFT - .AssemblyNumberClasses()); - - var maxClasses = nrClassesPerAssembly.Max1(); + .AssemblyNumberClasses(),true); var nrMethodsPerAssembly = new NamePerCountArray(assemblyDataFromMSFT - .AssemblyNumberMethods()); - - var maxMethodsAss = nrMethodsPerAssembly.Max1(); + .AssemblyNumberMethods(),true); + var nrMethodsPerClass = new NamePerCountArray(assemblyDataFromMSFT - .ClassNumberMethods()); - var maxMethodsClass = nrMethodsPerClass.Max1(); - + .ClassNumberMethods(),true); + var maintAssIndex = new NamePerCountArray(assemblyDataFromMSFT - .AssemblyMetric(eMSFTMetrics.MaintainabilityIndex)); - - - var minMaintAssIndex = maintAssIndex.Max1(); - var maintAssDisplay = new NamePerCountDisplayThreshold(Tuple.Create("Maintainability for Assembly", maintAssIndex.OrderedAsc(), 10, 20, false)); + .AssemblyMetric(eMSFTMetrics.MaintainabilityIndex),false); + + var maintAssDisplay = new NamePerCountDisplayThreshold(Tuple.Create("Maintainability for Assembly", maintAssIndex, 10, 20, false)); var maintClassIndex = new NamePerCountArray(assemblyDataFromMSFT - .ClassesMetrics(eMSFTMetrics.MaintainabilityIndex) + .ClassesMetrics(eMSFTMetrics.MaintainabilityIndex),false ); - var minMaintClassIndex = maintClassIndex.Min1(); - var maintClassDisplay = new NamePerCountDisplayThreshold(Tuple.Create("Maintainability for Class", maintClassIndex.OrderedAsc(), 10, 20, false)); + + var maintClassDisplay = new NamePerCountDisplayThreshold(Tuple.Create("Maintainability for Class", maintClassIndex, 10, 20, false)); var maintMethodIndex = new NamePerCountArray(assemblyDataFromMSFT - .MethodsMetrics(eMSFTMetrics.MaintainabilityIndex) + .MethodsMetrics(eMSFTMetrics.MaintainabilityIndex),false ); - var minMaintMethodIndex = maintMethodIndex.Min1(); - var maintMethodDisplay = new NamePerCountDisplayThreshold(Tuple.Create("Maintainability for Method", maintMethodIndex.OrderedAsc(), 10, 20, false)); + + var maintMethodDisplay = new NamePerCountDisplayThreshold(Tuple.Create("Maintainability for Method", maintMethodIndex, 10, 20, false)); var CCAssIndex = new NamePerCountArray( assemblyDataFromMSFT - .AssemblyMetric(eMSFTMetrics.ClassCoupling) + .AssemblyMetric(eMSFTMetrics.ClassCoupling),true ); - var maxCCAssIndex = CCAssIndex.Max1(); - var CCAssDisplay = new NamePerCountDisplayThreshold(Tuple.Create("Class Coupling for Assembly", CCAssIndex.OrderedDesc(), 0, 10, true)); + + var CCAssDisplay = new NamePerCountDisplayThreshold(Tuple.Create("Class Coupling for Assembly", CCAssIndex, 0, 10, true)); var CCClassIndex = new NamePerCountArray(assemblyDataFromMSFT - .ClassesMetrics(eMSFTMetrics.ClassCoupling) + .ClassesMetrics(eMSFTMetrics.ClassCoupling),true ); - var maxCCClassIndex = CCClassIndex.Max1(); - var CCClassDisplay = new NamePerCountDisplayThreshold(Tuple.Create("Class Coupling for Class", CCClassIndex.OrderedDesc(), 0, 10, true)); + + var CCClassDisplay = new NamePerCountDisplayThreshold(Tuple.Create("Class Coupling for Class", CCClassIndex, 0, 10, true)); var CycAssIndex = new NamePerCountArray(assemblyDataFromMSFT - .AssemblyMetric(eMSFTMetrics.CyclomaticComplexity) + .AssemblyMetric(eMSFTMetrics.CyclomaticComplexity),true ); - var maxCycAssIndex = CCAssIndex.Max1(); - var CycAssDisplay = new NamePerCountDisplayThreshold(Tuple.Create("Cyclomatic Complexity for Assembly", CycAssIndex.OrderedDesc(), 10, 25, true)); + + var CycAssDisplay = new NamePerCountDisplayThreshold(Tuple.Create("Cyclomatic Complexity for Assembly", CycAssIndex,10, 25, true)); var CycClassIndex = new NamePerCountArray(assemblyDataFromMSFT - .ClassesMetrics(eMSFTMetrics.CyclomaticComplexity) + .ClassesMetrics(eMSFTMetrics.CyclomaticComplexity),true ); - var maxCycClassIndex = CycClassIndex.Max1(); - var CycClassDisplay = new NamePerCountDisplayThreshold(Tuple.Create("Cyclomatic Complexity for Class", CycClassIndex.OrderedDesc(), 10, 25, true)); + + var CycClassDisplay = new NamePerCountDisplayThreshold(Tuple.Create("Cyclomatic Complexity for Class", CycClassIndex, 10, 25, true)); var CycMethodIndex = new NamePerCountArray(assemblyDataFromMSFT - .MethodsMetrics(eMSFTMetrics.CyclomaticComplexity)); - var maxCycMethodIndex = CycMethodIndex.Max1(); - var CycMethodDisplay = new NamePerCountDisplayThreshold(Tuple.Create("Cyclomatic Complexity for Method", CycMethodIndex.OrderedDesc(), 10, 25, true)); + .MethodsMetrics(eMSFTMetrics.CyclomaticComplexity),true); + + var CycMethodDisplay = new NamePerCountDisplayThreshold(Tuple.Create("Cyclomatic Complexity for Method", CycMethodIndex, 10, 25, true)); - var packages = projectDicts.Packages(); - var topPackages = packages.OrderByDescending(it => it.Count).Take(7).ToArray(); + var packages =new NamePerCountArray( projectDicts.Packages(),true); + var topPackages = packages.DataOrdered().Take(7).ToArray(); int tableRow = 0; } @@ -381,46 +375,48 @@ @(++tableRow) - With max nr of Classes:@maxClasses?.Count - @maxClasses?.Name + With max nr of Classes + :@nrClassesPerAssembly.First1()?.Count + + @nrClassesPerAssembly.First1()?.Name @(++tableRow) With max nr of methods - :@maxMethodsAss?.Count + :@nrMethodsPerAssembly.First1()?.Count - @maxMethodsAss?.Name + @nrMethodsPerAssembly.First1()?.Name @(++tableRow) With low maintaining score - :@minMaintAssIndex?.Count + :@maintAssIndex.First1()?.Count - @minMaintAssIndex?.Name + @maintAssIndex.First1()?.Name @(++tableRow) - With max coupling:@maxCCAssIndex?.Count - @maxCCAssIndex?.Name + With max coupling:@CCAssIndex.First1()?.Count + @CCAssIndex.First1()?.Name @(++tableRow) With most Cyclomatic Complexity - :@maxCycAssIndex?.Count + :@CycAssIndex.First1()?Count - @maxCycAssIndex?.Name + @CycAssIndex.First1()?.Name @(++tableRow) - With most lines:@maxexecAssLines?.Count - @maxexecAssLines?.Name + With most lines:@execAssLines.First1()?.Count + @execAssLines.First1()?.Name @@ -444,18 +440,18 @@ With max nr of methods - :@maxMethodsClass?.Count + :@nrMethodsPerClass.First1()?.Count - @maxMethodsClass?.Name + @nrMethodsPerClass?.First1()?.Name @(++tableRow) With low maintaining score - :@minMaintClassIndex?.Count + :@maintClassIndex.First1()?.Count - @minMaintClassIndex?.Name + @maintClassIndex.First1()?.Name @(++tableRow) @@ -463,27 +459,27 @@ With max coupling - :@maxCCClassIndex?.Count + :@CCClassIndex.First1()?.Count - @maxCCClassIndex?.Name + @CCClassIndex.First1()?.Name @(++tableRow) With most Cyclomatic Complexity - :@maxCycClassIndex?.Count + :@CycClassIndex.First1()?.Count - @maxCycClassIndex?.Name + @CycClassIndex.First1()?.Name @(++tableRow) - With most lines:@maxExecClassLines?.Count + With most lines:@execClassLines.First1()??.Count - @maxExecClassLines?.Name + @execClassLines.First1()?.Name @@ -509,18 +505,18 @@ Method with max lines - :@maxExecMethodsLines?.Count + :@execMethodsLines.First1()?.Count - @maxExecMethodsLines?.Name + @execMethodsLines.First1()?.Name @(++tableRow) With low maintaining score - :@minMaintMethodIndex?.Count + :@maintMethodIndex.First1()?.Count - @minMaintMethodIndex?.Name + @maintMethodIndex.First1()?.Name @@ -528,9 +524,9 @@ With most Cyclomatic Complexity - :@maxCycMethodIndex?.Count + :@CycMethodIndex.First1()?.Count - @maxCycMethodIndex?.Name + @CycMethodIndex.First1()?.Name @@ -901,7 +897,7 @@

Number of classes per assembly

@{ - tupleThreshold = new("Number class per project", nrClassesPerAssembly.OrderedDesc(), 25, 50, true); + tupleThreshold = new("Number class per project", nrClassesPerAssembly, 25, 50, true); namePerCountDisplayThreshold = new(tupleThreshold); } @@ -911,7 +907,7 @@

Number of methods per assembly

@{ - tupleThreshold = new("Number methods per project", nrMethodsPerAssembly.OrderedDesc(), 50, 200, true); + tupleThreshold = new("Number methods per project", nrMethodsPerAssembly, 50, 200, true); namePerCountDisplayThreshold = new(tupleThreshold); } @@ -920,7 +916,7 @@

Number of methods per class

@{ - tupleThreshold = new("Number methods per class", nrMethodsPerClass.OrderedDesc(), 20, 70, true); + tupleThreshold = new("Number methods per class",nrMethodsPerClass!, 20, 70, true); namePerCountDisplayThreshold = new(tupleThreshold); } @@ -1112,7 +1108,7 @@ columns: [

Executable lines

Per assembly

@{ - tupleThreshold = new("Number exec lines per project", execAssLines.OrderedDesc(), 1000, 2000, true); + tupleThreshold = new("Number exec lines per project", execAssLines, 1000, 2000, true); namePerCountDisplayThreshold = new(tupleThreshold); } @namePerCountDisplayThreshold.Render() @@ -1120,7 +1116,7 @@ columns: [

Per class

@{ - tupleThreshold = new("Number exec lines per class", execClassLines.OrderedDesc(), 100, 200, true); + tupleThreshold = new("Number exec lines per class", execClassLines,100, 200, true); namePerCountDisplayThreshold = new(tupleThreshold); @@ -1132,7 +1128,7 @@ columns: [

Per method

@{ - tupleThreshold = new("Number exec lines per method", execMethodsLines.OrderedDesc(), 50, 100, true); + tupleThreshold = new("Number exec lines per method", execMethodsLines, 50, 100, true); namePerCountDisplayThreshold = new(tupleThreshold); @@ -1149,7 +1145,7 @@ columns: [

Assemblies with number of public classes

@{ - tuple = new(publicClassRefData.Assemblies_PublicClasses??[], "Public class per project"); + tuple = new(new (publicClassRefData.Assemblies_PublicClasses ?? [],true), "Public class per project"); namePerCountDisplay = new(tuple); } @@ -1158,7 +1154,7 @@ columns: [

Assemblies with Public methods

@{ - tupleThreshold = new("Public methods per assembly", publicClassRefData.Assemblies_PublicMethods ?? [], 100, 200, true); + tupleThreshold = new("Public methods per assembly", new(publicClassRefData.Assemblies_PublicMethods ?? [],true), 100, 200, true); namePerCountDisplayThreshold = new(tupleThreshold); } @@ -1170,7 +1166,7 @@ columns: [ @{ - tupleThreshold = new("Public methods per class", publicClassRefData.Class_PublicMethods ?? [], 10, 20, true); + tupleThreshold = new("Public methods per class", new(publicClassRefData.Class_PublicMethods ?? [], true), 10, 20, true); namePerCountDisplayThreshold = new(tupleThreshold); @@ -1206,7 +1202,7 @@ columns: [

Assemblies with References

@{ - tuple = new(refSummary.AssembliesReferences??[], "References per assembly"); + tuple = new(new( refSummary.AssembliesReferences??[],true), "References per assembly"); namePerCountDisplay = new(tuple); } @@ -1214,7 +1210,7 @@ columns: [

Classes with References

@{ - tuple = new(refSummary?.classRefs??[], "References per class"); + tuple = new(new(refSummary?.classRefs??[],true), "References per class"); namePerCountDisplay = new(tuple); } diff --git a/src/NetPackageAnalyzer/NetPackageAnalyzerExportHTML/Templates/NamePerCountDisplay.cshtml b/src/NetPackageAnalyzer/NetPackageAnalyzerExportHTML/Templates/NamePerCountDisplay.cshtml index 1a5bc1d..5c25421 100644 --- a/src/NetPackageAnalyzer/NetPackageAnalyzerExportHTML/Templates/NamePerCountDisplay.cshtml +++ b/src/NetPackageAnalyzer/NetPackageAnalyzerExportHTML/Templates/NamePerCountDisplay.cshtml @@ -1,12 +1,18 @@ -@inherits RazorBlade.PlainTextTemplate>; +@inherits RazorBlade.PlainTextTemplate>; @{ - var nameCount = Model.Item1??[]; - if(nameCount.Count() == 0) + var arr = Model.Item1; + if(arr == null) + { + return; + }; + var nameCountOriginal = arr.DataOrdered()??[]; + if (nameCountOriginal.Length == 0) { return; } - nameCount = nameCount.Distinct().ToArray(); - if(nameCount.Count() > 20) + nameCountOriginal = nameCountOriginal.Distinct().ToArray(); + var nameCount = nameCountOriginal; + if(nameCount.Length > 20) { nameCount = nameCount.Take(15).ToArray(); } @@ -53,7 +59,7 @@ bar @yAxis