<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      使用PyLint分析評(píng)估代碼質(zhì)量

      什么是PyLint

      PyLint是一款用于評(píng)估Python代碼質(zhì)量的分析工具,它誕生于2003年,其最初十年的主要作者和維護(hù)者是Sylvain Thénault。PyLint可以用來檢查代碼是否錯(cuò)誤、是否符合編碼規(guī)范(它默認(rèn)使用的編碼規(guī)范是PEP 8),在分析代碼后PyLint將會(huì)輸出一段信息,內(nèi)容包括在代碼中檢查到的警告和錯(cuò)誤,如果運(yùn)行兩次,它將會(huì)輸出兩次的統(tǒng)計(jì)信息,以便使用者分析代碼是否得到改進(jìn)。PyLint的特性是報(bào)告盡可能少的錯(cuò)誤,但是它會(huì)輸出非常多的警告信息,所以建議在程序提交之前或者想要整理代碼時(shí)使用PyLint,這樣可以忽略掉大量的無效警告。

      自PyLint 1.4起,PyLint只支持Python 2.7+和Python 3.3+。

      安裝PyLint

      在命令行界面執(zhí)行如下代碼,即可安裝PyLint:

      pip install pylint
      

      在命令行界面執(zhí)行如下代碼,即可查詢PyLint的安裝路徑:

      where pylint
      

      調(diào)用PyLint

      在命令行中調(diào)用

      分析Python包或者Python模塊

      pylint [options] module_or_package
      

      分析Python文件

      pylint [options] my_module.py
      

      并行分析Python文件

      pylint -j 4 my_module_1.py my_module_2.py my_module_3.py my_module_4.py
      

      上述語句將產(chǎn)生4個(gè)并行的PyLint子進(jìn)程來對(duì)所需的四個(gè)文件并行檢查,PyLint發(fā)現(xiàn)問題后不會(huì)立即顯示,待所有模塊檢查完畢后才會(huì)顯示。其中,參數(shù)-j用于指定所需的PyLint子進(jìn)程數(shù)量,默認(rèn)值為1。

      常用的命令行選項(xiàng)

      • --version:顯示PyLint以及Python的版本;

        使用示例:

        pylint --version
        
      • -h, --help :顯示幫助信息;

        使用示例:

        示例一:
        pylint -h
        示例二:
        pylint --help
        
      • -ry:顯示各項(xiàng)信息的報(bào)表統(tǒng)計(jì);

        使用示例:

        pylint -ry my_module.py
        
      • --generate-rcfile:生成配置信息示例;

        使用示例:

        ## 將persistent修改為n,并將配置信息保存至pylint.conf文件中
        pylint --persistent=n --generate-rcfile > pylint.conf 
        
      • --rcfile=<file> :指定所使用的的配置文件;

        使用示例:

        pylint --rcfile=pylint.conf my_module.py 
        
      • --persistent=y_or_n:是否使用Pickle存儲(chǔ)上次結(jié)果;

        使用示例:

        pylint --persistent=y my_nodule.py
        
      • --output-format=<format>:指定輸出格式( parseable, colorized, msvs);

        使用示例:

        pylint --output-format=parseable my_module.py
        
      • --msg-template=<template>:指定輸出內(nèi)容;

        template參數(shù)包括:

        • path:文件的相對(duì)路徑;
        • abspath:文件的絕對(duì)路徑;
        • line:輸出行數(shù);
        • column:輸出列數(shù);
        • module:模塊名;
        • obj : 模塊中的對(duì)象(如果有的話) ;
        • msg :信息文本;
        • msg_id :信息編號(hào);
        • symbol :信息的符號(hào)名稱;
        • C:信息類別;

        使用示例:

        pylint --msg-template='{msg_id}:{line:3d}:{msg}' my_module.py
        
      • --list-msgs:生成pylint的警告列表;

        使用示例:

        pylint --list-msgs
        
      • --full-documentation : 以reST格式生成pylint的完整文檔。

        使用示例:

        pylint --full-documentation
        

      在Python程序中調(diào)用PyLint

      方法一

      from pylint import epylint as lint
      lint.py_run("my_module.py --msg-template='{line:3d}:{msg}'")
      # 注意,先寫文件名,再寫命令選項(xiàng),文件名和命令選項(xiàng)通過空格隔開。
      

      方法二

      from pylint import epylint as lint
      (pylint_stdout, pylint_stderr) = lint.py_run('my_module.py', return_std=True)
      # 注意,返回值類型為StringIO,可以通過read()方法進(jìn)行讀取。
      print(pylint_stdout.read())
      

      關(guān)聯(lián)PyLint與PyCharm

      方法一

      • 進(jìn)入PyCharm,依次點(diǎn)擊: File -> Settings -> Tools -> External Tools,進(jìn)入下圖頁面;

        步驟1

      • 點(diǎn)擊加號(hào),在彈窗中填寫下圖紅色方框中的字段后,點(diǎn)擊OK;

        • Name參數(shù)可以填寫pylint;
        • Program參數(shù)選擇pylint.exe的路徑,選擇后,Working directory參數(shù)將自動(dòng)補(bǔ)全;
        • Arguments參數(shù)根據(jù)實(shí)際需求點(diǎn)擊右側(cè)Inser Macros進(jìn)行選擇即可,示例中選擇檢查當(dāng)前路徑下的文件。

        pylint關(guān)聯(lián)pycharm

      • 依次點(diǎn)擊Tools->External Tools->pylint,即可運(yùn)行PyLint。

      方法二

      • 進(jìn)入PyCharm,依次點(diǎn)擊: File -> Settings -> Plugins,進(jìn)入下圖頁面;

        步驟2-1

      • 點(diǎn)擊Browse repositories,進(jìn)入下圖頁面;

        步驟2-2

      • 在左上角搜索框中搜索pylint,右擊安裝,點(diǎn)擊Yes開始下載,之后點(diǎn)擊Close,重啟PyCharm后即安裝成功;

        步驟2-3

      • 依次點(diǎn)擊: File -> Settings -> pylint,可根據(jù)實(shí)際需求進(jìn)行配置;

        步驟2-5

      • 運(yùn)行時(shí),點(diǎn)擊左下角pylint即可查看PyLint輸出,單擊具體輸出內(nèi)容,可跳轉(zhuǎn)到相關(guān)代碼行。

        步驟2-6

      PyLint忽略部分警告的方法

      在具體代碼處添加注釋

      使用示例:

      from PyQt5.QtWidgets import QApplication  # pylint: disable=no-name-in-module
      

      在命令行處傳入?yún)?shù)

      使用示例:

      pylint --disable=no-name-in-module my_module.py
      

      修改調(diào)用PyLint時(shí)使用的配置文件

      打開配置文件,找到disable字段,在字段后面添加要忽略的警告。

      使用示例:

      disable=raw-checker-failed,
              bad-inline-option,
              locally-disabled,
              file-ignored,
              suppressed-message,
              useless-suppression,
              deprecated-pragma,
              use-symbolic-message-instead,
              similarities,
              no-name-in-module,
              no-member,
              consider-using-f-string,
              anomalous-backslash-in-string,
              consider-using-sys-exit
      

      PyLint的輸出

      源代碼分析

      對(duì)于每個(gè)Python模塊,PyLint的輸出格式如下:

      • 第一行將在若干' * '字符后顯示模塊名稱;
      • 從第二行起顯示PyLint的輸出,默認(rèn)的輸出內(nèi)容格式為——信息類別:行數(shù):信息內(nèi)容 。

      信息類別:

      • R:違反重構(gòu)標(biāo)準(zhǔn);
      • C:違反編碼規(guī)范;
      • W:警告;
      • E:錯(cuò)誤;
      • F:致命錯(cuò)誤,使PyLint無法進(jìn)一步處理。

      PyLint的輸出范例:

      ************* Module pylint.checkers.format
      W: 50: Too long line (86/80)
      W:108: Operator not followed by a space
           print >>sys.stderr, 'Unable to match %r', line
                  ^
      W:141: Too long line (81/80)
      W: 74:searchall: Unreachable code
      W:171:FormatChecker.process_tokens: Redefining built-in (type)
      W:150:FormatChecker.process_tokens: Too many local variables (20/15)
      W:150:FormatChecker.process_tokens: Too many branches (13/12)
      

      可以通過pylint --help-msg <msg-id>查詢更多信息,使用示例:

      pylint --help-msg C0115
      

      檢查報(bào)告

      檢查報(bào)告在源代碼分析的后面,每個(gè)報(bào)告關(guān)注項(xiàng)目的特定方面,比如每種類別的信息數(shù)目,模塊的依賴關(guān)系等等。具體來說,報(bào)告中會(huì)包含如下的方面:

      • 檢查的模塊個(gè)數(shù);
      • 對(duì)于每個(gè)模塊,其錯(cuò)誤和警告在其中所占的百分比;
      • 對(duì)于所有模塊,其錯(cuò)誤和警告的總數(shù)量;
      • 文件中帶有文檔字符串的類、函數(shù)和模塊所占的百分比;
      • ......

      PyLint與PyChecker的區(qū)別

      PyLint支持PyChecker提供的大部分功能,他們之間一個(gè)最主要的區(qū)別在于PyLint能夠檢測(cè)編碼標(biāo)準(zhǔn)是否規(guī)范,其次,PyLint不支持導(dǎo)入活動(dòng)模塊而PyChecker可以。

      PEP 8標(biāo)準(zhǔn)

      代碼布局

      • 每個(gè)縮進(jìn)級(jí)別使用4個(gè)空格,連續(xù)行使用垂直對(duì)齊或者使用懸掛式縮進(jìn)(額外的4個(gè)空格縮進(jìn));

      • 空格是首選的縮進(jìn)方法;

      • 每行最多79個(gè)字符;

      • 允許在二元運(yùn)算符前后換行,但代碼需保持一致,對(duì)于新代碼建議在二元運(yùn)算符前進(jìn)行換行;

      • 使用兩個(gè)空白行分隔頂層函數(shù)和類定義;

      • 類方法定義使用一個(gè)空行分隔;

      • 使用額外的空白行來分隔相關(guān)邏輯功能;

      • 文件應(yīng)該使用UTF-8編碼,且不應(yīng)該有編碼聲明;

      • 導(dǎo)入多個(gè)庫函數(shù)應(yīng)該分開依次導(dǎo)入,導(dǎo)入總是放在文件的頂部,在任何模塊注釋和文檔字符串之后,在模塊全局變量和常量之前;導(dǎo)入應(yīng)按以下順序進(jìn)行:標(biāo)準(zhǔn)庫導(dǎo)入、有關(guān)的第三方庫導(dǎo)入、本地應(yīng)用程序/庫特定的導(dǎo)入,每組導(dǎo)入直接用空行分隔;避免通配符導(dǎo)入(import *)。

      字符串

      • 單引號(hào)字符串和雙引號(hào)字符串相同,但代碼需保持一致;

      • 對(duì)于三引號(hào)字符串,常用三個(gè)雙引號(hào)作文檔字符串,文檔字符串常用在模塊的開端用以說明模塊的基本功能,或緊跟函數(shù)定義的后面用以說明函數(shù)的基本功能。

      空格

      • 避免使用無關(guān)的空格,包括空格內(nèi)、逗號(hào)分號(hào)前面等;

      • 避免在行末使用空格;

      • 二元運(yùn)算符在兩側(cè)使用一個(gè)空格;

      • 當(dāng)用于指示關(guān)鍵字參數(shù)或默認(rèn)參數(shù)值時(shí),不要在=符號(hào)周圍使用空格。

      使用尾部逗號(hào)(trailing commas)

      • 尾部逗號(hào)通??蛇x,但對(duì)于只有一個(gè)元素的元組是必選的;

      • 當(dāng)參數(shù)、值等列表期望經(jīng)常擴(kuò)展時(shí),通常是每個(gè)值一行,再加上一個(gè)尾部逗號(hào)。

      注釋

      • 代碼更改時(shí),相應(yīng)的注釋也要隨之更改;

      • 注釋應(yīng)該是完整的語句,第一個(gè)單詞應(yīng)該大寫,除非它是特定標(biāo)識(shí)符;

      • 塊注釋:縮進(jìn)到與該代碼相同的級(jí)別,塊注釋的每一行都以#和一個(gè)空格開始;

      • 行注釋:對(duì)某一語句行進(jìn)行注釋,注釋應(yīng)該與語句至少隔開兩個(gè)空格,用#和一個(gè)空格開始;

      • 對(duì)于公共的模塊,功能,類和方法需要為其寫文檔字符串;

      • 注釋應(yīng)該是完整的語句,第一個(gè)單詞應(yīng)該大寫,除非它是特定標(biāo)識(shí)符。

      命名約定

      • 命名應(yīng)該反映其用途而非實(shí)現(xiàn);

      • 不要將字符’l’(小寫字母L),’O’(大寫字母O)或’I’(大寫字母I)作為單個(gè)字符變量名稱;

      • 模塊名應(yīng)該使用簡(jiǎn)短、全小寫的名字;

      • 類的命名采用駝峰命名法,即每個(gè)單詞的首字母大寫;

      • 函數(shù)名稱應(yīng)該是小寫的,為了提高可讀性,必須使用由下劃線分隔的單詞。

      參考資料

      PyLint官網(wǎng)鏈接;

      PEP 8編碼規(guī)范。

      posted @ 2022-12-08 14:40  大雄的叮當(dāng)貓  閱讀(1192)  評(píng)論(0)    收藏  舉報(bào)
      主站蜘蛛池模板: xxxxbbbb欧美残疾人| 国内精品久久久久影视| 久久道精品一区二区三区| 国产一区二区三区色噜噜| 人人做人人澡人人人爽| 清纯唯美人妻少妇第一页| www欧美在线观看| 四虎影视一区二区精品| 国产av亚洲精品ai换脸电影| 久久精品国产亚洲不av麻豆| 雅安市| 国产精品天天看天天狠| 久久久久综合一本久道| 竹北市| 久久热这里只有精品66| 亚洲AV无码乱码在线观看性色扶 | caoporn成人免费公开| 天天躁夜夜躁av天天爽| 男女猛烈激情xx00免费视频| 精品一二三四区在线观看| 国产成人无码区免费内射一片色欲| 韩国主播av福利一区二区| 宅男噜噜噜66在线观看| 色欲久久久天天天综合网| 无码天堂亚洲国产av麻豆| 狠狠躁夜夜躁人人爽天天5| 化隆| 久久99久久99精品免视看国产成人| 国产精品黑色丝袜在线观看| 九九成人免费视频| 国产国产久热这里只有精品| 精品少妇人妻av无码久久| 成年女人黄小视频| 在线高清免费不卡全码| 翘臀少妇被扒开屁股日出水爆乳| 无码一区中文字幕| 免费看欧美全黄成人片| 欧洲中文字幕一区二区| 国产精品国产高清国产专区| 免费人成在线观看网站| 人妻中文字幕av资源站|