丁香五月亚洲,日女人在线,太阳城色网,韩日AV在线秒放

代碼分析與自動化重構(gòu)工具集:Modernizing(代碼結(jié)構(gòu)分析工具)

遺留系統(tǒng)的現(xiàn)代化演進(jìn)是一門藝術(shù)。

Why 開源 遺留系統(tǒng)現(xiàn)代化工具

在日常的軟件開發(fā)里,我們經(jīng)常會遇到一系列的問題,諸如于:

  • 如何解決人類智商不夠的問題?模式、原則和工具

  • 誰應(yīng)該去解決代碼的問題?代碼

  • ……

應(yīng)對于這些問題,其中的一個解決方案就是:自動化的工具,有些人喜歡稱之為。支撐這些工具的便是一系列的原則模式,將它們?nèi)谌氲焦ぞ咧?。另外一個解決人成長的方案就是:元元(meta-meta),這是另外一個故事。

遺留系統(tǒng)是常態(tài)。多數(shù)時候,我們所遇到的系統(tǒng)里多數(shù)是遺留系統(tǒng),來到一個新項(xiàng)目時,可能就需要對他們快速的分析,以提供洞見 —— 寫 PPT 匯報。所以,在過去的幾年里,咨詢團(tuán)隊(duì)也沉淀了一系列的遺留系統(tǒng)分析和重構(gòu)的工具,比如新哥的 Tequila、正在開源的架構(gòu)分析和守護(hù)工具 ArchGuard 等等。除此,在有些重構(gòu)項(xiàng)目里,還要編寫定制的工具來進(jìn)行分析。

技術(shù)熱情發(fā)電。主要的挑戰(zhàn)是,我們需要拿自己的業(yè)余時間來完善工具。

既然要用自己的時間來開發(fā),還和項(xiàng)目沒有關(guān)系,這種用愛發(fā)電的事情,用開源的方式最合適了。

我們需要怎樣的工具?

從對于使用工具的結(jié)果來看,我們需要這個現(xiàn)代化工具是:

  • 可視化驅(qū)動??焖偕身?xiàng)目的分析結(jié)果,并展示出來給開發(fā)人員了解現(xiàn)狀,還有編寫 PPT。

  • 必要的交互性。用于在重構(gòu)的過程中,尋找合適的切入點(diǎn)。

  • 定制化開發(fā)。

    • 特定壞味道。不同的開發(fā)團(tuán)隊(duì)會有不同的壞味道,有些壞味道是無法由 Sonarqube 這樣的工具識別的。

    • 自動化重構(gòu)。基于已知的壞味道,對應(yīng)的代碼位置信息,對代碼進(jìn)行自動化重構(gòu)。

  • 適當(dāng)?shù)恼Z法精準(zhǔn)度。更高的語法精準(zhǔn)度,意味著更高的開發(fā)成本,需要有針對地平衡它們。

  • 多平臺。我們用的是 macOS,而多數(shù)時候,客戶使用的是 Windows。

如何開發(fā)這樣的工具?

這里定義的遺留系統(tǒng)現(xiàn)代化工具包含了這么幾部分:語法分析、結(jié)果及可視化、自動化重構(gòu)、架構(gòu)守護(hù)。

代碼分析與自動化重構(gòu)工具集:Modernizing(代碼結(jié)構(gòu)分析工具)

語法分析

對代碼進(jìn)行語法分析,生成特定的語言的數(shù)據(jù)結(jié)構(gòu)。常用的工具有:Antlr、Ctags、TreeSitter、Doxygen、CodeQuery 等。一個大致的對比(拍腦袋訂的)如下表所示:

代碼分析與自動化重構(gòu)工具集:Modernizing(代碼結(jié)構(gòu)分析工具)

結(jié)果及可視化

