SonarSource / sonar-dotnet

Code analyzer for C# and VB.NET projects
https://redirect.sonarsource.com/plugins/csharp.html
GNU Lesser General Public License v3.0
787 stars 227 forks source link

Report Main and Test projects statistics in DotNetSensor #4054

Closed pavel-mikula-sonarsource closed 3 years ago

pavel-mikula-sonarsource commented 3 years ago

Gather test vs main project statistics in a module level sensor. Report INFO with number of main and test projects analyzed.

andrei-epure-sonarsource commented 3 years ago

I realized another edge-case scenario:

This should be one of the integration tests for this ticket.

Scenarios for ITs:

andrei-epure-sonarsource commented 3 years ago

To validate this on Cirrus CI, I need to use the quirrus tool to get the logs.

andrei-epure-sonarsource commented 3 years ago

I queried the logs from cirrus CI:

There are some projects where there's multiple with no MAIN nor TEST files, like aspnetcore-identity.

I checked the aspnetcore repository, and there are multiple .proj, .npmproj, .rpmproj .vcxproj etc files in the repository that may be the ones w/o files. However, I only found 38 (out of 612) *proj files which are not *.csproj. And for the aspnetcore-identity there are 44 with no MAIN nor TEST files reported.

For now, I won't investigate further, as the logging didn't add any functional change on how test files are classified - this is just the current behavior of the scanner for msbuild.

akka-msbuild14:   88 MSBuild projects. 57 MAIN projects. 24 TEST projects. 7 with no MAIN nor TEST files.
aspnet-boilerplate:   76 MSBuild projects. 51 MAIN projects. 26 TEST projects.
aspnetcore-health:   2 MSBuild projects. 2 MAIN projects. 1 TEST project.
aspnetcore-identity:   153 MSBuild projects. 102 MAIN projects. 7 TEST projects. 44 with no MAIN nor TEST files.
aspnetcore-kestrel:   72 MSBuild projects. 42 MAIN projects. 7 TEST projects. 23 with no MAIN nor TEST files.
aspnetcore-mvc:   188 MSBuild projects. 122 MAIN projects. 18 TEST projects. 48 with no MAIN nor TEST files.
auto-mapper:   6 MSBuild projects. 2 MAIN projects. 5 TEST projects.
automatic-graph-layout:   40 MSBuild projects. 38 MAIN projects. 3 TEST projects.
awssdk:   172 MSBuild projects. 169 MAIN projects. 2 TEST projects. 1 with no MAIN nor TEST files.
benchmark-dot-net:   15 MSBuild projects. 10 MAIN projects. 2 TEST projects. 3 with no MAIN nor TEST files.
beyourmarket:   9 MSBuild projects. 9 MAIN projects. 1 TEST project.
bitwarden-core:   11 MSBuild projects. 11 MAIN projects.
blazor:   1 MSBuild project. 1 MAIN project.
cloudscribe:   36 MSBuild projects. 31 MAIN projects. 2 TEST projects. 3 with no MAIN nor TEST files.
codehub:   2 MSBuild projects. 3 MAIN projects.
csharp-language-server-protocol:   7 MSBuild projects. 5 MAIN projects. 3 TEST projects.
dnn:   48 MSBuild projects. 37 MAIN projects. 10 TEST projects. 1 with no MAIN nor TEST files.
dnspy:   43 MSBuild projects. 41 MAIN projects. 2 with no MAIN nor TEST files.
elasticsearch-net:   5 MSBuild projects. 5 MAIN projects. 1 TEST project.
embedio:   2 MSBuild projects. 2 MAIN projects. 1 TEST project.
event-flow:   25 MSBuild projects. 14 MAIN projects. 12 TEST projects.
eventstore:   17 MSBuild projects. 14 MAIN projects. 4 TEST projects.
fluentassertions:   14 MSBuild projects. 7 MAIN projects. 6 TEST projects. 1 with no MAIN nor TEST files.
flurl:   6 MSBuild projects. 6 MAIN projects. 1 TEST project.
fody:   10 MSBuild projects. 8 MAIN projects. 2 TEST projects.
jabbr:   4 MSBuild projects. 4 MAIN projects. 1 TEST project.
lucenenet:   51 MSBuild projects. 27 MAIN projects. 25 TEST projects.
masstransit:   66 MSBuild projects. 44 MAIN projects. 23 TEST projects.
mixerp:   66 MSBuild projects. 67 MAIN projects.
moq:   3 MSBuild projects. 1 MAIN project. 1 TEST project. 1 with no MAIN nor TEST files.
newtonsoft-json:   2 MSBuild projects. 2 MAIN projects. 1 TEST project.
nhibernate:   4 MSBuild projects. 2 MAIN projects. 2 TEST projects.
nlog:   7 MSBuild projects. 7 MAIN projects. 1 TEST project.
nodatime:   12 MSBuild projects. 10 MAIN projects. 3 TEST projects.
northwind-traders:   7 MSBuild projects. 6 MAIN projects. 2 TEST projects.
nuget-gallery:   17 MSBuild projects. 11 MAIN projects. 7 TEST projects.
nuget-server:   6 MSBuild projects. 4 MAIN projects. 3 TEST projects.
nunit:   7 MSBuild projects. 3 MAIN projects. 5 TEST projects.
odata:   9 MSBuild projects. 4 MAIN projects. 1 TEST project. 4 with no MAIN nor TEST files.
offwind-msbuild14:   8 MSBuild projects. 9 MAIN projects.
omnisharp-roslyn:   25 MSBuild projects. 16 MAIN projects. 10 TEST projects.
omnisharp-server:   8 MSBuild projects. 8 MAIN projects. 1 TEST project.
openiddict-core:   31 MSBuild projects. 23 MAIN projects. 9 TEST projects.
orchard-cms:   84 MSBuild projects. 76 MAIN projects. 9 TEST projects.
pascalabcnet:   31 MSBuild projects. 32 MAIN projects.
pirahna-cms-legacy:   5 MSBuild projects. 6 MAIN projects.
ravendb:   31 MSBuild projects. 19 MAIN projects. 12 TEST projects.
refactoring-essentials:   5 MSBuild projects. 3 MAIN projects. 1 TEST project. 1 with no MAIN nor TEST files.
refit:   5 MSBuild projects. 5 MAIN projects. 1 TEST project.
screentogif:   3 MSBuild projects. 2 MAIN projects. 2 TEST projects.
servuo:   2 MSBuild projects. 3 MAIN projects.
sharex:   9 MSBuild projects. 10 MAIN projects.
sharpcompress:   1 MSBuild project. 1 MAIN project. 1 TEST project.
sharpdevelop-avalonedit:   2 MSBuild projects. 2 MAIN projects. 1 TEST project.
sharpdevelop-wpfdesigner:   8 MSBuild projects. 8 MAIN projects. 1 TEST project.
sharpziplib:   2 MSBuild projects. 2 MAIN projects. 1 TEST project.
simplcommerce:   45 MSBuild projects. 41 MAIN projects. 5 TEST projects.
smartstore:   24 MSBuild projects. 20 MAIN projects. 5 TEST projects.
smsportal-msbuild14:   5 MSBuild projects. 6 MAIN projects.
stripe:   1 MSBuild project. 1 MAIN project. 1 TEST project.
stylecop:   5 MSBuild projects. 3 MAIN projects. 2 TEST projects.
system-wrapper:   3 MSBuild projects. 3 MAIN projects. 1 TEST project.
umbraco:   13 MSBuild projects. 13 MAIN projects. 1 TEST project.
wcf:   50 MSBuild projects. 13 MAIN projects. 30 TEST projects. 7 with no MAIN nor TEST files.
andrei-epure-sonarsource commented 3 years ago

