1+ ---
12name : Coverage
23
3- on : [pull_request, push]
4+ on : # yamllint disable-line rule:truthy
5+ push :
6+ branches : ["main"]
7+ pull_request :
8+ # The branches below must be a subset of the branches above
9+ branches : ["main"]
10+ workflow_dispatch :
411
512jobs :
613 coverage :
@@ -13,11 +20,70 @@ jobs:
1320 run : rustup update stable
1421 - name : Install cargo-llvm-cov
1522 uses : taiki-e/install-action@cargo-llvm-cov
23+ - name : Install Clippy
24+ run : rustup component add clippy
25+ - name : Install cargo-sonar and run Clippy
26+ run : |
27+ cargo install cargo-sonar
28+ cargo clippy --message-format json > my-clippy-report.json
29+ cargo sonar --clippy --clippy-path my-clippy-report.json
1630 - name : Generate code coverage
17- run : cargo llvm-cov --all-features --workspace --lcov --output-path lcov.info
18- - name : Upload coverage to Codecov
19- uses : codecov/codecov-action@v3
31+ run : >
32+ cargo llvm-cov
33+ --all-features
34+ --workspace
35+ --lcov
36+ --output-path lcov.info
37+ - name : Upload coverage artifact
38+ uses : actions/upload-artifact@v4
2039 with :
21- token : ${{ secrets.CODECOV_TOKEN }} # not required for public repos
22- files : lcov.info
23- fail_ci_if_error : true
40+ name : coverage-report
41+ path : |
42+ lcov.info
43+ sonar-issues.json
44+
45+ codecov :
46+ name : Upload to Codecov
47+ runs-on : ubuntu-24.04
48+ needs : coverage
49+
50+ steps :
51+ - name : Checkout repository
52+ uses : actions/checkout@v5
53+ with :
54+ fetch-depth : 0
55+ - name : Download coverage artifact
56+ uses : actions/download-artifact@v5
57+ with :
58+ name : coverage-report
59+
60+ - name : Upload coverage reports to Codecov with GitHub Action
61+ uses : codecov/codecov-action@v5
62+ with :
63+ files : coverage.out
64+ token : ${{ secrets.CODECOV_TOKEN }} # required
65+ verbose : true # optional (default = false)
66+
67+ sonarqube :
68+ name : SonarQube
69+ runs-on : ubuntu-latest
70+ needs : coverage
71+
72+ steps :
73+ - name : Checkout repository
74+ uses : actions/checkout@v5
75+ with :
76+ fetch-depth : 0
77+ - name : Download coverage artifact
78+ uses : actions/download-artifact@v5
79+ with :
80+ name : coverage-report
81+ - name : SonarCloud Scan
82+ uses : SonarSource/sonarqube-scan-action@master
83+ env :
84+ GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
85+ SONAR_TOKEN : ${{ secrets.SONAR_TOKEN }}
86+ with :
87+ args : >
88+ -Dsonar.externalIssuesReportPaths=sonar-issues.json
89+ -Dcommunity.rust.lcov.reportPaths=lcov.info
0 commit comments