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

性能最快的代碼分析工具,Ruff 正在席卷 Python 圈!

這篇具有很好參考價(jià)值的文章主要介紹了性能最快的代碼分析工具,Ruff 正在席卷 Python 圈!。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

幾天前,Python 開(kāi)源社區(qū)又出了一個(gè)不小的新聞:HTTPX 和 Starlette 在同一天將在用的代碼分析工具(flake8、autoflake 和 isort)統(tǒng)一替換成了 Ruff。

HTTPX 是一個(gè)支持異步的 HTTP 客戶(hù)端,Starlette 是一個(gè)輕量級(jí)的 ASGI 框架,它們都是 Python 社區(qū)里的明星項(xiàng)目,目前加起來(lái)有近 20K star。它們都選擇了使用 Ruff,再次擴(kuò)大了 Ruff 的應(yīng)用版圖。

Ruff 是個(gè)誕生僅僅 8 個(gè)月的新興項(xiàng)目,但已呈現(xiàn)出一種席卷 Python 社區(qū)的趨勢(shì)!很多知名的開(kāi)源項(xiàng)目已采納 Ruff,比如 Transformers、Pandas、FastAPI、Airflow、SciPy、Bokeh、Jupyter、LangChain、PaddlePaddle、Sphinx、Pydantic、LlamaIndex……

Ruff 是什么?為什么它能吸引大量的開(kāi)源項(xiàng)目使用?相比于其它代碼分析工具,它有哪些突出之處,是否還有一些局限性?現(xiàn)在是否值得將項(xiàng)目在用的工具都替換成它呢?

帶著這些問(wèn)題,本文將帶你全方位了解這個(gè)火爆的項(xiàng)目。

Ruff 加速 Rust 與 Python 的融合

Ruff 誕生于 2022 年 8 月,它是一個(gè)用 Rust 語(yǔ)言編寫(xiě)的高性能的 Python 靜態(tài)代碼分析工具,比其它分析工具快幾個(gè)數(shù)量級(jí)(10-100 倍),而且功能也很全面。

代碼分析工具 即 Linter,用于檢查代碼中的語(yǔ)法錯(cuò)誤、編碼規(guī)范問(wèn)題、潛在的邏輯問(wèn)題和代碼質(zhì)量問(wèn)題等,可以提供實(shí)時(shí)反饋和自動(dòng)修復(fù)建議。

在 Ruff 出現(xiàn)之前,社區(qū)里的代碼分析工具呈現(xiàn)出百花齊放之勢(shì),比如有 Pylint、Flake8、Autoflake、Pyflakes、Pycodestyle 等等,它們的共同點(diǎn)是都使用 Python 編寫(xiě)而成。

Ruff 異軍突起,在性能方面立于不敗之地,主要得益于 Rust 天然的速度優(yōu)勢(shì)。Ruff 的出現(xiàn),就像基于大語(yǔ)言模型的 ChatGPT 橫空出世,所有競(jìng)爭(zhēng)對(duì)手瞬間就黯淡失色了。

兩個(gè)月前,我翻譯了一篇《Python 2023 年的 3 個(gè)趨勢(shì)》,它預(yù)測(cè)的第一個(gè)趨勢(shì)就是 Rust 將加快融入到 Python 相關(guān)的項(xiàng)目和工具中,舉出的例子就有 Ruff。

我現(xiàn)在可以補(bǔ)充一個(gè)觀察了:用 Rust 開(kāi)發(fā)的新工具將淘汰用其它語(yǔ)言開(kāi)發(fā)的工具,而且新工具的普及速度可能比你的預(yù)想快得多!

Ruff 項(xiàng)目的成功,將刺激出更多 Python+Rust 的項(xiàng)目。它的作者 Charlie Marsh 立志于給 Python 構(gòu)建高性能的開(kāi)發(fā)工具,巧合的是我曾翻譯過(guò)他寫(xiě)的《Using Mypy in production at Spring》,這篇文章恰好發(fā)布于 Ruff 誕生的 2022 年 8 月!