通常來說,我們會出于以下的一些情況,來對遺留系統(tǒng)進(jìn)行可視化:

  • 數(shù)值化。如針對于特定的 smell 進(jìn)行自動化重構(gòu),類似于 Sonarqube,常見的模式和原則源自于《重構(gòu)》一書。在 Coca 里,還引入了在一些論文里看到了測試的 bad smell,諸如于沒有斷言的測試等。

  • 可視化依賴。如針對于代碼中的類、包等的依賴情況進(jìn)行可視化,主要用于分析分層架構(gòu)等。常用的工具有:PlantUML、Graphviz、D3.js、Echarts 等。

  • 代碼屬性可視化。如針對于文件的修改頻率、大小等屬性進(jìn)行可視化,可以獲取諸如于單位時間內(nèi)的文件變化頻率。一個文件經(jīng)常修改,還大量被引用,那說明它是一個不穩(wěn)定的類、文件,除了業(yè)務(wù)變化,最有可能就是設(shè)計(jì)不合理。

  • 其它。

自動化重構(gòu)

這一步是可選的,它取決于我們的場景。通常來說,編寫這樣的功能主要彌補(bǔ)是現(xiàn)代化的 IDE 無法完成的工作,諸如于:

  • 多代碼庫間的未使用類刪除。

  • 多代碼庫間的聚類。

  • 針對于 CSS 顏色的重構(gòu)。

架構(gòu)守護(hù)

編寫架構(gòu)的守護(hù)規(guī)則,以對于系統(tǒng)的架構(gòu)進(jìn)行守護(hù),用的工具有:ArchUnit、ArchGuard 等。在參考了 ArchUnit 的語法之后,我們也設(shè)計(jì)了一個多語言的架構(gòu)守護(hù)工具:Guarding。

在開發(fā)這些工具的過程中,它們也不斷地 push 著我進(jìn)一步學(xué)習(xí)語言背后的東西,如編譯原理(語言的前端部分),理解構(gòu)建系統(tǒng)(build system)等。

遺留系統(tǒng)現(xiàn)代化工具集

為了更有針對性地對遺留系統(tǒng)進(jìn)行現(xiàn)代化,最近我們創(chuàng)建了一個新的組織:Modernizing,集合了先前開發(fā)的一系列工具。并創(chuàng)建了:awesome-modernization 用于對其它的一系列相關(guān)的工具進(jìn)行收集。

在 Modernizing 里,針對于單個編程語言的工具有:

  • 針對于 Java 語言的系統(tǒng)重構(gòu)、系統(tǒng)遷移和系統(tǒng)分析的工具:Coca,Go 語言,GitHub stars:691。Coca 是一個“全功能”的重構(gòu)工具,基于 Antlr 進(jìn)行語法分析的,除了常規(guī)的可視化、調(diào)用分析,還可以進(jìn)行自動化重構(gòu)。Coca 一名的由來是:對標(biāo)新哥寫的 Tequila —— 龍舌蘭酒 vs 快樂水。

  • 針對于 CSS/LESS/CSS 的分析和自動化重構(gòu)工具:Lemonj,TypeScript 語言,GitHub stars:128。當(dāng)時設(shè)計(jì)的主要目的是:用來對 CSS 中的顏色進(jìn)行提取,基于 Antlr 的語法樹分析,可以用于進(jìn)行自動化的重構(gòu)。

  • 針對于 MySQL 代碼進(jìn)行自動化分析,并從中構(gòu)建中 UML,并生成其關(guān)系的:SQLing,Go 語言,使用 PingCapSQL 解析器解析。當(dāng)然了,還有一個初始化的針對于 PL/SQL 的版本:pling。

  • 適用于 Ant 轉(zhuǎn) Maven 的半自動化工具:Merry,Go 語言 Antlr。

  • 前端規(guī)范化改造工具:Clij,用于一鍵添加 eslint、husky、lint-staged 等,TypeScript 語言。

針對于多語言的工具,我們有:

  • 基于 Antlr 的多語言的語言模型分析工具:Chapi,Kotlin 語言。其設(shè)計(jì)的初衷是用于生成 Coca 相同的數(shù)據(jù)結(jié)構(gòu),以接入更多的可視化工具。在語法分析上,采用的是 Antlr 進(jìn)行分析。

  • 基于 Doxygen 的多語言分析和可視化工具:Go mod 版本的新哥的 Tequila。其中,還有一系列的迷之代碼,需要重構(gòu)掉。

  • 基于 Ctags 的多語言模型分析和可視化工具:Modeling,Rust 語言。分析源碼,并生成基于模型的可視化依賴。

  • 基于 TreeSitter 的多語言架構(gòu)守護(hù)工具:Guarding,Rust 語言。通過自制的 DSL,來對系統(tǒng)架構(gòu)進(jìn)行守護(hù)。

