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.6
và 1.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?