因此,我有理由推測(cè):在 Ruff 項(xiàng)目成熟后,他將用 Rust 開(kāi)發(fā)高性能的 Python 類(lèi)型檢查工具,到時(shí)候,目前流行的 Mypy、Pytype、Pyright 和 Pyre 等工具將迎來(lái)一大勁敵。(題外話:Python 社區(qū)紛亂繁多的虛擬環(huán)境管理工具和依賴(lài)包管理工具,也有望迎來(lái)變革了吧!)

這里還必須介紹兩個(gè) Rust 項(xiàng)目,因?yàn)?Ruff 的成功離不開(kāi)它們:

  • RustPython :用 Rust 寫(xiě)成的 Python 解釋器。Ruff 利用了它高性能的 AST 解析器,以此實(shí)現(xiàn)了自己的 AST 遍歷、訪問(wèn)器抽象和代碼質(zhì)量檢測(cè)邏輯
  • Maturin :用 Rust 寫(xiě)成的打包工具,可以將 Rust 項(xiàng)目打包成 Python 可用的包,從而可以被我們“pip install”后使用,且不需要配置 Rust 環(huán)境

Ruff 的優(yōu)點(diǎn)與局限性

介紹完最關(guān)鍵的特性后(速度極快、支持 pip),我們接下來(lái)看看 Ruff 的其它方面。

總體而言,它具有這些特點(diǎn):

  • 支持 pyproject.toml
  • 兼容?Python 3.11
  • 超過(guò) 500 條內(nèi)置規(guī)則,與 Flake8 內(nèi)置的規(guī)則集近乎對(duì)等
  • 重新實(shí)現(xiàn)了數(shù)十個(gè) Flake8 插件,如 flake8-bugbear、flake8-comprehensions 等
  • 支持自動(dòng)修復(fù),可自動(dòng)糾正錯(cuò)誤(例如,刪除未使用的導(dǎo)入)
  • 內(nèi)置緩存,可避免重復(fù)分析未更改的文件
  • 支持 VS Code、Pycharm、Neovim、Sublime Text、Emacs 等編輯器
  • 對(duì) monorepo 友好,具有分層和級(jí)聯(lián)配置

首先最值得介紹的是它支持的規(guī)則。Ruff 借鑒了流行的工具如 Flake8、autoflake、isort、pyupgrade、yesqa 等等,然后用 Rust 重新實(shí)現(xiàn)了超過(guò) 500 條規(guī)則。它本身不支持插件,但是吸收了數(shù)十個(gè)常用的 Flake8 插件的設(shè)計(jì),使得已囊括的規(guī)則范圍比其它任何工具都大。

Ruff 的作者還非常熟悉其它語(yǔ)言的分析工具,比如 Rust 的 Clippy?和?JavaScript 的 ESLint,并從這些項(xiàng)目上得到了設(shè)計(jì)上的啟發(fā)。

Ruff 站在了多個(gè)工具/插件的肩膀上,重新實(shí)現(xiàn)了它們驗(yàn)證過(guò)的規(guī)則,也借鑒了它們的 API 和實(shí)現(xiàn)細(xì)節(jié),這使得它扮演了一種“集大成”的角色,很方便使用者們作工具的順滑遷移。

Ruff 第二個(gè)值得介紹的特點(diǎn)是,它沒(méi)有局限于 Linter 的定位,而是借鑒 Rome、Prettier 和 Black 這些代碼格式化工具(Formatter),也實(shí)現(xiàn)了代碼格式化的功能。借鑒了 Autoflake、ESLint、Fixit 等工具,實(shí)現(xiàn)了代碼自動(dòng)糾錯(cuò)的功能。另外,它還借鑒了使用很廣泛的 isort,支持對(duì) import 作快速排序。

