无码人妻丰满熟妇奶水区码,麻豆一区区三,亚洲日韩欧美精品综合,亚洲无码地址

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

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

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

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

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

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

  • ……

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

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

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

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

我們需要怎樣的工具?

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

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

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

  • 定制化開發(fā)。

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

    • 自動(dòng)化重構(gòu)?;谝阎膲奈兜?,對(duì)應(yīng)的代碼位置信息,對(duì)代碼進(jìn)行自動(dòng)化重構(gòu)。

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

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

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

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

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

語法分析

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

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

結(jié)果及可視化

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

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

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

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

  • 其它。

自動(dòng)化重構(gòu)

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

  • 多代碼庫(kù)間的未使用類刪除。

  • 多代碼庫(kù)間的聚類。

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

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

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

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

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

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

在 Modernizing 里,針對(duì)于單個(gè)編程語言的工具有:

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

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

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

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

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

針對(duì)于多語言的工具,我們有:

  • 基于 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,來對(duì)系統(tǒng)架構(gòu)進(jìn)行守護(hù)。

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

我們使用一系列不同的語言和工具來開發(fā)這些軟件,因?yàn)椴煌膱?chǎng)景之下,都會(huì)有不同的選擇。

下一步?

現(xiàn)有的工具都是分散的,不同工具之前的數(shù)據(jù)格式不盡相同,缺乏統(tǒng)一的數(shù)據(jù)格式。在輸出格式不統(tǒng)一時(shí),我們就難以進(jìn)行標(biāo)準(zhǔn)的可視化,諸如于我們正在構(gòu)建 codecity 用于在元宇宙里,對(duì)遺留系統(tǒng)進(jìn)行可視化,又或者是正在從 ArchGuard 中拆分的前端可視化部分,以用于復(fù)用。理想的情況下,它應(yīng)該像是一個(gè) 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)僅代表作者本人。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如發(fā)現(xiàn)本站有涉嫌抄襲侵權(quán)/違法違規(guī)的內(nèi)容, 請(qǐng)發(fā)送郵件至 舉報(bào),一經(jīng)查實(shí),本站將立刻刪除。

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

