TopDev

Ứng dụng Periphery và FengNiao để tối ưu hóa và clean code cho project iOS

minhdev 📖 16 phút đọc 💬 2 phản hồi

Ứng dụng Periphery và FengNiao để tối ưu hóa và clean code cho project iOS

Giới thiệu#

Trong quá trình phát triển ứng dụng iOS, việc duy trì code sạch và tối ưu là một thách thức lớn. Hai công cụ mạnh mẽ PeripheryFengNiao đã trở thành giải pháp hiệu quả giúp iOS developers loại bỏ code không sử dụng, tối ưu hóa performance và giữ cho project luôn gọn gàng.

Periphery là gì?#

Periphery là một công cụ static analysis mã nguồn mở được thiết kế đặc biệt cho Swift và Objective-C. Công cụ này giúp phát hiện và loại bỏ:

  • Unused code (code không được sử dụng)

  • Dead functions và methods

  • Unused imports

  • Redundant protocols

  • Unused properties và variables

Tính năng chính của Periphery#

  • Phân tích toàn diện: Quét toàn bộ codebase để tìm ra code thừa

  • Hỗ trợ đa platform: Tương thích với iOS, macOS, watchOS, tvOS

  • Integration linh hoạt: Dễ dàng tích hợp vào CI/CD pipeline

  • Báo cáo chi tiết: Cung cấp thông tin cụ thể về vị trí code cần loại bỏ

FengNiao - Công cụ dọn dẹp tài nguyên iOS#

FengNiao (phượng điểu) là công cụ command-line chuyên dụng để tìm và xóa các tài nguyên không sử dụng trong iOS project, bao gồm:

  • Hình ảnh (images)

  • Sounds files

  • Data files

  • Storyboard resources

  • Localization files

Lợi ích của FengNiao#

  • Giảm kích thước app: Loại bỏ assets không dùng, giảm bundle size

  • Tăng tốc build time: Ít tài nguyên cần xử lý

  • Dễ sử dụng: Interface đơn giản, dễ cấu hình

  • An toàn: Kiểm tra kỹ lưỡng trước khi xóa

Hướng dẫn cài đặt và sử dụng#

Cài đặt Periphery#

`

Sử dụng Homebrew

brew install peripheryapp/periphery/periphery

Hoặc sử dụng Mint

mint install peripheryapp/periphery `

Cài đặt FengNiao#

`

Sử dụng Homebrew

brew install onevcat/tap/FengNiao

Hoặc download binary từ GitHub

`

Sử dụng Periphery#

`

Scan project để tìm unused code

periphery scan --project YourProject.xcodeproj --schemes YourScheme

Với các option tùy chỉnh

periphery scan --project YourProject.xcodeproj --schemes YourScheme --format xcode `

Sử dụng FengNiao#

`

Scan project để tìm unused resources

fengniao --project /path/to/your/project

Xóa unused resources (cẩn thận!)

fengniao --project /path/to/your/project --delete `

Workflow tối ưu để clean code iOS#

Bước 1: Phân tích với Periphery#

`

Tạo báo cáo chi tiết

periphery scan --project MyApp.xcodeproj --schemes MyApp --format json > unused_code_report.json `

Bước 2: Dọn dẹp resources với FengNiao#

`

Tìm unused assets

fengniao --project ./MyApp --force-delete-empty-folders `

Bước 3: Tích hợp vào CI/CD#

Thêm script vào .github/workflows/code_cleanup.yml:

name: Code Cleanup Check on: [pull_request] jobs: cleanup-check: runs-on: macos-latest steps: - uses: actions/checkout@v3 - name: Install Periphery run: brew install peripheryapp/periphery/periphery - name: Run Periphery run: periphery scan --project MyApp.xcodeproj --schemes MyApp

Best Practices khi sử dụng Periphery và FengNiao#

1. Backup trước khi xóa#

`

Tạo backup project

git add . && git commit -m "Backup before cleanup" `

2. Sử dụng ignore files#

Tạo .periphery.yml:

` ignore:

  • "/Generated/"
  • "/ThirdParty/"
  • "/Pods/" `

3. Kiểm tra thủ công#

  • Review từng file trước khi xóa

  • Test ứng dụng sau khi cleanup

  • Kiểm tra dynamic loading code

4. Chạy định kỳ#

