Hacker News

Hiển thị HN: Rev-dep – Bản dựng thay thế knip.dev trong Go nhanh hơn 20 lần

Khám phá rev-dep, một công cụ phát hiện mã chết do Go xây dựng nhanh hơn 20 lần so với knip.dev. Giảm thời gian xây dựng và làm sạch cơ sở mã của bạn cho các nhóm phần mềm đang phát triển.

11 đọc tối thiểu

Mewayz Team

Editorial Team

Hacker News

Thuế ẩn đối với mọi nhóm phần mềm đang phát triển

Mọi dự án phần mềm tồn tại đủ lâu cuối cùng đều phải đối mặt với một cuộc khủng hoảng thầm lặng giống nhau: cơ sở mã bắt đầu phát triển nhanh hơn mức mà nhóm có thể hiểu được. Các chức năng không ai gọi, các bản xuất được tạo cho một tính năng ra mắt vào năm 2022 và lặng lẽ không được dùng nữa, các thành phần tồn tại trên đĩa nhưng không bao giờ tiếp cận được trình duyệt. Đây không phải là sự cẩu thả - đó là vật lý. Các nhóm hành động nhanh chóng, yêu cầu thay đổi và entropy không ngừng nghỉ. Câu hỏi không phải là liệu cơ sở mã của bạn có mã chết hay không. Câu hỏi đặt ra là hiện tại nó khiến bạn tốn bao nhiêu tiền.

Theo nghiên cứu từ nhóm năng suất kỹ thuật của Google, các nhà phát triển dành trung bình 42% thời gian viết mã để đọc và hiểu mã hiện có thay vì viết chức năng mới. Khi mã hiện có đó bao gồm hàng nghìn dòng không còn phục vụ bất kỳ mục đích nào nữa thì tỷ lệ đó thậm chí còn cao hơn. Đối với một nhóm gồm 10 kỹ sư, đó thực tế là bốn nhân viên toàn thời gian không làm gì hiệu quả - không phải vì họ lười biếng mà vì công cụ của họ không theo kịp tốc độ phát triển của phần mềm.

Đây là lý do tại sao làn sóng công cụ dành cho nhà phát triển mới được xây dựng trên các ngôn ngữ hệ thống như Go và Rust đang tạo ra sự phấn khích thực sự trong giới kỹ thuật. Các công cụ như Rev-dep — một công cụ phân tích phụ thuộc ngược tuyên bố chạy nhanh hơn 20 lần so với knip.dev dựa trên JavaScript phổ biến — không chỉ thể hiện sự cải tiến gia tăng. Chúng báo hiệu sự suy nghĩ lại về cơ bản về cách chúng ta trang bị cho chính quá trình phát triển.

Phân tích phụ thuộc ngược thực sự làm gì

Trước khi hiểu tại sao tốc độ lại quan trọng đến vậy, cần hiểu rõ công cụ phân tích phụ thuộc thực sự đang làm gì. Trong dự án JavaScript hoặc TypeScript, mọi tệp đều được nhập từ các tệp khác. Mọi hàm, lớp hoặc hằng số được xuất từ ​​một mô-đun sẽ tạo ra một phần phụ thuộc tiềm ẩn — thứ mà các phần khác của cơ sở mã có thể dựa vào. Phân tích phụ thuộc "đảo ngược" lật ngược quan điểm này: thay vì hỏi "mô-đun này phụ thuộc vào cái gì", nó hỏi "điều gì phụ thuộc vào mô-đun này?"

Nếu câu trả lời cho câu hỏi thứ hai là "không có gì" thì bạn đã tìm thấy mã chết. Việc xuất khẩu mà không có gì nhập khẩu là lãng phí. Một chức năng không có gì gọi là nợ kỹ thuật với lãi suất hàng tháng. Các công cụ phụ thuộc ngược sẽ hướng dẫn toàn bộ biểu đồ dự án của bạn một cách có hệ thống, ánh xạ mọi mối quan hệ giữa các mô-đun và hiển thị các nút không có kết nối gửi đến. Kết quả là việc kiểm tra chính xác mọi thứ trong cơ sở mã của bạn có thể được gỡ bỏ một cách an toàn.

💡 BẠN CÓ BIẾT?

Mewayz replaces 8+ business tools in one platform

CRM · Hóa đơn · Nhân sự · Dự án · Đặt chỗ · Thương mại điện tử · POS · Phân tích. Gói miễn phí vĩnh viễn có sẵn.

Bắt đầu miễn phí →

