change sonar content
This commit is contained in:
parent
fa2448b94d
commit
1acac5d39a
|
@ -1,5 +1,8 @@
|
||||||
class Api::V1::SonarqubesController < Api::V1::BaseController
|
class Api::V1::SonarqubesController < Api::V1::BaseController
|
||||||
before_action :load_repository
|
before_action :load_repository
|
||||||
|
include Repository::LanguagesPercentagable
|
||||||
|
include SonarService
|
||||||
|
|
||||||
def sonar_initialize
|
def sonar_initialize
|
||||||
gitea_params = { has_actions: params[:has_actions] == 'true' ? true :false }
|
gitea_params = { has_actions: params[:has_actions] == 'true' ? true :false }
|
||||||
gitea_setting = Gitea::Repository::UpdateService.call(@owner, @project.identifier, gitea_params)
|
gitea_setting = Gitea::Repository::UpdateService.call(@owner, @project.identifier, gitea_params)
|
||||||
|
@ -89,11 +92,13 @@ class Api::V1::SonarqubesController < Api::V1::BaseController
|
||||||
Gitea::CreateFileInteractor.call(@owner.gitea_token, @owner.login, sonar_scanner_content)
|
Gitea::CreateFileInteractor.call(@owner.gitea_token, @owner.login, sonar_scanner_content)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
sonar_content = build_sonar_content(params[:owner], @project.id, languages_precentagable.keys)
|
||||||
|
|
||||||
sonar_project_content = {
|
sonar_project_content = {
|
||||||
filepath: 'sonar-project.properties',
|
filepath: 'sonar-project.properties',
|
||||||
branch: params[:branch],
|
branch: params[:branch],
|
||||||
new_branch: nil,
|
new_branch: nil,
|
||||||
"content": "sonar.projectKey=#{params[:owner]}-#{@project.id}\nsonar.projectVersion=1.0\nsonar.sourceEncoding=UTF-8\nsonar.sources=.\nsonar.java.binaries=.\nsonar.javascript.lcov.reportPaths=.\nsonar.python.coverage.reportPaths=.\nsonar.cxx.file.suffixes=.h,.cpp",
|
"content": sonar_content,
|
||||||
"message": 'Add sonar-project.properties',
|
"message": 'Add sonar-project.properties',
|
||||||
committer: {
|
committer: {
|
||||||
email: @owner.mail,
|
email: @owner.mail,
|
||||||
|
@ -101,6 +106,7 @@ class Api::V1::SonarqubesController < Api::V1::BaseController
|
||||||
},
|
},
|
||||||
identifier: @project.identifier
|
identifier: @project.identifier
|
||||||
}
|
}
|
||||||
|
|
||||||
sonar_project_exit = Repositories::EntriesInteractor.call(@owner, @project.identifier, 'sonar-project.properties', ref: params[:branch])
|
sonar_project_exit = Repositories::EntriesInteractor.call(@owner, @project.identifier, 'sonar-project.properties', ref: params[:branch])
|
||||||
if sonar_project_exit.success?
|
if sonar_project_exit.success?
|
||||||
Gitea::UpdateFileInteractor.call(@owner.gitea_token, @owner.login, sonar_project_content.merge(sha:sonar_project_exit.result['sha']))
|
Gitea::UpdateFileInteractor.call(@owner.gitea_token, @owner.login, sonar_project_content.merge(sha:sonar_project_exit.result['sha']))
|
||||||
|
|
|
@ -0,0 +1,46 @@
|
||||||
|
module SonarService
|
||||||
|
class << self
|
||||||
|
def build_sonar_content(owner,project_id,lang_keys)
|
||||||
|
lang_map = {
|
||||||
|
'Java' => :java,
|
||||||
|
'Python' => :python,
|
||||||
|
'JavaScript' => :js,
|
||||||
|
'TypeScript' => :ts,
|
||||||
|
'C++' => :cpp,
|
||||||
|
'C' => :cpp
|
||||||
|
}
|
||||||
|
|
||||||
|
detected_langs = lang_keys.map { |l| lang_map[l] }.compact.to_set
|
||||||
|
|
||||||
|
lines = []
|
||||||
|
lines << "sonar.projectKey=#{owner}-#{project_id}"
|
||||||
|
lines << "sonar.projectVersion=1.0"
|
||||||
|
lines << "sonar.sourceEncoding=UTF-8"
|
||||||
|
lines << "sonar.sources=."
|
||||||
|
lines << "sonar.exclusions=**/test/**,**/tests/**,**/vendor/**,**/node_modules/**,**/__pycache__/**"
|
||||||
|
|
||||||
|
if detected_langs.include?(:java)
|
||||||
|
lines << "sonar.java.binaries=target/classes,build/classes,out/production"
|
||||||
|
end
|
||||||
|
|
||||||
|
if detected_langs.include?(:js)
|
||||||
|
lines << "sonar.javascript.lcov.reportPaths=coverage/lcov.info"
|
||||||
|
end
|
||||||
|
|
||||||
|
if detected_langs.include?(:ts)
|
||||||
|
lines << "sonar.typescript.tsconfigPath=tsconfig.json"
|
||||||
|
end
|
||||||
|
|
||||||
|
if detected_langs.include?(:python)
|
||||||
|
lines << "sonar.python.coverage.reportPaths=coverage.xml"
|
||||||
|
end
|
||||||
|
|
||||||
|
if detected_langs.include?(:cpp)
|
||||||
|
lines << "sonar.cxx.file.suffixes=.cpp,.c,.cc,.h,.hpp,.hh"
|
||||||
|
lines << "sonar.cxx.errorRecoveryEnabled=true"
|
||||||
|
end
|
||||||
|
|
||||||
|
lines.join("\n")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
Loading…
Reference in New Issue