fix(wpf): ship a default theme in ReactiveUI.WPF.Reactive so ViewModelViewHost renders #183
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: SonarCloud | |
| on: | |
| push: | |
| branches: [ main ] | |
| pull_request: | |
| branches: [ main ] | |
| permissions: | |
| contents: read | |
| jobs: | |
| sonarcloud: | |
| uses: reactiveui/actions-common/.github/workflows/workflow-common-sonarcloud.yml@main | |
| with: | |
| productNamespacePrefix: ReactiveUI | |
| installWorkloads: true | |
| sonarProjectKey: reactiveui_ReactiveUI | |
| sonarOrganization: reactiveui | |
| sonarExclusions: '**/tests/**,**/integrationtests/**,**/benchmarks/**,**/examples/**,**/TestResults/**' | |
| # 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 | |
| # view-model/driver shapes so it reads standalone), so cross-sample duplication is | |
| # expected and not worth de-duplicating into a shared library. | |
| # - WhenAny{Value,Change}Sink.Arity{N}.cs, WhenAnyMixin.Arity{N}.cs and | |
| # WhenAnyObservableMixin.Arity{N}.cs are template-style arity-specific files: the | |
| # residual duplication is the irreducible per-arity typed surface (N typed fields, | |
| # N constructor params, N switch arms). Compressing further would need source | |
| # generators or boxing-based erasure; suppressing CPD here keeps the metric honest | |
| # while every other Sonar rule still runs on them. Sonar path matchers only support | |
| # *, **, ? — use ? twice to cover 1- and 2-digit arities. | |
| sonarCpdExclusions: '**/tests/**,**/integrationtests/**,**/benchmarks/**,**/examples/**,**/*.Arity?.cs,**/*.Arity??.cs' | |
| sonarTestExclusions: '**/tests/**,**/integrationtests/**,**/benchmarks/**' | |
| testTimeout: '15m' | |
| secrets: | |
| SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} |