除此,還有一個在 Inherd 開源小組下開源的:Coco,它主要是通過代碼的物理屬性:修改頻率 目錄 行數(shù)來分析系統(tǒng)的工具。以及現(xiàn)在緊鑼密鼓開源中的 ArchGuard。

我們使用一系列不同的語言和工具來開發(fā)這些軟件,因?yàn)椴煌膱鼍爸拢紩胁煌倪x擇。

下一步?

現(xiàn)有的工具都是分散的,不同工具之前的數(shù)據(jù)格式不盡相同,缺乏統(tǒng)一的數(shù)據(jù)格式。在輸出格式不統(tǒng)一時,我們就難以進(jìn)行標(biāo)準(zhǔn)的可視化,諸如于我們正在構(gòu)建 codecity 用于在元宇宙里,對遺留系統(tǒng)進(jìn)行可視化,又或者是正在從 ArchGuard 中拆分的前端可視化部分,以用于復(fù)用。理想的情況下,它應(yīng)該像是一個 pipeline 架構(gòu)的系統(tǒng),由一系列的 pipe 和 filter 所構(gòu)成。

歡迎訪問我們的 GitHub:https://github.com/modernizing

也歡迎成為這一系列工具的核心開發(fā)者 ~ 。

版權(quán)聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn),該文觀點(diǎn)僅代表作者本人。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如發(fā)現(xiàn)本站有涉嫌抄襲侵權(quán)/違法違規(guī)的內(nèi)容, 請發(fā)送郵件至 舉報,一經(jīng)查實(shí),本站將立刻刪除。

(0)
上一篇 2022年5月29日 上午9:39
下一篇 2022年5月29日 上午9:48

