背景

最近在项目中推广集成测试的理念以及相关工具,在jenkins中集成sonar去分析项目的java代码的时候,意外的发现,sonarqube上还有对应python的插件,而自己写的测试工具大部分都是基于python编写的,于是就想用sonar来检查自己的代码规范及添加单元测试用例来确保工具的稳定和可靠性。

简要的预想流程

sonar在jenkins中集成的时候,一般都是用mavens下配置sonar : sonar驱动的,如果套用python的插件,要去编写个pom.xml感觉不太方便(主要是还不太确定如何处理….有大神了解的望指教!),最后还是考虑直接用sonar-runner驱动比较方便。

用sonar-runner的流程就比较简单了:

  1. 在项目的代码根路径下配置sonar-project.properties;
  2. 在sonar安装的服务器下checkout一份项目代码;
  3. cd到项目路径下,运行sonar-runner,就可以得到结果了。

sonar-runner实际操作流程

1. 编写sonar配置:

在python项目的代码根目录下新建一个sonar-project.properties文件,配置内容如下:

其中,最关键也是最容易出错的是sonar.language,这个指定分析的语言配置一直被我认为是填写python,但无论怎么填写,都是提示“You must install a plugin that supports the language 'Python' ”。最后通过google,尝试,确定该位置要支持python的话,应该填写py。但这点在插件的wiki页面居然也没有明确说明,略显坑爹。当然觉得坑爹的并不是我一个,搜索到插件的讨论页面大把的同学都在喷…欢迎各位前去围观http://sonarqube.15.x6.nabble.com/Note-on-the-Python-Plugin-you-need-quot-sonar-language-py-quot-td5014450.html

2. 运行sonar-runner,生成分析结果

一般部署sonarqube,都是在linux上,也有在windows的,区别不大,只是操作脚本的差异,这里以linux为例,若安装的源码包,则需要在官网手动下一份sonar-runner。解压到sonarqube的文件夹中。

首先,要找到sonar-runner的位置,如果不记得路径的,通过find指令完成,如下:

(这里我搜索出来的比较多,是因为我的sonar和jenkins部署在一台机器上,所以会有mavens运行时的环境文件。)

第二步,就需要在服务器上checkout一份python项目的代码,并切换到该目录,如下图:

第三步,在该目录下运行sonar-runner,如下图所示,就会开始运行:

很快就会结束整个扫描,如下图,运行结束后,就可以到最后提示的路径去查看此次扫描检查的问题

前往该页面,显示的分析统计结果如下图,当然具体的详细问题和分析解决就不是这篇文章所关注的了:

eclipse中关联sonar

首先,是在eclipse中安装对应的sonar插件。

官方的插件下载地址为:http://dist.sonar-ide.codehaus.org/eclipse/

在eclipse中安装该插件,流程为:启动eclipse,依次找到Help – Install New Softwares… – Add,在添加时如下图填写:

其次,勾选提示的可安装插件,在安装时,可能会出现SonarQube optional connectors安装失败的情况,可以忽略和不选该插件。

之后就是自动安装,不会耗费多少时间。

第三步,在eclipse的preferences--SonarQube中,找到Servers选项卡,然后填入本地已经部署好的SonarServer信息。如下图:

第四步,在eclipse中关联sonar项目

需要在python项目的project名字上,右键点击,然后选择configure,然后选择Associate with SonarQube。

第五步,在sonar的项目关联窗口中,搜索通过运行sonar-runner后,自动建立的python-sonar项目

这里所谓的python-sonar项目,就是在sonar中的对应project(这个project不能手动建立,只能通过运行sonar-runner来生成。)

如下图,在sonarqube project的文本框位置,输入项目名的其中部分字符(尽量输入多点,准确点),如果输入的名字在本地的sonar服务器中有对应项目存在,就可以搜索出对应的可选内容。

第六步,关联完成项目后,就可以在eclipse开始分析你的python代码了,操作效果如下:(同sonar-runner,分析完成后的结果需要到指定的sonar服务器上查看)

总结下:

  1. sonar作为一个独立的sa工具平台,是可以支持多种语音的文件的,包括c,c++,java,python等,同时,还可以支持xml等。显而易见的,在项目集成测试的时候,可以用来做很多代码的检查,同时也可以用来做项目的xml配置文件的检查等。
  2. 自己的python代码还不够规范,问题还是有不少啊,慢慢分析优化。。。