I am reopening now as there there are some inconsistencies:

This is probably due to the assumption that there always is a top-level project.

andrei-epure-sonarsource commented 3 years ago

validation:

akka:   67 MSBuild projects. 42 MAIN projects. 25 TEST projects.
akka-msbuild14:   81 MSBuild projects. 57 MAIN projects. 24 TEST projects.
aspnet-boilerplate:   77 MSBuild projects. 51 MAIN projects. 26 TEST projects.
aspnetcore-health:   3 MSBuild projects. 2 MAIN projects. 1 TEST project.
aspnetcore-identity:   154 MSBuild projects. 102 MAIN projects. 7 TEST projects. 45 with no MAIN nor TEST files.
aspnetcore-kestrel:   73 MSBuild projects. 42 MAIN projects. 7 TEST projects. 24 with no MAIN nor TEST files.
aspnetcore-mvc:   189 MSBuild projects. 122 MAIN projects. 18 TEST projects. 49 with no MAIN nor TEST files.
auto-mapper:   7 MSBuild projects. 2 MAIN projects. 5 TEST projects.
automatic-graph-layout:   41 MSBuild projects. 38 MAIN projects. 3 TEST projects.
awssdk:   173 MSBuild projects. 169 MAIN projects. 2 TEST projects. 2 with no MAIN nor TEST files.
benchmark-dot-net:   13 MSBuild projects. 10 MAIN projects. 2 TEST projects. 1 with no MAIN nor TEST files.
beyourmarket:   10 MSBuild projects. 9 MAIN projects. 1 TEST project.
bitwarden-core:   12 MSBuild projects. 11 MAIN projects. 1 with no MAIN nor TEST files.
blazor:   2 MSBuild projects. 1 MAIN project. 1 with no MAIN nor TEST files.
cloudscribe:   37 MSBuild projects. 31 MAIN projects. 2 TEST projects. 4 with no MAIN nor TEST files.
codehub:   3 MSBuild projects. 3 MAIN projects.
csharp-language-server-protocol:   8 MSBuild projects. 5 MAIN projects. 3 TEST projects.
dnn:   48 MSBuild projects. 37 MAIN projects. 10 TEST projects. 1 with no MAIN nor TEST files.
dnspy:   41 MSBuild projects. 41 MAIN projects.
elasticsearch-net:   6 MSBuild projects. 5 MAIN projects. 1 TEST project.
embedio:   3 MSBuild projects. 2 MAIN projects. 1 TEST project.
event-flow:   26 MSBuild projects. 14 MAIN projects. 12 TEST projects.
eventstore:   18 MSBuild projects. 14 MAIN projects. 4 TEST projects.
fluentassertions:   15 MSBuild projects. 7 MAIN projects. 6 TEST projects. 2 with no MAIN nor TEST files.
flurl:   7 MSBuild projects. 6 MAIN projects. 1 TEST project.
fody:   11 MSBuild projects. 8 MAIN projects. 2 TEST projects. 1 with no MAIN nor TEST files.
jabbr:   5 MSBuild projects. 4 MAIN projects. 1 TEST project.
lucenenet:   52 MSBuild projects. 27 MAIN projects. 25 TEST projects.
masstransit:   67 MSBuild projects. 44 MAIN projects. 23 TEST projects.
mixerp:   67 MSBuild projects. 67 MAIN projects.
moq:   2 MSBuild projects. 1 MAIN project. 1 TEST project.
net5-project:   1 MSBuild project. 1 MAIN project.
newtonsoft-json:   3 MSBuild projects. 2 MAIN projects. 1 TEST project.
nhibernate:   4 MSBuild projects. 2 MAIN projects. 2 TEST projects.
nlog:   8 MSBuild projects. 7 MAIN projects. 1 TEST project.
nodatime:   13 MSBuild projects. 10 MAIN projects. 3 TEST projects.
nopowershell:   1 MSBuild project. 1 MAIN project.
northwind-traders:   8 MSBuild projects. 6 MAIN projects. 2 TEST projects.
nuget-gallery:   18 MSBuild projects. 11 MAIN projects. 7 TEST projects.
nuget-server:   7 MSBuild projects. 4 MAIN projects. 3 TEST projects.
ocelot:   6 MSBuild projects. 2 MAIN projects. 4 TEST projects.
odata:   10 MSBuild projects. 4 MAIN projects. 1 TEST project. 5 with no MAIN nor TEST files.
offwind-msbuild14:   9 MSBuild projects. 9 MAIN projects.
omnisharp-server:   9 MSBuild projects. 8 MAIN projects. 1 TEST project.
openiddict-core:   32 MSBuild projects. 23 MAIN projects. 9 TEST projects.
orchard-cms:   85 MSBuild projects. 76 MAIN projects. 9 TEST projects.
pascalabcnet:   32 MSBuild projects. 32 MAIN projects.
ravendb:   32 MSBuild projects. 19 MAIN projects. 12 TEST projects. 1 with no MAIN nor TEST files.
refit:   6 MSBuild projects. 5 MAIN projects. 1 TEST project.
servuo:   3 MSBuild projects. 3 MAIN projects.
sharex:   10 MSBuild projects. 10 MAIN projects.
sharpcompress:   2 MSBuild projects. 1 MAIN project. 1 TEST project.
sharpdevelop-avalonedit:   3 MSBuild projects. 2 MAIN projects. 1 TEST project.
sharpdevelop-wpfdesigner:   9 MSBuild projects. 8 MAIN projects. 1 TEST project.
sharpziplib:   3 MSBuild projects. 2 MAIN projects. 1 TEST project.
simplcommerce:   46 MSBuild projects. 41 MAIN projects. 5 TEST projects.
smartstore:   25 MSBuild projects. 20 MAIN projects. 5 TEST projects.
smsportal-msbuild14:   6 MSBuild projects. 6 MAIN projects.
staxrip:   1 MSBuild project. 1 MAIN project.
stylecop:   6 MSBuild projects. 3 MAIN projects. 2 TEST projects. 1 with no MAIN nor TEST files.
system-wrapper:   4 MSBuild projects. 3 MAIN projects. 1 TEST project.
umbraco:   14 MSBuild projects. 13 MAIN projects. 1 TEST project.
wcf:   46 MSBuild projects. 13 MAIN projects. 30 TEST projects. 3 with no MAIN nor TEST files.