国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Python代碼規(guī)范:企業(yè)級代碼靜態(tài)掃描-代碼規(guī)范、邏輯、語法、安全檢查,以及代碼規(guī)范自動編排(2)

這篇具有很好參考價值的文章主要介紹了Python代碼規(guī)范:企業(yè)級代碼靜態(tài)掃描-代碼規(guī)范、邏輯、語法、安全檢查,以及代碼規(guī)范自動編排(2)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

本篇將總結實際項目開發(fā)中Python代碼規(guī)范檢查、自動編排的一些工具,特點,使用方法,以及如何在Pycharm中集成這些工具,如autoflake、yapf、black、isort、autopep8代碼規(guī)范和自動編排工具。上一篇總結的pylint、pyproject-flake8、pyflakes、flake8、mypy代碼規(guī)范掃描工具參考:

https://blog.csdn.net/zhouruifu2015/article/details/129876922https://blog.csdn.net/zhouruifu2015/article/details/129876922

autoflake

介紹

autoflake 可以從 Python 代碼中刪除未使用的導入和變量,以及無用的pass語句,以此精簡你的代碼。默認情況下,autoflake僅刪除標準庫中未使用的模塊的導入,其他模塊可能有副作用,所以禁止了自動刪除,可以使用--imports 選項指定其他模塊要刪除未使用的導入:

autoflake --imports=django,requests,urllib3 <文件名>

要刪除所有未使用的導入(無論它們是否來自標準庫),可以使用 --remove-all-unused-imports 選項。

默認情況下,autoflake 禁用了刪除未使用的變量,要刪除未使用的變量,可以使用 --remove-unused-variables 選項。

安裝&配置

安裝:pip install --upgrade autoflake

使用

可選參數列表:

  1. -h, --help 顯示幫助信息并退出
  2. -c, --check 如果需要更改則返回錯誤代碼
  3. -i, --in-place 直接移除更改文件而不是打印差異
  4. -r, --recursive 遞歸目錄
  5. --exclude 排除匹配文件/目錄
  6. --imports 指定要刪除未引用導入的模塊
  7. --expand-star-imports 使用未定義名稱擴展星號通配符導入,僅在只有一顆星導入時觸發(fā)文件,如果文件中有 `__all__` 或 `del` 則跳過
  8. --remove-all-unused-imports 刪除所有未使用的導入(不僅僅是那些來自標準庫)
  9. --ignore-init-module-imports 排除 __init__.py
  10. --remove-duplicate-keys 刪除對象中的所有重復鍵
  11. --remove-unused-variables 刪除未使用的變量
  12. --version 顯示程序的版本號并退出

如果想忽略某些行的導入移除,可以使用 # noqa 注釋

from .endpoints import role , token, user, utils?? # noqa

命令行中使用

直接整改文件:autoflake --in-place --remove-unused-variables example.py

輸出檢查結果不整改文件:autoflake autopep8_test.py

Python代碼規(guī)范:企業(yè)級代碼靜態(tài)掃描-代碼規(guī)范、邏輯、語法、安全檢查,以及代碼規(guī)范自動編排(2)

yapf

介紹

Yapf?是另一種有自己的配置項列表的重新格式化代碼的工具。它與 Autopep8 的不同之處在于它不僅會指出代碼中違反 PEP 8 規(guī)范的地方,還會對沒有違反 PEP 8 但代碼風格不一致的地方重新格式化,旨在令代碼的可讀性更強。

由Google開發(fā)維護的格式化工具,目的是讓代碼更漂亮;它支持很多的自定義選項,適合對自己的代碼有特殊格式需求的場景;

yapf并不支持對import進行排序,所以需要使用isort工具。

安裝&配置

執(zhí)行?pip install yapf?安裝 Yapf

  1. 可以yapf的格式化配置文件

[yapf]

based_on_style = pep8

spaces_before_comment = 4

split_before_logical_operator = true

based_on_style可以是前面的四種預設格式之一。

yapf有默認的查找格式化配置文件的策略,可以使用參數--no-local-style禁用搜索;查找策略的細節(jié)可以查看官方README。

  1. 可以是JSON格式的配置字符串

--style='{based_on_style: pep8, indent_width: 4}'

更多的配置選項可以使用命令yapf --style-help查看,或者查看官方文檔:https://github.com/google/yapf#id11。

格式選項并不區(qū)分大小寫。

使用

執(zhí)行?yapf [options] path/to/dir??yapf [options] path/to/module.py?可以對代碼重新格式化。