使用SonarQube+Eclipse来分析python代码的更多相关文章

  1. sonarqube+sonar runner分析C#代码

    最近研究一个代码覆盖率和代码分析工具.遇到一些比较坑的问题,现在分享给大家. 1.Sonar介绍 Sonar是一个用于代码质量管理的开源平台,用于管理Java源代码的质量.通过插件机制,Sonar 可 ...

  2. Eclipse中对Python代码自动格式化!

    在Eclipse中使用PyDev发现无法进行代码格式化,使用通常的"Ctrl+Shift+F"快捷键,没有任何变化,难道不能对python代码格式化了吗? 通过下面设置,就可以每次 ...

  3. 使用pycallgraph分析python代码函数调用流程以及框架

    技术背景 在上一篇博客中,我们介绍了使用量子计算模拟器ProjectQ去生成一个随机数,也介绍了随机数的应用场景等.但是有些时候我们希望可以打开这里面实现的原理,去看看在产生随机数的过程中经历了哪些运 ...

  4. 如何使用 Pylint 来规范 Python 代码风格

    如何使用 Pylint 来规范 Python 代码风格 转载自https://www.ibm.com/developerworks/cn/linux/l-cn-pylint/   Pylint 是什么 ...

  5. python 代码检测工具

    对于我这种习惯了 Java 这种编译型语言,在使用 Python 这种动态语言的时候,发现错误经常只能在执行的时候发现,总感觉有点不放心. 而且有一些错误由于隐藏的比较深,只有特定逻辑才会触发,往往导 ...

  6. python代码检查工具pylint 让你的python更规范

    1.pylint是什么? Pylint 是一个 Python 代码分析工具,它分析 Python 代码中的错误,查找不符合代码风格标准(Pylint 默认使用的代码风格是 PEP 8,具体信息,请参阅 ...

  7. [转] Python 代码性能优化技巧

    选择了脚本语言就要忍受其速度,这句话在某种程度上说明了 python 作为脚本的一个不足之处,那就是执行效率和性能不够理想,特别是在 performance 较差的机器上,因此有必要进行一定的代码优化 ...

  8. Python代码性能优化技巧

    摘要:代码优化能够让程序运行更快,可以提高程序的执行效率等,对于一名软件开发人员来说,如何优化代码,从哪里入手进行优化?这些都是他们十分关心的问题.本文着重讲了如何优化Python代码,看完一定会让你 ...

  9. Python 代码性能优化技巧(转)

    原文:Python 代码性能优化技巧 Python 代码优化常见技巧 代码优化能够让程序运行更快,它是在不改变程序运行结果的情况下使得程序的运行效率更高,根据 80/20 原则,实现程序的重构.优化. ...

随机推荐

  1. 动态设置iframe高度

    <%//动态设置iframe高度 %><script language="javascript" type="text/javascript" ...

  2. oracle函数 MIN([distinct|all]x)

    [功能]统计数据表选中行x列的最大值. [参数]all表示对所有的值求最大值,distinct只对不同的值求最大值,默认为all 如果有参数distinct或all,需有空格与x(列)隔开. [参数] ...

  3. 网上很多laravel中cookie的使用方法。

    https://blog.csdn.net/chen529834149/article/details/75244718 概述 Cookie的添加其实很简单,直接使用Cookie::make(),在使 ...

  4. 微信支付、支付宝支付和QQ钱包支付

    最近忙于对接微信支付和支付宝支付,注册微信公众号,认证公众号,注册微信支付商户号并进行认证: 签约支付宝支付产品(手机网站支付.PC网站支付),注册支付宝企业账号(企业账号权限更大): 注册QQ钱包商 ...

  5. SuperSocket 服务器管理器 (ServerManager)

    SuperSocket服务器管理器文档 客户端安全证书验证 在 TLS/SSL 安全通信中, 客户端的安全证书不是必需的, 但是有些系统需要更高级别的安全保障. 因此有些用户提出了在服务器端验证客户端 ...

  6. 2018-10-19-Nuget-通过-dotnet-命令行发布

    title author date CreateTime categories Nuget 通过 dotnet 命令行发布 lindexi 2018-10-19 09:15:53 +0800 2018 ...

  7. iptables单个规则实例

    iptables -F? # -F 是清除的意思,作用就是把 FILTRE TABLE 的所有链的规则都清空 iptables -A INPUT -s 172.20.20.1/32 -m state ...

  8. Json介绍与Ajax技术

    AJAX   AJAX准备知识:JSON 什么是 JSON ? JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation) JSON 是轻量级的文本数据 ...

  9. Springboot 自定义多个404页面

    在Springboot中,可以通过修改配置.或者在static文件夹下添加error文件夹引入个性化的404模版.但是如果需要针对不同url地址规则,返回不同样式的404页面,则难以实现了.针对这个问 ...

  10. BZOJ 4236 "JOIOJI"(前缀和+map+pair)

    传送门: [1]:BZOJ [2]:洛谷 •题解 定义数组 a,b,c 分别表示 'J' , 'O' , 'I' 的前缀和: 要想使区间 (L,R] 满足条件当且仅当 a[R]-a[L] = b[R] ...