相關(guān)推薦

  • 科研項(xiàng)目來源如何填制

    科研項(xiàng)目來源如何填制 科研項(xiàng)目來源是科研項(xiàng)目的一個重要組成部分,它決定了科研項(xiàng)目的真實(shí)性和可信度。因此,填寫科研項(xiàng)目來源非常重要。 在填寫科研項(xiàng)目來源時,應(yīng)該遵循以下原則: 1. …

    科研百科 2025年3月2日
    8
  • 皮膚科研究生可以搞皮膚美容嗎(皮膚科科研項(xiàng)目碩士生)

    作為皮膚科科研項(xiàng)目碩士生,我一直以來都非常熱愛科研,并且致力于探索皮膚科學(xué)的奧秘。在近年來的學(xué)習(xí)中,我積累了豐富的科研經(jīng)驗(yàn),并且參與了許多有趣的科研項(xiàng)目。 作為一門特殊的學(xué)科,皮膚…

    科研百科 2024年4月10日
    66
  • 高速公路合同管理

    高速公路合同管理 高速公路是現(xiàn)代社會的重要基礎(chǔ)設(shè)施之一,對于人們的出行和經(jīng)濟(jì)發(fā)展都有著重要的作用。然而,隨著高速公路建設(shè)的不斷加劇,高速公路合同管理也成為了一個日益重要的議題。本文…

    科研百科 2025年1月14日
    2
  • 研發(fā)強(qiáng)度全球第13位!中國研發(fā)經(jīng)費(fèi)投入總量突破3萬億元【附科研投入現(xiàn)狀分析】

    圖片來源:攝圖網(wǎng) 近日,國家統(tǒng)計(jì)局發(fā)布《2022年全國科技經(jīng)費(fèi)投入統(tǒng)計(jì)公報》,公報數(shù)據(jù)顯示,我國研發(fā)經(jīng)費(fèi)總量邁上新臺階,投入強(qiáng)度持續(xù)提升,2022年我國研發(fā)經(jīng)費(fèi)投入總量突破3萬億,…

    科研百科 2023年10月7日
    203
  • 項(xiàng)目管理繪圖軟件

    項(xiàng)目管理繪圖軟件:讓項(xiàng)目管理水平更上一層樓 隨著數(shù)字化時代的到來,項(xiàng)目管理已經(jīng)成為現(xiàn)代企業(yè)的重要一環(huán)。然而,傳統(tǒng)的項(xiàng)目管理水平已經(jīng)無法滿足現(xiàn)代企業(yè)的需求,因此,我們需要一款專業(yè)的項(xiàng)…

    科研百科 2024年5月28日
    39
  • 系統(tǒng)集成項(xiàng)目管理師收入

    系統(tǒng)集成項(xiàng)目管理師收入是多少? 系統(tǒng)集成項(xiàng)目管理師(SPM)是一種從事系統(tǒng)集成項(xiàng)目管理的職業(yè)。他們負(fù)責(zé)規(guī)劃、執(zhí)行、監(jiān)控和控制系統(tǒng)集成項(xiàng)目,以確保項(xiàng)目按時完成并達(dá)到預(yù)期效果。隨著信息…

    科研百科 2025年1月28日
    2
  • 項(xiàng)目組合管理系統(tǒng)大全

    項(xiàng)目組合管理系統(tǒng)大全 項(xiàng)目組合管理系統(tǒng)是一種用于管理項(xiàng)目進(jìn)度、預(yù)算、資源等方面的軟件系統(tǒng)。它可以幫助企業(yè)有效地組織和管理項(xiàng)目,提高項(xiàng)目的成功率和績效。 以下是項(xiàng)目組合管理系統(tǒng)大全的…

    科研百科 2024年12月14日
    2
  • 中國16個重大科研項(xiàng)目

    中國16個重大科研項(xiàng)目: 近年來,中國政府一直致力于推動科技創(chuàng)新,加強(qiáng)國家實(shí)力。在這個背景下,中國出現(xiàn)了許多重大科研項(xiàng)目,以下是其中的16個: 1. 量子計(jì)算項(xiàng)目:該項(xiàng)目旨在開發(fā)一…

  • 工程項(xiàng)目合同管理軟件(合同項(xiàng)目管理系統(tǒng))

    合同項(xiàng)目管理系統(tǒng)合同項(xiàng)目管理系統(tǒng)具體來說,合同主趙方的法人和副部長是民法典,合同主張的一份子,被稱為合同中的一份子。合同分合同主體、副主、財務(wù)委托、經(jīng)濟(jì)委托、財產(chǎn)委托、行政委托、通…

    科研百科 2024年5月18日
    48
  • 課題沒結(jié)項(xiàng)能畢業(yè)嗎

    課題沒結(jié)項(xiàng)能畢業(yè)嗎? 在大學(xué)期間,完成一個課題是每個學(xué)生都夢寐以求的。然而,有時候一個課題可能會貫穿整個學(xué)期,甚至在整個學(xué)年,這可能會導(dǎo)致學(xué)生無法完成它。在這種情況下,學(xué)生是否還能…

    科研百科 2024年10月12日
    17
免费久久成人电影| 国产又粗又猛又爽又黄的性视| 激情交换文学| 日韩/在线91| 国产香蕉国产精品偷在线| 欧美激情精品久久久久久精油 | 欧美日韩国产成人高清视| 国产高跟内射| 日韩无码夜夜骚| 一本一道人妻久久一区二区三区| 超碰人人一区二区| 免费av在线哈| 亚洲国产精品一区二区无码| www.欧美无毛| 色月丁香| 国产第一页浮力影院入口| 特黄成人毛片| 国产精品电影无码| 亚洲无码国产精品久久综合| 黄色视频免费在线| 精品久久精品久久| 国内精品久久久久播中文字幕视频| 一区二区三区欧美| 精品欧美人妻| 久久人妻少妇偷人精品| 99久久免费精品国产免费高清| 99视频精品全部国产盗摄视频| 激情五月天丁香久久| 亚洲免费人成在线视频| 免费影院无码| 四虎无码影院| 青青青在线视频国产| 久久久不卡免费视频| 久久夜夜免费网站| 人妻无码毛片| 边摸边亲奶边做爽视频| 无码人妻丰满少妇又伦| 国产女人高潮嗷嗷叫视频在线| AV天天干| sihu影音| 成人H动漫精品一区二区无码 |