Tôi đang viết một hướng dẫn cho Ebrowse và sẽ phát hành nó trong tuần này .Ebrowse là một trình phân tích cú pháp nhanh được sử dụng để xử lý các tệp nguồn C ++ để tạo ra một cơ sở dữ liệu chứa phân cấp lớp mà sau đó được Emacs xử lý để tạo ra một biểu diễn cây lớp. Nó hơi giống GNU Global, nhưng được tích hợp vào Emacs và tạo ra một cây lớp, do đó sẽ mất nhiều thời gian hơn để xử lý trong cây nguồn lớn.
Để sử dụng Ebrowse:
find . -name '*.cpp' -or -name '*.h' | ebrowse
Thêm phần mở rộng nếu bạn muốn. Nếu dự án của bạn chỉ có hàng trăm tệp, thì = Ebrowse = hoạt động thực sự tốt. Sau khi thực hiện lệnh, một tệp có tên BROWSE
được tạo ra; đây là cơ sở dữ liệu chứa phân cấp lớp. Chỉ cần mở tệp này và Emacs tự động nhận ra tệp và xử lý tệp. Sau khi xử lý xong cơ sở dữ liệu, Emacs hiển thị một chỉ mục của tất cả các lớp trong cơ sở dữ liệu theo định dạng cây: nếu một lớp có nguồn gốc từ một lớp, nó được lồng bên trong lớp cha. Bộ đệm này được gọi là a Tree buffer
. Emacs cung cấp ba cách để tương tác với Ebrowse
:
Tree
đệm: một bộ đệm hiển thị cây.
Member
đệm: một bộ đệm hiển thị các thành viên của mỗi lớp. Bạn có thể chuyển đổi giữa các khai báo và định nghĩa của một lớp và chuyển đến vị trí của mỗi trong tệp nguồn tương ứng.
Source
đệm: bộ đệm mã của bạn. Bạn có thể tương tác Ebrowse
cơ sở dữ liệu như tìm và xem (mở để chỉ đọc) và định nghĩa, mở a = Member = bộ đệm của một lớp có chứa thẻ tại điểm ...
Nếu bạn có một dự án lớn (tức là hơn 10000 tệp cpp), nhưng tất cả các lớp đều nằm trong .h
tệp, thì đừng thêm .cpp
nếu không sẽ mất rất nhiều thời gian để tạo BROWSE
tệp. Bạn sẽ mất khả năng chuyển sang định nghĩa mặc dù; nhưng điều này có thể được thực hiện bằng cách sử dụng ctags
hoặc GNU Global
. Điều quan trọng nhất là xem hệ thống phân cấp lớp Tree buffer
và đây là lợi thế của Ebrowse.
Hướng dẫn WIP ở đây .
Cập nhật : Ngoài ra, bạn có thể sử dụng doxygen để tạo tất cả các loại biểu đồ (biểu đồ người gọi / callee, biểu đồ phụ thuộc, biểu đồ phân cấp lớp ...) nhưng cũng mất nhiều thời gian để tạo tất cả, ngay cả đối với cây nguồn nhỏ như ipxe . Đây không phải doxygen
là chậm, trên thực tế nó khá tối ưu, nhưng để tính toán sự phụ thuộc cho toàn bộ cơ sở mã không phải là một nhiệm vụ tầm thường.
Phần thưởng : Nếu bạn làm việc với C và muốn xem biểu đồ cuộc gọi, hãy sử dụng GNU Cflow. Xem thông báo Reddit của tôi .