yapf命令行參數及格式化選項,yapf命令行工具的參數并不是很多,主要常用的有下面幾個:

  1. -d, --diff:打印格式化前后差異
  2. -i, --in-place:原地格式化原文件
  3. -l START-END, --lines START-END:格式化指定行范圍
  4. --style STYLE:指定格式化標準

其中--style最為常用,用于指定格式化的標準和自定義選項。可以是一些預設的選項,包括:

  1. pep8(默認值)
  2. google(基于Google Python Style Guide)
  3. yapf(用于Google開源項目的代碼風格)
  4. facebook

格式化代碼

yapf支持遞歸處理目錄,使用-r參數可以遍歷目錄及其子目錄,使用-e PATTERN或者--exclude PATTERN排除特定文件,比如:

yapf --style=pep8 -r -i --exclude "*_test.py" src/py

格式化代碼之后,再使用isort進行imports的排序(當然,也可以先排序imports):

isort --fss --skip-glob "*_test.py" src/py

檢查代碼是否符合規(guī)范

檢查代碼是否符合規(guī)范,可以將yapf的-i參數替換為-d,如果存在不符合規(guī)范的內容,則打印出來,并且返回非0,比如:

yapf --style=pep8 -r -d --exclude "*_test.py" src/py

要檢查imports是否符合規(guī)范,給isort添加-c, --check-only, --check參數即可,不符合規(guī)范將會報錯,并返回非零值:

isort -c --fss --skip-glob "*_test.py" src/py

如此便可以在自動化檢查的時候通過判斷返回值是否為0,確定代碼是否符合規(guī)范,從而可以在自動化構建的pipeline中提前結束,提示開發(fā)者重新格式化代碼。

參考文檔

https://github.com/google/yapf

https://github.com/google/yapf#usage

black

Black?在代碼檢查工具當中算是比較新的一個。它與 Autopep8 和 Yapf 類似,但限制較多,沒有太多的自定義選項。這樣的好處是不需要去決定使用怎么樣的代碼風格,讓Black來做決定就好??梢栽谶@里查閱 Black?有限的自定義選項以及如何在配置文件中對其進行設置。

Black依賴于Python 3.6+,但它可以格式化用Python 2編寫的代碼。

Black配置選項很少,避免因為配置選項太多反而導致格式規(guī)范不一致。

介紹

安裝&配置

執(zhí)行?pip install black?安裝 Black

使用

執(zhí)行?black path/to/dir??black path/to/module.py?就可以使用 Black 優(yōu)化代碼。

參考文檔

  1. https://en.wikipedia.org/wiki/Lint_(software)
  2. GitHub - psf/black: The uncompromising Python code formatter

isort

Python代碼規(guī)范:企業(yè)級代碼靜態(tài)掃描-代碼規(guī)范、邏輯、語法、安全檢查,以及代碼規(guī)范自動編排(2)

介紹

Isort?這個庫能將項目中導入的庫按字母順序排序,并將其正確劃分為不同部分(例如標準庫、第三方庫、自建的庫等)。這樣提高了代碼的可讀性,并且可以在導入的庫較多的時候輕松找到各個庫。

文檔中還提供了更多的配置項,例如通過配置?.isort.cfg?文件來決定 isort 如何處理一個庫的多行導入。

Flake8、Pylint 一樣,isort 也提供了將其與流行的編輯器和 IDE?集成的插件。

安裝&配置

安裝:pip install isort

Pycharm中配置isort

Python代碼規(guī)范:企業(yè)級代碼靜態(tài)掃描-代碼規(guī)范、邏輯、語法、安全檢查,以及代碼規(guī)范自動編排(2)

使用

執(zhí)行?isort path/to/module.py?就可以運行了。

isort命令行參數和格式化選項

isort常用的命令行參數有:

-d, --stdout:輸出到標準輸出,不修改文件

-c, --check-only, --check:僅檢查imports是否符合規(guī)范

--df, --diff:打印執(zhí)行格式化前后的差異,而不修改文件

--profile PROFILE:基礎配置選項,可選擇black,?django,?pycharm,?google,?open_stack等常用風格。

--fss, --force-sort-within-sections:嚴格按照包名進行排序,而不管是直接使用import還是使用from ... import ...。

命令行中對單個文件轉換

編寫測試代碼

Python代碼規(guī)范:企業(yè)級代碼靜態(tài)掃描-代碼規(guī)范、邏輯、語法、安全檢查,以及代碼規(guī)范自動編排(2)

執(zhí)行后的效果,可以看出isort并沒有把引入但未使用的os做移除

Python代碼規(guī)范:企業(yè)級代碼靜態(tài)掃描-代碼規(guī)范、邏輯、語法、安全檢查,以及代碼規(guī)范自動編排(2)