相關(guān)推薦

  • 留學(xué)生如何搞科研項(xiàng)目的

    作為留學(xué)生,如何搞科研項(xiàng)目是一個(gè)值得探討的話題。在全球化的今天,留學(xué)生在全球范圍內(nèi)尋找機(jī)會(huì),為自己爭(zhēng)取更好的學(xué)術(shù)成績(jī)和職業(yè)發(fā)展。那么,作為留學(xué)生,如何搞科研項(xiàng)目呢?本文將就此提供一…

    科研百科 2025年5月18日
    0
  • 市郵政管理局召開2023年半年工作會(huì)議(市郵政管理局召開2023年半年工作會(huì)議精神)

    近日,市郵政管理局召開2023年半年工作會(huì)議,傳達(dá)2023年全國(guó)郵政管理系統(tǒng)半年工作會(huì)議精神,總結(jié)上半年工作,部署下半年任務(wù),推進(jìn)主題教育走深走實(shí)。局黨組書記、局長(zhǎng)王東作工作報(bào)告,…

    科研百科 2023年11月14日
    163
  • 學(xué)校創(chuàng)新科研項(xiàng)目有哪些

    學(xué)校創(chuàng)新科研項(xiàng)目有哪些 近年來,隨著科技的不斷發(fā)展,學(xué)校在創(chuàng)新教育方面也在不斷努力。為了推動(dòng)學(xué)校的創(chuàng)新能力,學(xué)校推出了一系列創(chuàng)新科研項(xiàng)目,并吸引了許多師生參與。本文將介紹學(xué)校創(chuàng)新科…

    科研百科 2025年5月9日
    1
  • docker項(xiàng)目推薦

    Docker項(xiàng)目推薦 Docker是一個(gè)非常流行的容器化平臺(tái),可以讓開發(fā)人員輕松地構(gòu)建、部署和運(yùn)行應(yīng)用程序。雖然Docker已經(jīng)發(fā)展了很多年,但它仍然是一個(gè)非常強(qiáng)大的工具,可以用于…

    科研百科 2024年11月28日
    23
  • 這幾款良心軟件,大家千萬別錯(cuò)過(這幾款良心軟件,大家千萬別錯(cuò)過)

    軟件一:PotPlayer PotPlayer 是一款簡(jiǎn)單實(shí)用的視頻播放器。發(fā)現(xiàn)不愧是良心軟件,大小只有20M,同類軟件內(nèi)存占用最低。不要小看它的體積小和簡(jiǎn)單,但它也非常強(qiáng)大。支持…

    科研百科 2023年8月31日
    201
  • 三品總包

    三品總包: 一個(gè)追求卓越的企業(yè)級(jí)總包服務(wù) 三品總包(Sinotrans General Packaging)是一家專注于總包服務(wù)的領(lǐng)先企業(yè),成立于2000年,總部位于中國(guó)上海。作為…

    科研百科 2024年11月12日
    0
  • 大連安全管理系統(tǒng)項(xiàng)目顧問

    作為大連安全管理系統(tǒng)項(xiàng)目顧問,我的職責(zé)是為項(xiàng)目提供技術(shù)支持,確保項(xiàng)目按時(shí)按質(zhì)完成。在這個(gè)項(xiàng)目中,我與其他顧問團(tuán)隊(duì)一起工作,負(fù)責(zé)制定項(xiàng)目計(jì)劃,管理項(xiàng)目進(jìn)度,協(xié)調(diào)團(tuán)隊(duì)內(nèi)部工作,確保項(xiàng)目…

    科研百科 2025年6月30日
    1
  • 稱重管理軟件系統(tǒng)免費(fèi)版(衡器寶稱重管理系統(tǒng))

    稱重管理軟件系統(tǒng)免費(fèi)版,是一款針對(duì)倉(cāng)儲(chǔ)物流企業(yè)的及時(shí)稱重管理軟件系統(tǒng)。它擁有強(qiáng)大的稱重?cái)?shù)據(jù)分析能力,可以幫助企業(yè)實(shí)現(xiàn)及時(shí)、精準(zhǔn)的稱重管理,有效提升企業(yè)生產(chǎn)效率和倉(cāng)儲(chǔ)物流管理水平。 …

    科研百科 2023年12月14日
    164
  • 銷售人員管理制度(保險(xiǎn)法銷售人員管理制度)

    第一章 總則 第一條為加強(qiáng)本公司銷售管理,提升經(jīng)營(yíng)績(jī)效,將銷售人員之業(yè)務(wù)活動(dòng)予以制度化,特制定本制度。 第二條凡本公司銷售人員之管理,除另有規(guī)定外,均依照本制度所規(guī)范的體制管理。 …

    科研百科 2024年2月4日
    106
  • 科研項(xiàng)目的質(zhì)量

    科研項(xiàng)目的質(zhì)量 科研項(xiàng)目的質(zhì)量是現(xiàn)代科學(xué)研究中至關(guān)重要的一部分。一個(gè)高質(zhì)量的科研項(xiàng)目應(yīng)該具備以下幾個(gè)特點(diǎn): 1. 明確的研究目標(biāo)和計(jì)劃 研究目標(biāo)和計(jì)劃是科研項(xiàng)目的核心。它們明確科研…

    科研百科 2025年3月2日
    0
国产精品女同在线播放| 大香蕉一二| 一区二区国产在线久久大香蕉| 日韩男人天堂AV免费看| 久久精品国产亚洲 AV 香蕉情| 看免费的大屁股美女天天干天天舔| 日日嗨AV亚洲一区二区| 蜜臀久久国产精品伦子伦| 国产精品久久久久久久久久久搜索 | 香蕉国产成人AV| 夜夜晦免费Av一区二区三区| 国产老熟女免费精品| 日韩3p中文二区| 中文字日本人妻久久久| 久久艹国产精品| 国产精品777777| 91P二区在线| 日韩久久综合色色色色色| 久久久婷婷影院| x8手机成人在线视频| 91精品国产福利姬| 黄色香蕉视频二区三区| 区一区二精品在线| 久艹视频免费观看| 图区一区二区综合 欧美| 亚洲公交中文字幕人妻91| 亚洲老骚| 日韩性小说视频| 99精品视频蜜桃| 欧美日韩精品九九| 欧美日韩韩不卡| 欧美日本大码一区二区三区四区| 91 蜜臀一区二区| 无码熟女下载| 嗯嗯嗯啊啊啊~在线观看| 日本高清无卡二区| 亚洲AV熟女高潮一区二区| 黄色影色\院| 国产精品污www久久久| 色呦呦日本| 日本h在线观看不卡免费|