這些表明作者的目標(biāo)并不只是開(kāi)發(fā)一款優(yōu)秀的代碼分析工具,而是在靜態(tài)代碼分析的核心功能外,要?jiǎng)?chuàng)造出更多的可能性。此舉是開(kāi)發(fā)者的福音啊,以后一個(gè)工具就能滿足多種訴求,再也不必糾結(jié)于不同工具的選型、協(xié)作與維護(hù)了!

Ruff 還有其它的優(yōu)點(diǎn),例如支持 pyproject.toml?、支持 Python 3.11、支持只分析變更的文件,等等。另外,它也有著一些局限性:

  • 支持的 lint 規(guī)則還有不夠
  • 不支持使用插件,擴(kuò)展性不強(qiáng)
  • 用 Rust 開(kāi)發(fā)的,因此不便于在出錯(cuò)時(shí) debug,也不便于 Python 開(kāi)發(fā)者給它貢獻(xiàn)代碼

關(guān)于第一點(diǎn),畢竟 Ruff 只是 8 個(gè)月大的新生項(xiàng)目,支持更多的規(guī)則,只是時(shí)間問(wèn)題。至于插件帶來(lái)的擴(kuò)展性和編程語(yǔ)言的開(kāi)發(fā)者生態(tài),原因也是 Rust,屬于“有得必有失”了。

Ruff 的使用

介紹完 Ruff 的整體情況后,我們接著看看該如何使用它吧。

首先是安裝,可以用 Conda 和其它包管理工具,也可以直接用 pip:

pip install ruff

可以通過(guò)以下命令運(yùn)行:

ruff check .                        # 分析當(dāng)前及子目錄內(nèi)的所有文件
ruff check path/to/code/            # 分析指定目錄及子目錄內(nèi)的所有文件
ruff check path/to/code/*.py        # 分析指定目錄內(nèi)的所有py文件
ruff check path/to/code/to/file.py  # 分析 file.py

可以用作預(yù)提交的鉤子:

- repo: https://github.com/charliermarsh/ruff-pre-commit
  # Ruff version.
  rev: 'v0.0.261'
  hooks:
    - id: ruff

可以通過(guò)?pyproject.toml?,ruff.toml?或?.ruff.toml?文件進(jìn)行配置,默認(rèn)配置已能滿足基本使用,詳細(xì)配置可以參見(jiàn)文檔的?Configuration 。

Ruff 提供了官方的 VS Code 插件,可以快速上手:

Ruff 官方?jīng)]有提供 Pycharm 的插件,社區(qū)中有人發(fā)布了一個(gè) Ruff 插件。

另外,它還提供了ruff-lsp ,可以被集成到任何支持 Language Server Protocol 的編輯器中,例如?Neovim、Sublime Text、Emacs 等等。

小結(jié)

本文從 HTTPX 和 Starlette 采納 Ruff 的新聞開(kāi)始,向讀者介紹了這個(gè)僅誕生 8 個(gè)月卻俘獲了一大批知名開(kāi)源項(xiàng)目。它最突出的特點(diǎn)是使用 Rust 開(kāi)發(fā),因此在性能方面遠(yuǎn)遠(yuǎn)超越同類(lèi)工具,此外,它借鑒了眾多工具和插件的設(shè)計(jì),不僅靜態(tài)代碼分析的規(guī)則全面,而且還具備代碼格式化、代碼自動(dòng)糾錯(cuò)和 import 排序等非其它 linter 所擁有的功能。

Ruff 的成功為 Python 社區(qū)提供了一個(gè)鮮活的榜樣,可以預(yù)見(jiàn),我們將迎來(lái)一波用 Rust 開(kāi)發(fā)的高性能工具。Ruff 的成功,與最近火爆的 ChatGPT 一樣,它們傳遞出了一個(gè)“這事兒能成”的信號(hào),從而會(huì)引爆一場(chǎng)使用新技術(shù)的變革?。ǚ浅G珊系氖牵篟ust 1.0 在 2015 年 5 月發(fā)布,而 OpenAI 在 2015 年 12 月成立。)

總體而言,Ruff 非常強(qiáng)大,憑實(shí)力而風(fēng)靡 Python 社區(qū),絕對(duì)推薦使用!它的使用文檔很友好,如果你想了解更多細(xì)節(jié),可以去翻查。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-408805.html

到了這里,關(guān)于性能最快的代碼分析工具,Ruff 正在席卷 Python 圈!的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶(hù)投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Python代碼覆蓋率分析工具Coverage

    目錄 簡(jiǎn)介 安裝 命令行中使用 調(diào)用API使用 Coverage是一個(gè)Python代碼覆蓋率分析工具,它可以用于衡量Python測(cè)試代碼的質(zhì)量。通過(guò)給代碼執(zhí)行帶來(lái)的覆蓋率數(shù)據(jù),Coverage可以幫助開(kāi)發(fā)人員找出被回歸測(cè)試代碼中的漏洞,并且指明哪些代碼沒(méi)有被測(cè)試到。 Coverage可以讓你知道:哪些

    2024年02月11日
    瀏覽(23)
  • 一個(gè)Python開(kāi)發(fā)的低代碼數(shù)據(jù)分析工具:DataPrep

    一個(gè)Python開(kāi)發(fā)的低代碼數(shù)據(jù)分析工具:DataPrep

    更多Python學(xué)習(xí)內(nèi)容:ipengtao.com 在數(shù)據(jù)科學(xué)和分析領(lǐng)域,數(shù)據(jù)的預(yù)處理和清理是一個(gè)非常重要且耗時(shí)的任務(wù)。為了簡(jiǎn)化這一過(guò)程,讓數(shù)據(jù)分析師和數(shù)據(jù)科學(xué)家能夠更快速地準(zhǔn)備和探索數(shù)據(jù),DataPrep(Data Preparation)成為了一個(gè)強(qiáng)大的工具。DataPrep是一個(gè)用于數(shù)據(jù)預(yù)處理和數(shù)據(jù)探索

    2024年02月02日
    瀏覽(22)
  • 輔助性能優(yōu)化——長(zhǎng)安鏈性能分析工具原理及用法

    輔助性能優(yōu)化——長(zhǎng)安鏈性能分析工具原理及用法

    如何提升區(qū)塊鏈系統(tǒng)性能是很多開(kāi)發(fā)者都會(huì)關(guān)注的事,但是有些對(duì)區(qū)塊鏈并非十分熟悉的開(kāi)發(fā)者可能會(huì)感到?jīng)]有頭緒。長(zhǎng)安鏈提供了性能分析工具幫助開(kāi)發(fā)者梳理系統(tǒng)耗時(shí),優(yōu)化系統(tǒng)性能。下面對(duì)長(zhǎng)安鏈性能分析工具原理及使用進(jìn)行介紹。 time_counter.sh是長(zhǎng)安鏈性能分析工具,

    2024年02月13日
    瀏覽(30)
  • 前端性能分析工具——Lighthouse

    前端性能分析工具——Lighthouse

    1、谷歌插件lighthouse的基本介紹 Lighthouse 是一個(gè)網(wǎng)站性能測(cè)評(píng)工具, 它是 Google Chrome 推出的一個(gè)開(kāi)源自動(dòng)化工具,能夠?qū)?PWA 和網(wǎng)頁(yè)多方面的效果指標(biāo)進(jìn)行評(píng)測(cè),并給出最佳實(shí)踐的建議以幫助開(kāi)發(fā)者改進(jìn)網(wǎng)站的質(zhì)量。它的使用方法也非常簡(jiǎn)單,我們只需要提供一個(gè)要測(cè)評(píng)的網(wǎng)

    2024年02月13日
    瀏覽(27)
  • Lighthouse前端性能分析工具

    Lighthouse前端性能分析工具

    我們多數(shù)性能測(cè)試,基本上針對(duì)接口的性能測(cè)試,很少涉及到前端頁(yè)面的性能測(cè)試。 但影響用戶(hù)體驗(yàn)的因素除了后端接口數(shù)據(jù)的返回,還有前端頁(yè)面的渲染等等。 所以我們除了在開(kāi)發(fā)的過(guò)程中注意代碼的質(zhì)量,同時(shí)還需要專(zhuān)業(yè)的網(wǎng)站測(cè)試工具輔助,讓我們知道自己的網(wǎng)頁(yè)還

    2024年02月16日
    瀏覽(19)
  • unity 渲染性能分析工具

    unity 渲染性能分析工具

    既然要優(yōu)化,肯定要有個(gè)目標(biāo): pc上一般要求:一秒渲染60幀 移動(dòng)端:一秒渲染30幀 這應(yīng)該是最低的要求,如果游戲運(yùn)行時(shí),游戲幀率有變化,人眼能夠明顯的感覺(jué)到幀率下降。 優(yōu)化的首要規(guī)則是找到性能問(wèn)題的所在。 一般出現(xiàn)問(wèn)題不是在cpu就是gpu。 unity內(nèi)置了性能檢測(cè)工

    2024年02月03日
    瀏覽(37)
  • 前端性能分析工具-Lighthouse

    前端性能分析工具-Lighthouse

    對(duì)于前端開(kāi)發(fā)人員來(lái)說(shuō),除了實(shí)現(xiàn)頁(yè)面功能外,那就是頁(yè)面的性能響應(yīng)問(wèn)題也要關(guān)注。同樣對(duì)于測(cè)試人員在進(jìn)行性能測(cè)試時(shí),也要關(guān)注前端頁(yè)面的性能指標(biāo)。測(cè)試前端性能市面上可以用到的工具也比較多,比如可以用 HttpWatch 進(jìn)行頁(yè)面的抓取與分析,或者也可以使用抓包工具

    2024年02月11日
    瀏覽(48)
  • 【Lighthouse前端性能分析工具】

    【Lighthouse前端性能分析工具】

    我們多數(shù)性能測(cè)試,基本上針對(duì)接口的性能測(cè)試,很少涉及到前端頁(yè)面的性能測(cè)試。 但影響用戶(hù)體驗(yàn)的因素除了后端接口數(shù)據(jù)的返回,還有前端頁(yè)面的渲染等等。 所以我們除了在開(kāi)發(fā)的過(guò)程中注意代碼的質(zhì)量,同時(shí)還需要專(zhuān)業(yè)的網(wǎng)站測(cè)試工具輔助,讓我們知道自己的網(wǎng)頁(yè)還

    2024年02月12日
    瀏覽(34)
  • MySQL性能分析工具的使用

    MySQL性能分析工具的使用

    當(dāng)我們遇到數(shù)據(jù)庫(kù)調(diào)優(yōu)問(wèn)題的時(shí)候,該如何思考呢?這里把思考的流程整理成下面這張圖。 整個(gè)流程劃分成了 觀察( Show status ) 和 行動(dòng)( Action ) 兩個(gè)部分。字母 S 的部分代表觀察(會(huì)使用相應(yīng)的分析工具),字母 A 代表的部分是行動(dòng)(對(duì)應(yīng)分析可以采取的行動(dòng))。 ? ?

    2024年02月09日
    瀏覽(27)
  • 網(wǎng)絡(luò)協(xié)議分析:網(wǎng)絡(luò)性能的防御工具

    網(wǎng)絡(luò)協(xié)議分析:網(wǎng)絡(luò)性能的防御工具

    作為網(wǎng)絡(luò)管理員知道管理不斷發(fā)展的 IT 環(huán)境需要付出巨大的努力。無(wú)論是對(duì)于小型還是大型企業(yè),管理網(wǎng)絡(luò)以使其可訪問(wèn)并使其性能有效都需要一套監(jiān)控策略和工具。大多數(shù) IT 管理員需要協(xié)議分析器來(lái)識(shí)別潛在的網(wǎng)絡(luò)風(fēng)險(xiǎn)并幫助排除故障。與傳統(tǒng)分析不同,協(xié)議分析器系統(tǒng)

    2024年02月08日
    瀏覽(40)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包