`

Tạo script automation

#!/bin/bash echo "Starting iOS project cleanup..." periphery scan --project MyApp.xcodeproj --schemes MyApp fengniao --project ./ --force-delete-empty-folders echo "Cleanup completed!" `

Lợi ích của việc sử dụng Periphery và FengNiao#

Performance Benefits#

  • Giảm build time: Ít code và resources cần compile

  • Giảm app size: Bundle nhỏ hơn, download nhanh hơn

  • Tăng tốc CI/CD: Pipeline chạy nhanh hơn

Code Quality Benefits#

  • Code maintainability: Dễ đọc, dễ hiểu hơn

  • Reduced complexity: Ít dependencies phức tạp

  • Better navigation: IDE hoạt động mượt mà hơn

Business Benefits#

  • Faster deployment: Time-to-market nhanh hơn

  • Lower costs: Ít tài nguyên server cần thiết

  • Better user experience: App khởi động nhanh hơn

Troubleshooting thường gặp#

Periphery báo false positive#

`

Sử dụng configuration file để ignore

periphery scan --config .periphery.yml `

FengNiao xóa nhầm assets#

`

Khôi phục từ git

git checkout HEAD -- path/to/deleted/file `

Integration với Xcode#

Thêm Run Script Phase:

if which periphery >/dev/null; then periphery scan --project ${PROJECT_NAME}.xcodeproj --schemes ${SCHEME_NAME} --format xcode else echo "Periphery not installed" fi

Kết luận#

PeripheryFengNiao là hai công cụ không thể thiếu trong toolkit của iOS developer hiện đại. Việc sử dụng thường xuyên hai công cụ này sẽ giúp:

  • Giữ codebase luôn sạch sẽ và tối ưu

  • Giảm thiểu technical debt

  • Tăng hiệu suất phát triển

  • Cải thiện performance ứng dụng

Hãy tích hợp Periphery và FengNiao vào workflow phát triển của bạn để trải nghiệm sự khác biệt trong việc maintain iOS project một cách chuyên nghiệp.



Tags: iOS Development, Swift, Code Optimization, Periphery, FengNiao, Clean Code, iOS Tools, Static Analysis, Performance Optimization, Mobile Development

