原标题:这7个开源的Python库,让你轻松代码分析

开源最前线(ID:OpenSourceTop) 猿妹编译

来源:https://opensource.com/article/18/7/7-python-libraries-more-maintainable-code

当软件项目进入“维护模式”时,很容易把从一开始就建立的代码可读性和编码标准抛开,但是,在代码库中保持一致的样式和测试标准是减少维护负担的重要部分,这样可以确保未来的开发人员能够快速了解最新的项目情况

维持项目可维护性的一个好方法是使用外部库来检查您的代码运行状况。这些是我们最喜欢的一些用于linting代码的库(检查PEP 8和其他样式错误),强制执行一致的样式,以及测试覆盖率的库。

检查代码规范

PEP8 是Python官方推出编码约定,它为行长度,缩进,多行表达式和命名约定等内容制定了一系列规则,主要是为了保证 Python 编码的风格一致,提高代码的可读性。

1. Pylint

Pylint是一个检查PEP 8规范违规和常见错误的库。它能与几个流行的编辑器和IDE很好地集成,也可以从命令行运行。

要安装,请运行pip install pylint。要从命令行使用Pylint,请运行pylint [options] path/to/dir或pylint [options] path/to/module.py。Pylint就会输出有关样式违规和其他错误的警告。开发者可以根据根据自己偏好、习惯修改pylintrc这个模板。(项目地址:https://www.pylint.org/)

2. Flake8

Flake8 是由Python官方发布的一款辅助检测Python代码是否规范的工具,相对于目前热度比较高的Pylint来说,Flake8检查规则灵活,支持集成额外插件,扩展性强。

要使用Flake8,请运行pip install flake8。然后运行flake8 [options] path/to/dir或flake8 [options] path/to/module.py查看其错误和警告。

与Pylint一样,Flake8允许对配置文件检查的内容进行一些自定义。它有非常清晰的文档,包括一些有用的repo,可以自动检查代码。

Flake8同样可与流行的编辑器和IDE集成,例如,Sublime Text的Flake8插件。(详情:https://github.com/PyCQA/flake8)

3. Isort

isort 可自动对 Python 的 import 语句进行排序和分段。可将大量的 import 结构转成非常适合阅读的排版。提供一个命令行工具、Python 库和 Kate 插件。

安装isort pip install isort,然后运行isort path/to/module.py。文档中提供了更多配置选项。例如,开发者可以配置 isort处理.isort.cfg文件中一个库的多行导入。

与Flake8和Pylint一样,isort也能够与流行的编辑器和IDE集成。

代码格式化

4. Autopep8

Autopep8是一个将Python代码自动排版为PEP8风格的小工具。它使用pep8工具来决定代码中的哪部分需要被排版。Autopep8可以修复大部分pep8工具中报告的排版问题。

要安装,请运行pip install --upgrade autopep8。要重新格式化代码,请运行autopep8 --in-place --aggressive --aggressive 。(项目地址:https://github.com/hhatto/autopep8)

5. Yapf

Yapf是重新格式化代码的另一种选择,它带有自己的配置选项列表。它与autopep8的不同之处在于它不仅仅解决了PEP 8违规问题。它还重新格式化了没有违反PEP 8的代码,但没有一致地设置样式。

要安装,请运行pip install yapf。要重新格式化代码,请运行yapf [options] path/to/dir或yapf [options] path/to/module.py。还有一个完整的自定义选项列表。(项目地址:https://github.com/google/yapf)

6. Black

Black,号称不妥协的代码格式化工具,因为它检测到不符合规范的代码风格直接就帮你全部格式化好,根本不需要你确定,直接替你做好决定。

Black 支持 Python 3.6 以上的版本,但可以格式化 Python 2 代码。如果要安装Black,请运行pip install black。要格式化代码,请运行:black path/to/dir或black path/to/module.py。

代码覆盖率

如果你正在写测试,你需要对代码库提交的新代码进行测试,并且不会降低你的测试覆盖率。虽然测试覆盖率的百分比不是衡量测试有效性和充分性的唯一指标,但它是确保项目中遵循基本测试标准的一种方法。为了测量测试覆盖率,我们建议使用 Coverage。

7. Coverage

Coverage 有多种选项可用于向用户报告测试覆盖率,包括将结果输出到控制台或 HTML 页面,并指示哪些行号缺少测试覆盖率。你可以设置配置文件以自定义Coverage 检查的内容并使其更容易运行。

持续集成工具

持续集成(CI)是您可以运行的一系列过程,用于在合并和部署代码之前自动检查linter错误和测试覆盖率最小值。有许多免费或付费的工具可以自动执行此过程,完整的演练超出了本文的范围。但是,因为设置CI过程是将块移除到更易读和可维护的代码的重要步骤,所以您应该研究一般的持续集成工具,特别是 Travis CI 和 Jenkins

●编号470,输入编号直达本文返回搜狐,查看更多

责任编辑:

python开源代码-这7个开源的Python库,让你轻松代码分析相关推荐

  1. python写自动化工具_微软最强 Python 自动化工具开源了!不用写一行代码!

    1. 前言 最近,微软开源了一款非常强大的 Python 自动化依赖库:playwright-python 它支持主流的浏览器,包含:Chrome.Firefox.Safari.Microsoft E ...

  2. python是开源工具吗_微软最强 Python 自动化工具开源了!不用写一行代码

    1. 前言 最近,微软开源了一款非常强大的 Python 自动化依赖库:playwright-python,它支持主流的浏览器,包含:Chrome.Firefox.Safari.Microsoft E ...

  3. 170个新项目,579个活跃代码仓库,Facebook开源年度回顾

    作者 | Dmitry Vinnik 译者 | 泓礼 编辑 | 夕颜 出品 | AI科技大本营(ID:rgznai100) [导读]过去一年对于Facebook的开源工程师来说是繁忙的一年.在2019 ...

  4. python是高级动态编程语言-python是一种跨平台、开源、免费的高级动态编程语言,对么...

    python是一种跨平台.开源.免费的高级动态编程语言,对.python具有简单.易学.速度快.免费.开源.可移植性.可扩展性.丰富的库等优点.python语言极其容易上手,它是一种代表简单主义思想的 ...

  5. python是动态编程语言吗-python是一种跨平台、开源、免费的高级动态编程语言,对么...

    python是一种跨平台.开源.免费的高级动态编程语言,对.python具有简单.易学.速度快.免费.开源.可移植性.可扩展性.丰富的库等优点.python语言极其容易上手,它是一种代表简单主义思想的 ...

  6. 儿童学python下哪个软件好用_【开源软件】超好用的Python学习软件!没有之一!...

    可以观看视频!文章结尾,有下载.安装方法! 曾几何时!Python开始掀起了一阵狂猛的学习浪潮?Python 那么Python为什么那么火? https://wenwen.sogou.com/z/q8 ...

  7. 70个python毕设项目_56个具有开创性的Python开源项目-开始使用Python

    Python正在蓬勃发展,它的Gistub页面也是如此.今年对于Python来说很棒,我们看到了一些非常强大的python开源项目.今天,我们将列出一些最好的python开源项目:尝试至少对其中一个项 ...

  8. gvim 配置_Python与开源GIS教程:1.3. 配置Python开源GIS环境

    1.3.1. Debian下的安装与配置 Debian 是一个致力于自由软件开发并宣扬自由软件基金会理念的自愿者组织.Debian 计划创建于 1993 年.当时,Ian Murdock 发出一份公开 ...

  9. python绘制三维矢量图_开源图形库 c语言-图形图像库 集合

    Google三维API O3DO3D 是一个开源的 Web API 用来在浏览器上创建界面丰富的交互式的 3D 应用程序.这是一种基于网页的可控3D标准.此格式期望真正的基于浏览器,独立于操作系统之外 ...

最新文章

  1. 独家 | 成功开发者必备的5项软技能
  2. 并发编程中的GIL锁(全局解释器锁)自己理解的他为啥存在
  3. SQL SERVER 用sql语句将一列数据拼接成一个字符串
  4. 从Jenkins或Gerrit上获取拉代码和编译命令
  5. 解决SimpleButton被移除后保持OVER状态
  6. 单片机外围模块漫谈之二,如何提高ADC转换精度
  7. RAC环境数据库重启实例
  8. JS ||(或运算)详解
  9. 跨域解决方案CROS最简单演示——JSP演示示例
  10. 【收藏版】深度学习中的各种优化算法
  11. Unity3D-射线效果
  12. WinCE6.0下TCPMP的BenchMark汇总
  13. 软件工程之可行性研究报告
  14. 个人博客系统测试用例
  15. 金鱼的养殖知识大全(一)
  16. 微信小程序登录方法,授权登陆及获取微信用户手机号
  17. JDK8新特性之Stream流【小白快速上手,没有技巧全是实操-LOL英雄类讲解不失趣味】
  18. 小虾米的求助Massage
  19. 使计算机无法启动的病毒是,0xc0000017蓝屏计算机无法启动解决方案
  20. grep、sed、awk

热门文章

  1. 归并排序(转载http://www.cnblogs.com/jillzhang/archive/2007/09/16/894936.html)
  2. pgbench的使用简介
  3. 看完这20部电影相当于学了经济学(投资理财必看电影)
  4. POJ 1039 Pipe
  5. QQ互联OAuth2.0 .NET SDK 发布以及网站QQ登陆示例代码
  6. docker 中部署一个springBoot项目
  7. 硬链接、软链接的区别
  8. JAVA Thread线程异常监控
  9. Poj(2240),Floyd求汇率是不是赚钱
  10. Js跨域请求jquery的jsonp方式