欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

git+pylint實現python提交代碼格式校驗

系統 1607 0

環境:win10(64),python3.7.1,git2.7.2,pylint-2.3.1,git_pylint_commit_hook-2.5.1

以上為當期搭建所用到的版本,有異常時方便查找問題。

安裝pylint ,pylint是一個單獨可以對python文件進行格式校驗的模塊,https://www.pylint.org/?官網地址有各個電腦環境的安裝說明,Windows下,使用:

            
              pip install pylint
            
          

安裝完成之后,就可以直接使用pylint對python文件進行格式的檢查了,要檢查的文件如下:

            
              print("啦啦啦")
def func():
    print("do something special")

def func1():
    print("sdfsd")

            
          

執行結果如下:?

            
              $ pylint test1.py
************* Module test1
test1.py:1:0: C0111: Missing module docstring (missing-docstring)
test1.py:2:0: C0111: Missing function docstring (missing-docstring)
test1.py:5:0: C0111: Missing function docstring (missing-docstring)

------------------------------------------------------------------
Your code has been rated at 4.00/10 (previous run: 4.00/10, +0.00)

            
          

修改后滿分代碼:

            
              """模塊說明"""
print("啦啦啦")
def func():
    """func函數說明"""
    print("do something special")

def func1():
    """func1函數說明"""
    print("sdfsd")

            
          

看最后的輸出 rated at 4.00/10。 就是所有代碼滿分是10分,當前代碼得分為4分,以上會說明缺少那些操作,把相應的操作補上,分數就會漲上去,這章就不具體解釋缺少操作的含義。

previous run:4.00/10,+0.00。 上次得分和相對上次得分的漲幅或扣分,沒有就和當前得分一樣。

以上的最低分可以通過配置進行設置,下面會講到如何設置。

但是,這樣操作的話,需要開發人員自覺去遵守執行,確保代碼全都符合條件了再提交上去,但是人無完人,項目任務繁重的時候難免會忘記,而且這種做法本身也比較low。本著科技為第一生成力,我們希望在git commit的時候,就進行代碼檢查,通過的代碼將會提交成功,進而才能push到服務端。沒通過的代碼,將打印出得分、修改的相關信息、位置直到開發人員完畢通過檢查為止。

接下來的配置將滿足以上需求。

有幸找到一遍軟文,介紹如何操作?https://kirankoduru.github.io/python/pylint-git-hooks.html?,但是其中有些坑,由于該文章沒有透露它的環境相關信息,我照著操作了一遍,并不好使,花了一些時間去排除,所以還是以本篇文章為準。

安裝 git-pylint-commit-hook ,如果使用的是python版本和我一致,就別指定版本為2.0.7

            
              #pip install git-pylint-commit-hook==2.0.7  第一個坑,不使用該版本
pip install git-pylint-commit-hook
            
          

配置git鉤子 ,注意配置是在git客戶端操作的。

進到git項目的根目錄,以根目錄為$root$,

            
              #進到hooks目錄
cd .git/hooks
#配置pre-commit文件
mv pre-commit.sample pre-commit
            
          

注意:將pre-commit中除了#!/bin/sh 以外的內容全部刪除,如果不刪除的話,提交的代碼檢查不通過,也會被提交!(第二個坑)

這個其實文章里有說明,當時操作的時候沒注意,如果以后有需求的話,可以先做個備份。

往pre-commit添加內容,最后其中的所有內容為

            
              #!/bin/sh
git-pylint-commit-hook
            
          

到現在,上面的完整的需求就滿足了,趕緊拿一個python項目進行測試看看。

最后說一些額外的配置

最低分設置:--limit,下面將最低分設置為9分

            
              #!/bin/sh
git-pylint-commit-hook --limit=9.0

            
          

其他很多設置:可以通過設置配置文件,設置其他的參數,留給大家去探索。

            
              #!/bin/sh
git-pylint-commit-hook --limit=9.0 --pylintrc=.pylintrc

            
          

.pylintrc和pre-commit同一級目錄即可,.pylintrc的內容如下,參考鏈接:

            
              # PyLint configuration file for the project pymvpa.
#
# Agreed formatting (per yoh+michael voice dialog) is camel.
#
# This pylintrc file will use the default settings except for the
# naming conventions, which will allow for camel case naming as found
# in Java code or several libraries such as PyQt, etc.
#
# At some moment it was modified by yoh from the original one
# which can be found on debian systems at
# /usr/share/doc/pylint/examples/pylintrc_camelcase
#
# Just place it in ~/.pylintrc for user-wide installation or simply
# use within a call to pylint or export environment variable
# export PYLINTRC=$PWD/doc/misc/pylintrc


