22
33desc 'Get code coverage report and run complexity analysis for Sonar'
44lane :sonar_upload do
5+ sonar_args = ''
56 version_number = get_version_number (
67 xcodeproj : 'StreamChatSwiftUI.xcodeproj' ,
78 target : 'StreamChatSwiftUI'
89 ) [ /\d +\. \d +\. \d / ]
910
10- slather
11+ unless Dir . glob ( 'test_output/*.xcresult' ) . empty?
12+ slather
13+ lizard (
14+ source_folder : './Sources/' ,
15+ language : 'swift' ,
16+ export_type : 'xml' ,
17+ report_file : 'reports/lizard.xml'
18+ )
19+ sonar_args = '-Dsonar.coverageReportPaths="reports/sonarqube-generic-coverage.xml" ' \
20+ '-Dsonar.swift.lizard.report="reports/lizard.xml"'
21+ end
1122
12- lizard (
13- source_folder : './Sources/' ,
14- language : 'swift' ,
15- export_type : 'xml' ,
16- report_file : 'reports/lizard.xml'
17- )
23+ options = sonar_options ( sonar_args : sonar_args , version_number : version_number )
24+ sonar ( options )
1825
19- if ENV [ 'GITHUB_EVENT_NAME' ] == 'pull_request'
20- sonar (
21- sonar_login : ENV [ 'SONAR_TOKEN' ] ,
22- pull_request_branch : ENV [ 'GITHUB_HEAD_REF' ] ,
23- pull_request_base : ENV [ 'GITHUB_BASE_REF' ] ,
24- pull_request_key : ENV [ 'PR_NUMBER' ] ,
25- project_version : version_number
26- )
27- else
28- branch = ENV [ 'BRANCH_NAME' ] || git_branch
26+ next if sonar_args . empty? || ENV [ 'GITHUB_EVENT_NAME' ] == 'pull_request' || sonar_branch !~ /main|develop/
2927
30- sonar (
31- sonar_login : ENV [ 'SONAR_TOKEN' ] ,
32- branch_name : branch ,
33- project_version : version_number
34- )
28+ slack_sonarcloud_metrics ( version_number : version_number )
29+ end
30+
31+ desc 'Gets Sonar options'
32+ private_lane :sonar_options do |options |
33+ default_options = { sonar_login : ENV [ 'SONAR_TOKEN' ] , sonar_runner_args : options [ :sonar_args ] }
3534
36- case branch . to_sym
37- when :main
38- slack_sonarcloud_metrics ( new_period : version_number , branch : branch )
39- when :develop
40- slack_sonarcloud_metrics ( branch : branch )
41- else
42- UI . message ( "Sonar MetricKit ignores branch: #{ branch } " )
43- end
35+ if ENV [ 'GITHUB_EVENT_NAME' ] == 'pull_request'
36+ default_options . merge ( pull_request_branch : ENV [ 'GITHUB_HEAD_REF' ] ,
37+ pull_request_base : ENV [ 'GITHUB_BASE_REF' ] ,
38+ pull_request_key : ENV [ 'PR_NUMBER' ] )
39+ else
40+ default_options . merge ( branch_name : sonar_branch , project_version : options [ :version_number ] )
4441 end
4542end
4643
44+ desc 'Gets Sonar branch'
45+ private_lane :sonar_branch do
46+ ENV [ 'BRANCH_NAME' ] || git_branch
47+ end
48+
4749desc 'Creates a report in Slack with SonarCloud analysis details'
4850private_lane :slack_sonarcloud_metrics do |options |
4951 project_key = 'GetStream_stream-chat-swiftui'
@@ -52,7 +54,7 @@ private_lane :slack_sonarcloud_metrics do |options|
5254 quality_gate : true ,
5355 branch : options [ :branch ]
5456 )
55- new_period = options [ :new_period ] || options [ :branch ]
57+ new_period = sonar_branch == 'main' ? options [ :version_number ] : sonar_branch
5658 new_coverage = metrics [ :new_coverage ] . to_f . round ( 2 )
5759 new_duplication_density = metrics [ :new_duplicated_lines_density ] . to_f . round ( 2 )
5860 vulnerabilities = metrics [ :security_hotspots ] . to_i + metrics [ :vulnerabilities ] . to_i
0 commit comments