diff --git a/.github/workflows/sonarcloud.yml b/.github/workflows/sonarcloud.yml index c29dd12042..97ef982be0 100644 --- a/.github/workflows/sonarcloud.yml +++ b/.github/workflows/sonarcloud.yml @@ -18,10 +18,18 @@ jobs: sonarProjectKey: reactiveui_ReactiveUI sonarOrganization: reactiveui sonarExclusions: '**/tests/**,**/integrationtests/**,**/benchmarks/**,**/examples/**,**/TestResults/**' - # Shared/Platform fused Rx-replacement observables are compile-linked into every platform assembly and - # only exercisable via platform (WPF/WinForms/MAUI/mobile) tests, so exclude them from coverage like - # generated code. The Shared/ root helpers stay measured (covered by the core test suite). - sonarCoverageExclusions: '**/tests/**,**/integrationtests/**,**/benchmarks/**,**/examples/**,**/*Tests/**,**/*Tests.cs,**/Generated/**,**/Shared/Platform/**' + # Coverage exclusions (sonar.coverage.exclusions) — code the Sonar scan cannot execute, so counting it + # would only ever report 0%. This is COVERAGE ONLY; every excluded file is still fully analysed for bugs, + # smells and duplication. + # - Shared/Platform fused Rx-replacement observables are compile-linked into every platform assembly and + # only exercisable via platform tests; the Shared/ root helpers stay measured (core test suite covers them). + # - The scan runs on windows-latest (see workflow-common-sonarcloud.yml runsOn) so it builds and runs the + # core + WPF + WinUI + WinForms tests — that platform code stays measured (e.g. CreatesWinformsCommandBinding + # sits at ~99%). What it CANNOT run is the android/apple per-OS code under ReactiveUI/Platforms/{android, + # apple-common,ios,mac,tvos,uikit-common,mobile-common}: those need an emulator/device or a mac runner, so + # their tests never execute in CI and the files always read 0%. Exclude exactly those per-OS dirs from + # coverage (Platforms/net and Platforms/netstandard2.0 stay measured — they run under the core tests). + sonarCoverageExclusions: '**/tests/**,**/integrationtests/**,**/benchmarks/**,**/examples/**,**/*Tests/**,**/*Tests.cs,**/Generated/**,**/Shared/Platform/**,**/Platforms/android/**,**/Platforms/apple-common/**,**/Platforms/ios/**,**/Platforms/mac/**,**/Platforms/tvos/**,**/Platforms/uikit-common/**,**/Platforms/mobile-common/**' # CPD (copy/paste detection) exclusions: # - tests/integrationtests/Benchmarks/examples are non-shipping code. The examples are # demo apps that deliberately parallel each other (each sample reimplements the same diff --git a/src/Directory.Packages.props b/src/Directory.Packages.props index 80c46e902a..9d10a8fc8f 100644 --- a/src/Directory.Packages.props +++ b/src/Directory.Packages.props @@ -6,7 +6,7 @@ 20.0.0 - 5.6.0 + 5.7.0 1.56.25 2.10.0.2 diff --git a/src/ReactiveShim.props b/src/ReactiveShim.props index d6686b587e..309f97291f 100644 --- a/src/ReactiveShim.props +++ b/src/ReactiveShim.props @@ -40,6 +40,10 @@ Broadcaster) resolve unqualified to the lean ReactiveUI.Primitives namespace. Open generics can't be aliased, so this is a namespace import rather than a per-type alias like RxVoid/ISequencer above. --> + + + + + @@ -39,6 +42,7 @@ +