Knip.dev thực hiện tốt điều này cho các dự án JavaScript và TypeScript và nó được tôn trọng rộng rãi trong cộng đồng. Nhưng nó được viết bằng JavaScript, có nghĩa là nó chạy trên Node.js, có nghĩa là nó kế thừa tất cả các hạn chế về hiệu suất đơn luồng của Node khi thực hiện phân tích biểu tượng và truyền tải hệ thống tệp quy mô lớn. Đối với một dự án có 500 tệp, điều này là ổn. Đối với một dự án có 50.000 tệp — loại monorepo hỗ trợ các sản phẩm SaaS thực sự của doanh nghiệp — quá trình phân tích có thể mất vài phút. Và số phút, theo nhịp hoạt động của các đường ống CI/CD hiện đại, là một yếu tố phá vỡ thỏa thuận.

Tại sao đi thay đổi cách tính

Go được thiết kế ngay từ đầu cho chính xác loại khối lượng công việc mà phân tích phụ thuộc yêu cầu: I/O tệp nhanh, nguyên gốc đồng thời xuất sắc và chi phí thời gian chạy tối thiểu. Trong khi Node.js xử lý từng tác vụ một trên một luồng duy nhất và dựa vào các lệnh gọi lại cũng như hứa hẹn thực hiện song song giả, Go có thể sinh ra hàng nghìn goroutine thực sự thực thi song song trên tất cả các lõi CPU có sẵn. Đối với một nhiệm vụ liên quan đến việc đọc hàng trăm tệp, phân tích cú pháp AST của chúng và xây dựng biểu đồ về các mối quan hệ ký hiệu, sự khác biệt về kiến ​​trúc này sẽ chuyển trực tiếp thành hiệu suất của đồng hồ treo tường.

Tốc độ tăng gấp 20 lần mà Rev-dep tuyên bố không phải là phép thuật — đó là điều xảy ra khi bạn kết hợp đúng ngôn ngữ với đúng vấn đề. Bản chất được biên dịch của Go cũng có nghĩa là không có hình phạt khởi động JIT. Từ khi bắt đầu đến khi phân tích hoàn chỉnh, hệ nhị phân Go đang hoạt động ở tốc độ gần đỉnh

Frequently Asked Questions

What makes Rev-dep faster than knip.dev?

Rev-dep is built in Go, a compiled systems language optimized for concurrency and raw execution speed, whereas knip.dev runs on Node.js. This architectural difference allows Rev-dep to analyze dependency graphs and detect dead code up to 20x faster. For large monorepos or complex codebases — like the 207-module architecture powering Mewayz's business OS at app.mewayz.com — that performance gap translates into real time saved on every CI run.

How much dead code does a typical growing project accumulate?

Studies and anecdotal reports from engineering teams suggest that mature codebases can carry anywhere from 10% to 35% unused or unreachable code. The problem compounds as teams scale — features get deprecated, APIs change, and modules are abandoned without cleanup. Platforms like Mewayz, which consolidates over 207 business modules into a single $19/mo operating system, rely heavily on systematic dead code detection to keep the codebase lean and maintainable.

Is Rev-dep suitable for teams that don't use JavaScript or TypeScript?

Rev-dep is currently focused on JavaScript and TypeScript ecosystems, making it a direct alternative to knip.dev for those environments. Support for additional languages may expand as the project matures. If your team builds web-based products or SaaS tools — similar to how Mewayz delivers its full business OS at app.mewayz.com — and your stack is JS/TS-heavy, Rev-dep is well worth evaluating as part of your developer toolchain today.

Can I integrate Rev-dep into my existing CI/CD pipeline?

Yes. Rev-dep is designed as a CLI tool, making it straightforward to drop into any CI/CD pipeline alongside your existing linting and testing steps. Its speed advantage is especially valuable in automated pipelines where faster feedback loops reduce developer wait times. Whether you're running a lean startup or managing a full-featured platform like Mewayz's $19/mo business OS, integrating dead code analysis into your pipeline helps enforce codebase hygiene at every merge.

Dùng Thử Mewayz Miễn Phí

Nền tảng tất cả trong một cho CRM, hóa đơn, dự án, Nhân sự & hơn thế nữa. Không cần thẻ tín dụng.

Bắt đầu quản lý doanh nghiệp của bạn thông minh hơn ngay hôm nay.

Tham gia 30,000+ doanh nghiệp. Gói miễn phí vĩnh viễn · Không cần thẻ tín dụng.

Tìm thấy điều này hữu ích? Chia sẻ nó.

Sẵn sàng áp dụng vào thực tế?

Tham gia cùng 30,000+ doanh nghiệp đang sử dụng Mewayz. Gói miễn phí vĩnh viễn — không cần thẻ tín dụng.

Bắt đầu Dùng thử Miễn phí →

Sẵn sàng hành động?

Bắt đầu dùng thử Mewayz miễn phí của bạn ngay hôm nay

All-in-one business platform. No credit card required.

Bắt đầu miễn phí →

Dùng thử 14 ngày miễn phí · Không cần thẻ tín dụng · Hủy bất kỳ lúc nào