有个变更需求,平台访问sonarqube一直以来都是直接通过链接跳转的形式去访问sonarqube界面,来查看扫描出bug的文件及问题原因。 这样就会存在一个问题,访问的project在sonarqube上必须是public类型的。虽然可以通过设置设置用户无法访问代码,这样一来跳转又没什么意义了。
方案一:将所有sonarqube上的project设置成private,自身平台和sonarqube通过共享cookies来实现平台自由跳转。因为跨域问题,所以需要保证Domain是一样的,所有用nginx做一下平台及sonarqube的访问代理。权限控制上,需要同步用户以及在sonarqube上配置访问权限。
方案二:内嵌,将sonarqube的访问界面做到平台里面来,这样一方面便于解决权限控制。另一方面不用再配置代理。sonarqube的project下issues页面需要实现2块内容。1、出现问题的文件清单。2、点击进入文件查看源代码及出现bug的详情及所在行。一个3个接口(以下接口参数做了省略,具体实例可以自行进入sonarqube,点击issues页面,然后浏览器通过开发者工具查看接口,参数含义可以自己在sonarqube的页面底部web api中字形查看):
1、查看当前project中出现问题文件列表
http://ip:port/api/issues/search?componentKeys=xxx
2、查看指定文件的源代码内容
http://ip:port/api/sources/lines?key=xxx
3、查看置顶文件存在的缺陷及缺陷在源代码中的出现位置(缺陷以行号指定)
http://ip:port/api/issues/search?componentKeys=xxx