手记

改善python代码风格的一些建议

python作为一门动态的编程语言,有开发便捷的优势,但容易犯代码风格上的问题。本文旨在介绍一些让python代码规范的工具和实际运用场景。


工具推荐

用flake8进行代码静态扫描

flake8是一个强制的代码规范工具,flake8支持python2、python3的代码静态扫描,但flake8本身依赖python3.5以上的版本。

flake8已插件的形式添加检测规则,能够支持自定义的规则的扩展。

flake8自带的插件有mccabe(代码负责度)pycodestyle(PEP8代码检查), pyflakes(python语法问题,单不检查代码样式)。此外还推荐3个插件:

flake8-print: 检测代码里的print https://github.com/JBKahn/flake8-print

flake8-bugbear: 增加了除pycodestyle和pyflakes之外的检查 https://github.com/PyCQA/flake8-bugbear

flake8-mypy:对代码进行type hints相关对检查 https://github.com/ambv/flake8-mypy


安装命令:pip3 install -i http://mirrors.aliyun.com/pypi/simple/

--trusted-host mirrors.aliyun.com

flake8 flake8-bugbear flake8-print flake8-mypy

用black进行代码格式化

black是一个不妥协的Python代码格式化工具,能够将代码自动按照PEP8的规范进行格式化。


安装命令:pip3 install black

持续集成中的运用

git hook 中使用插件

建议将在pre-commit中添加 black 和 flake8 的命令进行commit之前的检查.

hooks在 ./.git/hooks/路径下,添加pre-commit文件,在里面写需要在commit之前执行的命令。例如将本次提交的代码进行用代码格式化并且进行静态扫描,pre-commit定义如下:


#!/bin/bash

# 获取本次提交的变动的文件

STAGE_FILES=$(git diff --cached --name-only --diff-filter=ACM -- '*.py' '*.js')

# black格式化代码

python3. 6 -m black $STAGE_FILES

# flake8代码静态扫描

python3.6 -m flake8 $STAGE_FILES

将代码检查加入到gitlab CI(持续集成)中

1.在项目中代码中的添加 gitlab-ci.yml 语法参考 https://docs.gitlab.com/ee/ci/yaml/README.html

2.为项目配置ci-runner,推荐时候用docker进行安装ci-runner, 参考《搭建自己的 Gitlab CI Runner》

每次push代码的时候都会触发一次build,根据gitalb-ci.yml中定义的步骤在runner中执行命令。例如在ci过程中加入代码静态扫描, .gitlab-ci.yml如下:


# .gitlab-ci.yml

  

image: "python:3.6"

  

before_script:

- python --version

- pip install

-i http://mirrors.aliyun.com/pypi/simple/

--trusted-host mirrors.aliyun.com

flake8 flake8-bugbear flake8-mypy flask

  

stages:

- Static Analysis

  

flake8:

stage: Static Analysis

script:

- flake8 --ignore=E501 --max-line-length=120

  
  

延展阅读:

Git 钩子 hook 介绍与使用:https://www.jianshu.com/p/f3d17c11bb8a
gitlab之gitlab-ci自动部署:https://www.jianshu.com/p/df433633816b

0人推荐
随时随地看视频
慕课网APP