[BASIC]
# Regular expression which should only match correct module names
module-rgx=([a-z][a-z0-9_]*)$

attr-rgx=[a-z_][a-z0-9_]{,30}

# Regular expression which should only match correct class names
class-rgx=[A-Z_]+[a-zA-Z0-9]+$

# Regular expression which should only match correct function names
function-rgx=[a-z_]+[a-z0-9_][a-z0-9]*$

# Regular expression which should only match correct method names
# Allow upper cases in testFeatureSelection where FeatureSelection
# is a class name
method-rgx=(([a-z_]|__)[a-z0-9_]*(__)?|test[a-zA-Z0-9_]*)$

# Regular expression which should only match correct argument names
argument-rgx=[a-z][a-z0-9]*_*[a-z0-9]*_*[a-z0-9]*_?$

# Regular expression which should only match correct variable names
variable-rgx=([a-z_]+[a-z0-9]*_*[a-z0-9]*_*[a-z0-9]*_?||(__[a-zA-Z0-9_]*__))$||[A-Z]+

# Regular expression which should only match correct module level names
# Default: (([A-Z_][A-Z1-9_]*)|(__.*__))$
const-rgx=([a-z_]+[a-z0-9]*_*[a-z0-9]*_*[a-z0-9]*_?|__[a-zA-Z0-9_]*__)$||[A-Z]+


[FORMAT]
indent-string='    '


[DESIGN]

# We are capable to follow that many, yes!
max-branchs = 20

# some base class constructors have quite a few arguments
max-args = 14

# and due to ClassWithCollections and conditional attributes classes by default have lots
# of attributes
max-attributes = 14

# some sci computation can't be handled efficiently without having
#lots of locals
max-locals = 35

[MESSAGES CONTROL]
# Disable the following PyLint messages:
# R0903 - Not enough public methods
# W0105 - String statement has no effect # often used for after-line doc
# W0142 - Used * or ** magic
# W0232 - Class has no __init__ method
# W0212 - Access to a protected member ... of a client class
# W0613 - Unused argument
# E1101 - Has no member (countless false-positives)
# R0904 - Too many public methods
disable-msg=R0903,W0142,W0105,W0212,W0613,E1101,R0904

[REPORTS]

# set the output format. Available formats are text, parseable, colorized and
# html
output-format=parseable

# Include message's id in output
include-ids=yes

# Tells wether to display a full report or only the messages
# reports=no

[MISCELLANEOUS]

# List of note tags to take in consideration, separated by a comma.
# FIXME -- something which needs fixing
# TODO  -- future plan
# XXX   -- some concern
# YYY   -- comment/answer to above mentioned concern
notes=FIXME,TODO,XXX,YYY

[MASTER]
ignore=tests
disable-msg=R0904,R0903,E1101,R21
            
          

?


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: a级粗大硬长爽猛视频免费 潘金莲强完整版 | 亚洲国产精品第一区二区三区 | 婷婷综合缴情亚洲五月伊 | 精品久久久久久久 | 日韩一区二区三区在线观看 | 国产成人一级片 | 国产高清性xxxxxxxx | 成人在线视频一区 | 粉嫩粉嫩芽的虎白女18在线视频 | 欧美日韩在线免费观看 | 色综合久久精品中文字幕首页 | 欧美最爽乱淫视频免 | 亚洲天堂在线电影 | 亚洲第一黄色网址 | 91精品最新国内在线播放 | 成人欧美日韩视频一区 | 性色av一区二区三区 | 久久xxx| 奇米第四色影视 | 九色成人蝌蚪国产精品电影在线 | 免费av在线播放 | 久久久久国产精品人 | 精品一区二区三区自拍图片区 | 国产精品国产精品 | 欧美亚洲视频一区 | 岛国一区 | 亚洲精品97福利在线 | www.人人干 | 亚洲日本va中文字幕线 | 日本欧美一级 | 国产欧美综合精品一区二区 | 欧美精品午夜论理电影 | 国产一区二区黑人欧美xxxx | 亚洲精品久久久久久国产精华液 | 成人在线激情网 | 永久免费mv网站入口 | 精品一区二区三区四区 | 我和我的祖国电影在线观看免费版高清 | 国产麻豆传媒视频 | 久草在线看 | 国产精品视频在线观看 |