2 phản hồi

  1. minhdev #1

    Với tốc độ phát triển nhanh chóng của các dự án iOS, việc duy trì một codebase gọn gàng, hiệu quả là vô cùng quan trọng. Code dư thừa (dead code) và tài nguyên không sử dụng (unused resources) không chỉ làm tăng kích thước ứng dụng mà còn làm chậm thời gian biên dịch (build time), gây khó khăn trong việc bảo trì và phát triển. Trong bài viết này, chúng ta sẽ khám phá cách ứng dụng hai công cụ mạnh mẽ là PeripheryFengNiao để tối ưu hóa và "clean code" cho dự án iOS của bạn.



    I. Tại sao cần tối ưu hóa và clean code cho dự án iOS?#

    • Giảm kích thước ứng dụng: Loại bỏ code và tài nguyên không dùng đến giúp giảm dung lượng file cài đặt (IPA), mang lại trải nghiệm tải xuống nhanh hơn và tiết kiệm không gian lưu trữ cho người dùng.

    • Tăng tốc độ biên dịch (Build Time): Code và tài nguyên dư thừa làm tăng khối lượng công việc cho trình biên dịch, dẫn đến thời gian build lâu hơn, ảnh hưởng đến năng suất của nhà phát triển.

    • Cải thiện hiệu suất ứng dụng: Mặc dù không phải lúc nào cũng trực tiếp ảnh hưởng đến hiệu suất runtime, việc loại bỏ code không cần thiết có thể gián tiếp giảm tải cho bộ nhớ và CPU.

    • Dễ dàng bảo trì và phát triển: Một codebase sạch sẽ, gọn gàng sẽ dễ hiểu, dễ đọc và dễ bảo trì hơn, giúp các nhà phát triển mới nhanh chóng làm quen và giảm thiểu lỗi phát sinh.



    II. Periphery: Công cụ "dọn dẹp" code Swift hiệu quả#

    Periphery là một công cụ mã nguồn mở được thiết kế để phát hiện các khai báo không sử dụng (unused declarations) trong các dự án Swift. Nó có khả năng xác định nhiều loại "dead code" khác nhau, bao gồm:

    • Class, Struct, Protocol, Enum không được sử dụng: Các định nghĩa loại không có tham chiếu nào trong toàn bộ dự án.

    • Function, Property, Constructor không được gọi/truy cập: Các thành phần trong một kiểu dữ liệu nhưng không bao giờ được sử dụng.

    • Tham số hàm không sử dụng: Các tham số được khai báo trong một hàm nhưng không được dùng đến trong phần thân hàm.

    • Code dư thừa trong các override method và protocol: Periphery đủ thông minh để nhận biết các trường hợp này.

    Cách Periphery hoạt động#

    Periphery sử dụng SourceKit framework của Xcode để xây dựng một biểu đồ quan hệ trong bộ nhớ của dự án, sau đó phân tích các tệp mã nguồn để tìm các khai báo không có tham chiếu.

    Hướng dẫn cài đặt và sử dụng Periphery#

    1. Cài đặt Periphery

    Cách dễ nhất để cài đặt Periphery là sử dụng Homebrew:

    brew install peripheryapp/periphery/periphery

    2. Thiết lập và quét dự án

    Để bắt đầu, điều hướng đến thư mục gốc của dự án iOS của bạn trong Terminal và chạy lệnh sau:

    periphery scan --setup

    Lệnh này sẽ hướng dẫn bạn qua quá trình thiết lập, cho phép bạn chọn dự án Xcode, target, scheme và các tùy chọn cấu hình khác. Sau khi hoàn tất, Periphery sẽ lưu cấu hình vào tệp .periphery.yml trong thư mục dự án của bạn.

    Sau khi thiết lập, bạn có thể chạy quét bất cứ lúc nào bằng cách:

    periphery scan

    Periphery sẽ hiển thị danh sách các khai báo không sử dụng được tìm thấy. Bạn cần xem xét kỹ lưỡng từng kết quả để đảm bảo rằng đó thực sự là "dead code" trước khi xóa, vì đôi khi có những trường hợp đặc biệt (ví dụ: code được sử dụng thông qua Objective-C runtime hoặc reflection) mà Periphery có thể báo cáo sai.

    3. Tích hợp vào Xcode (tùy chọn)

    Bạn có thể tích hợp Periphery vào một giai đoạn "Run Script" trong Build Phases của target để tự động quét mỗi khi build dự án. Điều này giúp bạn dễ dàng theo dõi và xử lý "dead code" ngay lập tức.



    III. FengNiao: Loại bỏ tài nguyên không sử dụng#

    Bên cạnh code, các dự án iOS thường tích lũy rất nhiều tài nguyên không sử dụng như hình ảnh, tệp âm thanh, hoặc các tệp khác. Những tài nguyên này có thể chiếm một phần đáng kể trong kích thước ứng dụng. FengNiao là một công cụ dòng lệnh đơn giản nhưng hiệu quả để giải quyết vấn đề này.

    Cách FengNiao hoạt động#

    FengNiao quét dự án Xcode của bạn để tìm tất cả các tệp tài nguyên hình ảnh và sau đó so sánh chúng với các chuỗi tham chiếu trong mã nguồn (Swift, Objective-C, Storyboards, XIBs). Bất kỳ tệp tài nguyên nào không có tham chiếu sẽ được coi là không sử dụng và được đưa ra để bạn xem xét xóa.

    Hướng dẫn cài đặt và sử dụng FengNiao#

    1. Cài đặt FengNiao

    Bạn có thể cài đặt FengNiao qua Homebrew:

    brew install fengniao

    Hoặc tải mã nguồn từ GitHub và chạy script cài đặt:

    git clone https://github.com/onevcat/FengNiao.git cd FengNiao ./install.sh

    2. Quét và xóa tài nguyên

    Điều hướng đến thư mục gốc của dự án iOS trong Terminal và chạy lệnh:

    fengniao

    FengNiao sẽ quét và hiển thị danh sách các tệp tài nguyên không sử dụng. Nó sẽ hỏi bạn có muốn xóa chúng hay không. Luôn đảm bảo bạn đã sao lưu dự án hoặc đang sử dụng hệ thống kiểm soát phiên bản (như Git) trước khi đồng ý xóa bất kỳ tệp nào.

    FengNiao cũng hỗ trợ các tùy chọn như:

    • --project <path>: Chỉ định đường dẫn đến thư mục gốc của dự án.

    • --force: Xóa các tệp không sử dụng mà không cần hỏi.

    • --exclude <path>: Loại trừ các đường dẫn cụ thể khỏi quá trình tìm kiếm.

    3. Tích hợp vào Xcode

    Tương tự như Periphery, bạn có thể thêm FengNiao vào một giai đoạn "Run Script" trong Build Phases của target Xcode. Điều này sẽ giúp bạn tự động kiểm tra và dọn dẹp tài nguyên không sử dụng mỗi khi build dự án. Đặt script này trước giai đoạn "Copy Bundle Resources" để đảm bảo các tệp không sử dụng được xóa trước khi đóng gói ứng dụng.

    Ví dụ:

    if which fengniao >/dev/null; then fengniao --project "${SRCROOT}" else echo "warning: FengNiao not installed, install it with 'brew install fengniao'" fi



    IV. Kết hợp Periphery và FengNiao để tối ưu hóa toàn diện#

    Bằng cách sử dụng cả Periphery và FengNiao, bạn có thể thực hiện một quy trình tối ưu hóa và "clean code" toàn diện cho dự án iOS của mình:

    • Dọn dẹp code Swift dư thừa với Periphery: Giúp loại bỏ các khai báo không sử dụng, làm gọn codebase.

    • Xóa tài nguyên không dùng đến với FengNiao: Giảm kích thước ứng dụng đáng kể bằng cách loại bỏ hình ảnh, âm thanh, v.v., không còn cần thiết.

    Việc tích hợp các công cụ này vào quy trình phát triển hàng ngày (ví dụ: chạy trên CI/CD hoặc định kỳ hàng tuần) sẽ giúp duy trì một codebase khỏe mạnh, dễ quản lý và hiệu quả hơn.



    Kết luận#

    Tối ưu hóa và clean code không chỉ là công việc một lần mà là một quá trình liên tục. Periphery và FengNiao là những "trợ thủ" đắc lực giúp các nhà phát triển iOS duy trì chất lượng code và hiệu suất ứng dụng. Bằng cách áp dụng các công cụ này, bạn sẽ tạo ra những ứng dụng nhỏ gọn hơn, nhanh hơn và dễ bảo trì hơn, mang lại trải nghiệm tốt nhất cho cả người dùng và đội ngũ phát triển.

    Bạn đã từng sử dụng Periphery hay FengNiao chưa? Hãy chia sẻ kinh nghiệm của bạn trong phần bình luận nhé!

  2. minhdev #2

    Trong quá trình phát triển ứng dụng iOS, việc duy trì một codebase sạch, dễ bảo trì là yếu tố then chốt giúp tiết kiệm thời gian, giảm lỗi và nâng cao hiệu suất nhóm phát triển. Hai công cụ PeripheryFengNiao đang ngày càng được nhiều lập trình viên iOS lựa chọn để tối ưu hóa và clean code. Vậy Periphery và FengNiao là gì? Chúng giúp ích gì cho dự án iOS của bạn? Hãy cùng tìm hiểu trong bài viết dưới đây.



    1. Clean Code Là Gì Và Tại Sao Quan Trọng?#

    Trước khi đi sâu vào từng công cụ, chúng ta cần hiểu rõ “clean code” nghĩa là gì. Clean code là mã nguồn được viết rõ ràng, dễ đọc, dễ hiểu và dễ bảo trì. Một số lợi ích của clean code:

    • Dễ mở rộng và chỉnh sửa.

    • Giảm thiểu lỗi logic và bug tiềm ẩn.

    • Giúp các thành viên mới dễ dàng tiếp cận project.

    • Tăng tốc độ review và kiểm thử.

    Tuy nhiên, trong các dự án thực tế, việc để sót lại những đoạn mã không sử dụng (dead code) hoặc tài nguyên thừa là điều khó tránh khỏi. Lúc này, Periphery và FengNiao sẽ trở thành “trợ thủ đắc lực” giúp bạn phát hiện và loại bỏ những thành phần không cần thiết.



    2. Giới Thiệu Về Periphery#

    2.1. Periphery Là Gì?#

    Periphery là một công cụ mã nguồn mở giúp phát hiện:

    • Các hàm, class, biến, struct, enum không được sử dụng.

    • Các khai báo @objc, public, internal không cần thiết.

    • Các protocol không được implement.

    Nói cách khác, Periphery giúp bạn loại bỏ những đoạn mã "chết" hoặc không ảnh hưởng đến chương trình nếu bị xoá.

    2.2. Cách Cài Đặt Periphery#

    Bạn có thể cài đặt Periphery qua Homebrew:

    brew install peripheryapp/periphery/periphery

    Hoặc cài qua Mint:

    mint install peripheryapp/periphery

    2.3. Cách Sử Dụng Cơ Bản#

    Khởi chạy Periphery trong thư mục dự án:

    periphery scan --workspace YourProject.xcworkspace --scheme YourScheme

    Một số tùy chọn hữu ích:

    • --targets: chỉ định target cụ thể để scan.

    • --retain-public: giữ lại các API public (nếu bạn làm framework).

    • --format: định dạng output (plain, json, xcode).

    2.4. Lưu Ý Khi Dùng Periphery#

    • Cần build project trước khi chạy scan.

    • Có thể false-positive nếu code bị gọi từ Objective-C hoặc runtime selector.

    • Nên kết hợp với CI/CD để cảnh báo khi có dead code mới.



    3. Giới Thiệu Về FengNiao#

    3.1. FengNiao Là Gì?#

    FengNiao là công cụ mã nguồn mở giúp phát hiện và xoá tài nguyên không sử dụng trong project iOS, đặc biệt là:

    • Hình ảnh (.png, .jpg, .pdf)

    • File .strings, .plist không còn được tham chiếu

    • Asset catalog

    Tài nguyên thừa không chỉ làm tăng kích thước ứng dụng mà còn gây khó khăn khi refactor code hoặc quản lý multi-language.

    3.2. Cách Cài Đặt FengNiao#

    Cài đặt đơn giản qua Homebrew:

    brew install fengniao

    Hoặc build từ source:

    git clone https://github.com/onevcat/FengNiao.git cd FengNiao swift build -c release

    3.3. Sử Dụng FengNiao Để Quét File Thừa#

    Chạy lệnh sau để quét toàn bộ thư mục dự án:

    fengniao --project YourProjectPath

    Một số option hữu ích:

    • --exclude: loại trừ thư mục khỏi quá trình quét.

    • --delete: tự động xoá các file thừa.

    3.4. Ưu Điểm Của FengNiao#

    • Dễ sử dụng, tốc độ quét nhanh.

    • Giúp giảm dung lượng app.

    • Tránh nguy cơ để sót resource cũ, lỗi thời.



    4. So Sánh Nhanh Periphery Và FengNiao#

    Tiêu chí Periphery FengNiao
    Mục tiêu Phát hiện mã không sử dụng Phát hiện tài nguyên không dùng
    Đối tượng tác động Swift code (function, class,...) Ảnh, file plist, asset
    Cách hoạt động Phân tích AST & build logs Quét tệp và phân tích đường dẫn
    Tính tự động Tích hợp CI dễ dàng Có thể kết hợp script tự động


    5. Gợi Ý Workflow Clean Code iOS Hiệu Quả#

    Để tối ưu hóa codebase một cách hệ thống, bạn có thể áp dụng workflow sau:

    • Trước mỗi release:

      Chạy Periphery scan để loại bỏ dead code.

      • Chạy FengNiao để xoá tài nguyên không dùng.
    • Tích hợp vào CI/CD:

      Thiết lập GitHub Action hoặc Bitrise để chạy Periphery/FengNiao định kỳ.

    • Code review:

      Gắn kết quả phân tích vào pull request để team dễ dàng xử lý.

    • Tự động xoá file thừa:

      Tùy chọn --delete của FengNiao để làm sạch sau mỗi lần build release.



    6. Kết Luận#

    Periphery và FengNiao là hai công cụ mạnh mẽ giúp các lập trình viên iOS tối ưu hóa và clean code một cách chuyên nghiệp. Trong môi trường phát triển ngày càng phức tạp, việc duy trì một codebase sạch, nhẹ và dễ hiểu là ưu tiên hàng đầu. Bằng cách kết hợp sử dụng Periphery và FengNiao trong quy trình phát triển, bạn không chỉ tăng chất lượng phần mềm mà còn góp phần xây dựng một hệ sinh thái làm việc chuyên nghiệp hơn.



    7. Từ Khóa :#

    • clean code iOS

    • tối ưu hóa Swift project

    • remove unused code Swift

    • dọn dẹp project iOS

    • Periphery Swift tool

    • FengNiao iOS image cleanup

    • xoá tài nguyên không dùng iOS

    • công cụ clean code cho iOS

    • dead code detector Swift

    • iOS project optimization tools

Bài liên quan trong #Học Lập Trình

✓ Đã sao chép link