Pycharm中執(zhí)行轉換

對單個文件進行轉換

Python代碼規(guī)范:企業(yè)級代碼靜態(tài)掃描-代碼規(guī)范、邏輯、語法、安全檢查,以及代碼規(guī)范自動編排(2)

對整個項目進行轉換

Python代碼規(guī)范:企業(yè)級代碼靜態(tài)掃描-代碼規(guī)范、邏輯、語法、安全檢查,以及代碼規(guī)范自動編排(2)

參考文檔

  1. Options:https://pycqa.github.io/isort/docs/configuration/options.html
  2. Profiles:https://pycqa.github.io/isort/docs/configuration/profiles.html
  3. https://github.com/PyCQA/isort
  4. https://github.com/PyCQA/isort/wiki/isort-Plugins

autopep8

介紹

A tool that automatically formats Python code to conform to the PEP8 style guide.

Autopep8?是一個開源的命令行工具,它能夠將Python代碼自動格式化為PEP8風格(如重新縮進行、修復縮進、刪除多余的空格),并重構常見的比較錯誤(例如布爾值和?None?值),可以查看文檔中完整的更正列表

Autopep8使用pycodestyle工具來決定代碼中的哪部分需要被格式化,這能夠修復大部分pycodestyle工具中報告的排版問題。

安裝&配置

安裝pip install autopep8

Python代碼規(guī)范:企業(yè)級代碼靜態(tài)掃描-代碼規(guī)范、邏輯、語法、安全檢查,以及代碼規(guī)范自動編排(2)

Python代碼規(guī)范:企業(yè)級代碼靜態(tài)掃描-代碼規(guī)范、邏輯、語法、安全檢查,以及代碼規(guī)范自動編排(2)

  1. Pycharm配置外置工具

Program:????????????????? D:\env36_tornado\Scripts\autopep8.exe

Arguments:?????????????? --in-place --aggressive --aggressive $FilePath$

Working directory:???? $ProjectFileDir$

Output filters:??????????? $FILE_PATH$\:$LINE$\:$COLUMN$\:.*

Python代碼規(guī)范:企業(yè)級代碼靜態(tài)掃描-代碼規(guī)范、邏輯、語法、安全檢查,以及代碼規(guī)范自動編排(2)

  1. 如果Arguments僅僅配置成 $FilePath$ 則發(fā)現(xiàn)有不符合規(guī)范的文件,僅僅輸出結果。
  2. Arguments配置成 --in-place --aggressive --aggressive $FilePath$ 發(fā)現(xiàn)有不符合規(guī)范的文件,則會自動進行整改。

使用

--in-place類似于sed命令的-i選項,如果不包含–in-place選項,則會將autopep8格式化以后的代碼直接輸出到控制臺??梢允褂眠@種方式檢查autopep8的修改,使用–in-place則會直接將結果保存到源文件中,將不會有任何輸出,autopep8會直接修改源文件。

autopep8還存在--aggressive選項,這會執(zhí)行更多實質性地更改,可以多次使用--aggressive,以達到更佳的效果。

  1. 命令行中針對單個指定文件

autopep8.exe --in-place --aggressive --aggressive <filename>

autopep8 --in-place --aggressive --aggressive autopep8.py

autopep8 --in-place --aggressive --aggressive?就可以重新格式化你的代碼。aggressive?選項的數量表示 Auotopep8 在代碼風格控制上有多少控制權。在這里可以詳細了解?aggressive?選項。

  1. Pycharm中執(zhí)行格式化

Python代碼規(guī)范:企業(yè)級代碼靜態(tài)掃描-代碼規(guī)范、邏輯、語法、安全檢查,以及代碼規(guī)范自動編排(2)

Pycharm編輯區(qū)域右擊中選擇autopep8

Python代碼規(guī)范:企業(yè)級代碼靜態(tài)掃描-代碼規(guī)范、邏輯、語法、安全檢查,以及代碼規(guī)范自動編排(2)

Python代碼規(guī)范:企業(yè)級代碼靜態(tài)掃描-代碼規(guī)范、邏輯、語法、安全檢查,以及代碼規(guī)范自動編排(2)

格式化后的效果,庫的排列順序還是沒有做排序,以及引用但未使用的os庫也沒有去掉,可以考慮使用isort再次進行整改。

Python代碼規(guī)范:企業(yè)級代碼靜態(tài)掃描-代碼規(guī)范、邏輯、語法、安全檢查,以及代碼規(guī)范自動編排(2)

autopep8對目錄進行掃描報:[Errno 13] Permission denied

