diff --git a/src/main/java/com/bsf/sonar/Sonar.java b/src/main/java/com/bsf/sonar/Sonar.java index 7c57062c9fc18b7ef0e5f777d9aa0912f8e8acf0..5de3f4fc8fa8b13b9829785eeadd009720cef33e 100644 --- a/src/main/java/com/bsf/sonar/Sonar.java +++ b/src/main/java/com/bsf/sonar/Sonar.java @@ -5,7 +5,9 @@ import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import lombok.val; +import org.jsoup.Connection; import org.jsoup.Jsoup; +import org.jsoup.nodes.Document; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.PropertySource; import org.springframework.stereotype.Component; @@ -23,15 +25,30 @@ public class Sonar { private String sonarUrl; @Value("${sonar.parseformat}") private String sonarParseformat; + + @Value("${sonar.login.username}") + private String username; + + @Value("${sonar.login.password}") + private String password; + private String releateApi="$sonarurl/api/measures/search?projectKeys=$projectName&metricKeys=alert_status,bugs,reliability_rating,vulnerabilities,security_rating,code_smells,sqale_rating,duplicated_lines_density,coverage,ncloc,ncloc_language_distribution"; public String run(String projectName) { try { + + Connection.Response res = Jsoup.connect("https://sonarqube.leqee.com/api/authentication/login") + .data("login", username, "password", password) + .method(Connection.Method.POST) + .execute(); + String jwtSession = res.cookie("JWT-SESSION"); + val doc = Jsoup.connect(releateApi.replace("$sonarurl", sonarUrl).replace("$projectName", projectName)) .header("Accept", "*/*") .header("Accept-Encoding", "gzip, deflate") .header("Accept-Language","zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3") .header("Content-Type", "application/json;charset=UTF-8") + .cookie("JWT-SESSION",jwtSession) // 需要设置 jwt-session 不然后面接口会响应 401 .ignoreContentType(true); val html = doc.get().body().html(); JsonResult json = JSON.parseObject(html, JsonResult.class); diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 5c952148a54d540716368643856ec1aa43fd2db1..2abdec910e9c6a2286895e27ad9e0216ca1f9d19 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -6,4 +6,7 @@ spring.http.encoding.force=true spring.application.name=dingding-sonar sonar.url=http://10.252.193.11:9000 -sonar.parseformat=bug:{$bug},\u6F0F\u6D1E:{$leak},\u574F\u5473\u9053:{$code_smell},\u8986\u76D6\u7387:{$coverage},\u91CD\u590D:{$density},\u72B6\u6001:{$status} \ No newline at end of file +sonar.parseformat=bug:{$bug},\u6F0F\u6D1E:{$leak},\u574F\u5473\u9053:{$code_smell},\u8986\u76D6\u7387:{$coverage},\u91CD\u590D:{$density},\u72B6\u6001:{$status} + +sonar.login.username=admin +sonar.login.password=admin \ No newline at end of file