2016-05-19 13 views
7

Tôi đang cố gắng để có được Doxygen bỏ qua một mối quan hệ thừa kế khi vẽ sơ đồ cộng tác.Làm thế nào để có được Doxygen để bỏ qua mối quan hệ thừa kế?

Hãy nói rằng định nghĩa lớp học của tôi trông như thế này:

class Derived : public Base 
{ 
    int x; 
    int y; 
    int z; 
} 

Bây giờ, khi tôi chạy Doxygen, tôi không muốn nhìn thấy lớp cơ sở trong sơ đồ hợp tác tạo ra.

Thoạt nhìn, có vẻ như cách sạch nhất để thực hiện việc này là sử dụng chỉ thị EXCLUDE_SYMBOLS trong Doxyfile của tôi. Cụ thể:

EXCLUDE_SYMBOLS = Base 

Tuy nhiên, tôi thấy rằng điều này không hoạt động: Lớp cơ sở vẫn hiển thị trong sơ đồ cộng tác của tôi cho Nguồn gốc. Tôi đã thử điều này trên cả hai Doxygen 1.8.61.8.11 và với các hoán vị khác nhau của ký tự đại diện cơ bản (Base *, * as *, v.v.), cùng một hành vi. Lớp cơ sở luôn hiển thị trong sơ đồ cộng tác của tôi.

Để công bằng, tôi đã tìm thấy 2 cách giải quyết, nhưng cả hai đều liên quan đến việc đưa câu lệnh có điều kiện vào mã của tôi. Để hoàn chỉnh, tôi sẽ bao gồm cả ở đây:

Đầu tiên Phương pháp giải quyết:

class Derived : 
#ifndef DOXYGEN_SHOULD_SKIP_THIS 
    public Base 
#endif /* DOXYGEN_SHOULD_SKIP_THIS */ 
{ 
    ... 
} 

Sau đó đảm bảo rằng hai chỉ thị sau đây được thiết lập bên trong Doxyfile:

PREDEFINED = DOXYGEN_SHOULD_SKIP_THIS 
ENABLE_PREPROCESSING = YES 

Second Cách giải quyết Phương pháp:

class Derived : 
/// @cond DOXYGEN_IGNORE 
     public Base 
/// @endcond 
{ 
    ... 
} 

Để rõ ràng, những cách giải quyết này thực sự làm cho Doxygen bỏ qua mối quan hệ thừa kế, nhưng tôi không muốn gây ô nhiễm không cần thiết cơ sở mã của mình, đặc biệt nếu có một cách tốt hơn/sạch hơn để hoàn thành mục tiêu của tôi.

Câu hỏi của tôi là - Tại sao không EXCLUDE_SYMBOLS khiến Doxygen bỏ qua lớp Cơ sở của tôi khi nó vẽ sơ đồ cộng tác?

Trả lời

0

Nếu tôi không nhầm, EXCLUDE_SYMBOLS ngăn Doxygen tạo tài liệu cho các ký hiệu bị loại trừ, nhưng nó không ẩn chúng. Điều này có nghĩa là Doxygen sẽ không tạo tài liệu cho lớp Base của bạn, nhưng nó vẫn sẽ đề cập đến nó như là lớp cơ sở của Derived, giống như nếu Derived được kế thừa từ một lớp được cung cấp bởi thư viện bên ngoài, tên của lớp do thư viện cung cấp xuất hiện trong sơ đồ cộng tác.

Các vấn đề liên quan