Python代碼規(guī)范:企業(yè)級代碼靜態(tài)掃描-代碼規(guī)范、邏輯、語法、安全檢查,以及代碼規(guī)范自動編排(2)

Autopep8可以通過指定目錄來對多個文件進行掃描和格式化??梢允褂靡韵旅罡袷剑?/p>

```bash

autopep8 --recursive <directory_path_or_file_path>

```

其中,`--recursive`選項指定進行遞歸操作,掃描目錄下的所有子目錄和文件。 `directory_path_or_file_path`指定目錄路徑或單個文件路徑。

上述命令,進入項目目錄執(zhí)行:autopep8 --recursive? --in-place --aggressive --aggressive .

如果Linux上還遇到[Errno 13] Permission denied錯誤,則可能是因為沒有足夠的權限訪問某些文件或目錄??梢試L試在命令前加上`sudo`作為管理員身份運行命令,或者將文件或目錄權限更改為可讀寫權限。

如果是Windows,則設置如下:

Python代碼規(guī)范:企業(yè)級代碼靜態(tài)掃描-代碼規(guī)范、邏輯、語法、安全檢查,以及代碼規(guī)范自動編排(2)

參考文檔

GitHub - hhatto/autopep8: A tool that automatically formats Python code to conform to the PEP 8 style guide.A tool that automatically formats Python code to conform to the PEP 8 style guide. - GitHub - hhatto/autopep8: A tool that automatically formats Python code to conform to the PEP 8 style guide.https://github.com/hhatto/autopep8

Python代碼規(guī)范:企業(yè)級代碼靜態(tài)掃描-代碼規(guī)范、邏輯、語法、安全檢查,以及代碼規(guī)范自動編排(2)

?輸入才有輸出,吸收才能吐納?!a字不易Python代碼規(guī)范:企業(yè)級代碼靜態(tài)掃描-代碼規(guī)范、邏輯、語法、安全檢查,以及代碼規(guī)范自動編排(2)文章來源地址http://www.zghlxwxcb.cn/news/detail-408383.html

到了這里,關于Python代碼規(guī)范:企業(yè)級代碼靜態(tài)掃描-代碼規(guī)范、邏輯、語法、安全檢查,以及代碼規(guī)范自動編排(2)的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!

