sonar教程——本地扫描

本文介绍如何在Eclipse中安装Sonar插件并执行本地代码扫描,包括配置Sonar服务器、添加扫描属性及执行全量扫描等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

​​本地扫描指的是在开发人员本机的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)​​。下方将显示出​可用的插件和组件。

install-sonarqube-eclipse.png 

如果访问该网址太慢,也可以直接从文件服务器上下载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插件。

​​ 2014-05-21_14-10.PNG

​​点开SonarQube,选中Servers。然后选中右边缺省的"http://localhost:9000",再点"Edit..."按钮。

2014-5-21-141404.PNG

"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”。

2014-5-21-141705.PNG 

如果是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...>"​

2014-5-21-142116.PNG 

然后输入sonar-project.properties文件中sonar.projectName属性值的前几个字母(大小写无关),系统将自动搜索出匹配的项目。

双击正确的项目名,Sonar project处将显示出项目名称和sonar.projectKey值,此时点击"Finish"按钮即可完成关联。

2014-5-21-142301.PNG

四、执行本地扫描​

在Package Explorer中,右键单击要执行本地扫描的project,在弹出菜单中依次点击"SonarQube——Analyze"。


在扫描过程中,如果项目中代码很多,可能会出现内存溢出错误“ Exception in thread "CLEANUP_MANAGER" java.lang.OutOfMemoryError: Java heap space”此时需要修改sonar插件配置,添加-Xmx参数,例如:
sonar-2.PNG

五、查看扫描结果​​​

本地扫描完成后,可以在sonar的Violations视图中查看本次扫描出来的所有违规项。点击eclipse的window菜单,依次点击"Show View——Other..."

20131115-1.PNG

选择"Sonar"目录下的Sonar Issues,然后点击OK按钮(相同目录下的Sonar Web Browser视图用来查看远程sonar平台上的扫描结果)。

20131115-2.PNG

### SonarLint 与 SonarQube 的区别及关系 #### 工具定位 SonarLint 是一款开发者工具,专注于本地开发环境中的即时代码质量分析。它能够在编写代码的过程中提供实时反馈,帮助程序员尽早发现潜在的质量问题[^1]。 相比之下,SonarQube 是一个全面的持续检测平台,不仅支持静态代码分析,还提供了项目管理功能以及历史数据跟踪能力。通过集成CI/CD流程,能够实现自动化测试和部署前后的严格审查机制[^2]。 #### 功能特性对比 - **安装方式** - SonarLint 可作为IDE插件直接嵌入到Visual Studio Code、IntelliJ IDEA等编辑器中。 - 而SonarQube则通常部署于服务器端,可通过浏览器访问Web界面进行操作配置。 - **分析范围** - 前者主要针对单个文件级别的语法错误检查和简单模式匹配;后者可以执行更深入的语言特定规则集评估,并能跨多个版本库汇总统计信息。 - 对于SonarLint而言,在编辑窗口旁边即刻显示警告提示即可满足需求; - 后者的报表更加详尽复杂,涵盖了趋势图、热点地图等多种可视化组件来辅助决策制定过程。 ```python # Python示例:如何在Python项目中使用SonarQube扫描并生成报告 import subprocess def run_sonarqube_scan(project_key, project_name, sources_path): command = [ "sonar-scanner", "-Dsonar.projectKey=" + project_key, "-Dsonar.projectName=" + project_name, "-Dsonar.sources=" + sources_path ] result = subprocess.run(command, capture_output=True) return result.stdout.decode() print(run_sonarqube_scan('my_project', 'My Project Name', './src')) ``` #### 协同工作流 两者之间存在紧密联系——SonarLint 发现的问题可以在推送到远程仓库之前得到修正,从而减少后期由SonarQube触发构建失败的风险。当开发者提交更改至中央源码控制系统之后,SonarQube会接管后续的任务链路,确保整个团队遵循统一的标准规范[^3]。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值