本地扫描指的是在开发人员本机的eclipse上安装sonar插件,利用sonar插件在eclipse中快速进行代码静态扫描。与使用sonar-runner客户端执行sonar扫描的方式相比,因为本地扫描省略了源代码导入、违规项写入数据库等操作,所以在扫描速度上要快很多,很适合开发人员在check in代码之前执行,尽早发现编码缺陷,以便及时修复。
一、安装sonar插件
1、点击eclipse主菜单中Help > Install New Software... 打开Install窗口。
2、把升级站点URL“http://dist.sonar-ide.codehaus.org/eclipse/”粘贴到“Work with”输入框中,然后按回车键(Enter)。下方将显示出可用的插件和组件。
如果访问该网址太慢,也可以直接从文件服务器上下载sonar插件的压缩包到本地,选择从本地安装的方式安装插件。下载方式为使用user1用户(使用SSH Secure File Transfer软件),从10.25.204.100服务器上下载整个/vmp/vmdata/software/ci-pkg/sonar/sonar-plugin-3.4.0目录到本地(例如D:\tmp\sonar-plugin-3.4.0),user1用户的密码是Pa888888。从本地安装时,上述的“Work with”框中填写file:/D:/tmp/sonar-plugin-3.4.0,然后同样是按回车。
3、勾选第二个“SonarQube Java”,然后点击“Next>”按钮,eclipse开始检查是否可以成功安装插件。
4、点击“Finish”按钮开始安装,eclipse将下载并安装必要的组件。
5、安装过程结束后,eclipse将询问你是否要重启eclipse,强烈建议选“Yes”。
6、重新启动eclipse,点击"Window——Preferences",可以看到已有sonar的配置项。如果本地的eclipse版本太低,可能出现sonar插件安装好以后,看不到sonar配置项的情况,此时需要安装最新版本的eclipse,然后再重新安装sonar插件。
点开SonarQube,选中Servers。然后选中右边缺省的"http://localhost:9000",再点"Edit..."按钮。
"Sonar server URL"处填写"http://10.20.12.110","Username"处填写域账号,"Password"处填写域账号的密码。然后点击"Test connection"按钮,正常情况下左上角将显示"Successfully connected!",点击"Finish"按钮保存设置。
接下来要添加一个本地扫描的属性“sonar.buildbreaker.skip”,将其设置为true,以便在进行本地扫描的时候,当新增违规项或新增重复代码时,跳过“break build”这一步骤。如果不配置此属性,本地扫描时可能会提示“Alert thresholds have been hit”,并且不会刷新本地扫描的结果。
点击“Preview Analysis Properties”,然后点击右边的“New...”,添加该属性,值设为“true”。
如果是android项目,还需要添加一个属性“sonar.profile=PAAndroidCodeHealth”,用来指定android项目专用的配置文件。
二、执行一次全量扫描
在执行本地扫描之前,需要先执行一次全量扫描。正常情况下推荐在jenkins平台上配置本子系统的开发流sonar扫描job,并成功运行一次(参照《在Jenkins中配置sonar扫描》操作)。特殊情况下不方便在jenkins平台上配置job,可以使用sonar-runner执行全量扫描。请参照《如何运行代码扫描》操作。
三、将本地项目与sonar关联
在"Package Explorer"中用鼠标右键单机进行本地扫描的项目,在弹出的菜单中点击"Configure——Associate with SonarQube..."。
在弹出的窗口中点击"<Click here to start searching for a remote SonarQube project...>"
然后输入sonar-project.properties文件中sonar.projectName属性值的前几个字母(大小写无关),系统将自动搜索出匹配的项目。
双击正确的项目名,Sonar project处将显示出项目名称和sonar.projectKey值,此时点击"Finish"按钮即可完成关联。
四、执行本地扫描
在Package Explorer中,右键单击要执行本地扫描的project,在弹出菜单中依次点击"SonarQube——Analyze"。
五、查看扫描结果
本地扫描完成后,可以在sonar的Violations视图中查看本次扫描出来的所有违规项。点击eclipse的window菜单,依次点击"Show View——Other..."
选择"Sonar"目录下的Sonar Issues,然后点击OK按钮(相同目录下的Sonar Web Browser视图用来查看远程sonar平台上的扫描结果)。