本文來自互聯(lián)網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 低代碼企業(yè)級PMO項目管理系統(tǒng),360度全景透視企業(yè)管理視角

    低代碼企業(yè)級PMO項目管理系統(tǒng),360度全景透視企業(yè)管理視角

    在一個崇高的目標支持下,不停地工作,即使慢,也一定會獲得成功。 ? 愛因斯坦 企業(yè)級PMO項目管理業(yè)務是行業(yè)里相對成熟和規(guī)范的業(yè)務,擁有眾多商業(yè)套件和標準產品。 然而隨著企業(yè)數字化建設進入深水區(qū),站在甲方角度進行項目管理的業(yè)務視角、精細化管控、標準化管

    2024年02月03日
    瀏覽(23)
  • 云表|低代碼開發(fā)崛起:重新定義企業(yè)級應用開發(fā)

    云表|低代碼開發(fā)崛起:重新定義企業(yè)級應用開發(fā)

    nbsp; nbsp; nbsp; nbsp;低代碼開發(fā)這個概念在近年來越來越受到人們的關注,市場對于低代碼的需求也日益增長。據Gartner預測,到2025年,75%的大型企業(yè)將使用至少四種低代碼/無代碼開發(fā)工具,用于IT應用開發(fā)和公民開發(fā)計劃。 nbsp; nbsp; nbsp; nbsp;那么,為什么低代碼開發(fā)如此受到

    2024年02月08日
    瀏覽(22)
  • 云表企業(yè)級無代碼案例-復雜機械ERP管理系統(tǒng)

    云表企業(yè)級無代碼案例-復雜機械ERP管理系統(tǒng)

    云南小松原本有供應商小松中國提供的一個數據管理系統(tǒng),但是系統(tǒng)很簡單,功能不能適時更新,對于企業(yè)相關業(yè)務管理也兼顧不到,而企業(yè)分支機構、人員、車輛、倉庫等分布在全省各個角落(有工地的地方可能就有小松的員工),所以傳統(tǒng)電子表格、微信、電郵的方式是

    2024年01月25日
    瀏覽(20)
  • [開源]一款企業(yè)級物聯(lián)網平臺低代碼開發(fā)框架,代碼精簡,開箱即用

    [開源]一款企業(yè)級物聯(lián)網平臺低代碼開發(fā)框架,代碼精簡,開箱即用

    基于Go 1.20前后端分離架構,代碼精簡,開箱即用,前端緊隨前沿 Vue3.0 + TypeScript + vite3 + Element-plus技術 對前后端進行了大部分功能的封裝,后端自封裝go-restful,使用起來更加簡潔,功能邏輯清晰,能快速上手學習,并用在生產中。 報表大屏設計器: 我們只需要拖拉拽即可綁定

    2024年02月04日
    瀏覽(23)
  • JeecgBoot 3.5.1 版本發(fā)布,開源的企業(yè)級低代碼平臺

    JeecgBoot 3.5.1 版本發(fā)布,開源的企業(yè)級低代碼平臺

    項目介紹 JeecgBoot是一款企業(yè)級的低代碼平臺!前后端分離架構 SpringBoot2.x,SpringCloud,Ant DesignVue3,Mybatis-plus,Shiro,JWT 支持微服務。強大的代碼生成器讓前后端代碼一鍵生成! JeecgBoot引領低代碼開發(fā)模式(OnlineCoding- 代碼生成- 手工MERGE), 幫助解決Java項目70%的重復工作,讓開發(fā)

    2023年04月23日
    瀏覽(24)
  • 【企業(yè)級SpringBoot單體項目模板 】——Mybatis-plus自動代碼生成

    【企業(yè)級SpringBoot單體項目模板 】——Mybatis-plus自動代碼生成

    ?? 作 ? ??????? 者 :是江迪呀 ?? 本文 : SpringBoot項目模版 、 企業(yè)級 、 模版 ?? 每日?? 一言 : 我們之所以這樣認為,是因為他們這樣說。他們之所以那樣說,是因為他們想讓我們那樣認為。所以實踐才是檢驗真理的唯一準則。 上回 我們說了一些開發(fā)規(guī)范

    2024年02月07日
    瀏覽(30)
  • 企業(yè)級PaaS低代碼快開平臺源碼,基于 Salesforce Platform 的開源替代方案

    企業(yè)級PaaS低代碼快開平臺源碼,基于 Salesforce Platform 的開源替代方案

    PaaS低代碼快開平臺是一種快速開發(fā)應用系統(tǒng)的工具,用戶通過少量代碼甚至不寫代碼就可以快速構建出各種應用系統(tǒng)。 隨著信息化技術的發(fā)展,企業(yè)對信息化開發(fā)的需求正在逐漸改變,傳統(tǒng)的定制開發(fā)已經無法滿足企業(yè)需求。低代碼開發(fā)平臺,讓開發(fā)者可以基于平臺快速搭

    2024年02月15日
    瀏覽(22)
  • 全棧開發(fā)前端代碼:黑馬程序員SpringBoot3+Vue3全套視頻教程,springboot+vue企業(yè)級全棧開,big-event

    全棧開發(fā)前端代碼:黑馬程序員SpringBoot3+Vue3全套視頻教程,springboot+vue企業(yè)級全棧開,big-event

    目錄 :希望對大家有幫助 ①項目壓縮包: 1.要啟動的指令:可以參考下面的文件 ①登錄、注冊頁面 srcviewsloginLoginPage.vue srcapiuser.js srcstoresmodulesuser.js srcstoresindex.js ②首頁實現(xiàn)的頁面 srcviewslayoutLayoutContainer.vue srcapiuser.js user下面的小模塊:實現(xiàn)改用戶信息、圖像、

    2024年01月18日
    瀏覽(32)
  • 阿里云ECS服務器企業(yè)級和共享型介紹_企業(yè)級常見問題解答FAQ

    阿里云ECS服務器企業(yè)級和共享型介紹_企業(yè)級常見問題解答FAQ

    阿里云企業(yè)級服務器是什么?企業(yè)級和共享型有什么區(qū)別?企業(yè)級服務器具有獨享且穩(wěn)定的計算、存儲、網絡資源,如ECS計算型c6、通用型g8等都是企業(yè)級實例,阿里云百科分享什么是企業(yè)級云服務器、企業(yè)級實例的優(yōu)勢、企業(yè)級和共享型云服務器區(qū)別、企業(yè)級云服務器ECS都有

    2024年02月12日
    瀏覽(28)
  • 企業(yè)級DevOps實戰(zhàn)

    Zookeeper(動物管理員)是一個開源的分布式協(xié)調服務,目前由Apache進行維護。 MQ概念 MQ(消息隊列)是一種應用程序之間的通信方法,應用程序通過讀寫出入隊列的消息(針對應用程序的數據)通信,而無須專用連接。 MQ是一種先進先出的數據結構,是指把要傳輸的數據(消

    2024年02月20日
    瀏覽(24)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包