2012-10-29 31 views
8

Tôi đang cố gắng ghi lại một lớp python bằng Doxygen. Lớp này trưng ra một tập hợp các thuộc tính trên d-bus, nhưng chúng không có các getters/setters công khai tương ứng trong lớp python. Thay vào đó, chúng được thực hiện thông qua giao diện thuộc tính d-bus (Set/Get/GetAll/Introspect).Ghi lại một thành viên không tồn tại với Doxygen

Những gì tôi muốn làm là để có thể ghi lại các đặc tính này sử dụng một cái gì đó như thế này:

## @property package::Class::Name description

Toàn bộ gói :: Class làm việc (cùng một phương pháp phát hiện các chức năng, vì vậy mà nó tìm thấy bên phải lớp học).

Khi chạy doxygen tôi nhận được lỗi sau:

warning: documented function ``package::Class::Name' was not declared or defined.

tôi có thể sống với một cảnh báo, nhưng tiếc là tài sản không xuất hiện trong các tài liệu được tạo ra cho lớp, vì vậy nó không chỉ là một cảnh báo, nhưng nó cũng bị tắt tiếng.

Vì vậy, câu hỏi của tôi là, làm cách nào, nếu có thể, tôi có làm cho thành viên thuộc tính không tồn tại xuất hiện trong tài liệu được tạo không?

Trả lời

1

Xác định các thuộc tính bên trong một khối if 0::

## @class X 
## @brief this is useless 
class X: 
    if 0: 
     ## @brief whatevs is a property that doesn't exist in spacetime 
     ## 
     ## It is designed to make bunny cry. 
     whatevs = property 

Điều này sẽ gây ra nó để tồn tại trong tài liệu hướng dẫn (thử nghiệm với doxygen 1.8.1.2-1 trên debian-squeeze). Thuộc tính sẽ không bao giờ được tạo ra để tồn tại trong thời gian chạy, và trên thực tế nó trông giống như trình tối ưu hóa bytecode python loại bỏ nếu câu lệnh và toàn bộ cơ thể của nó.

0

Tôi nhìn vào một cái gì đó tương tự trước đó và không thể tìm thấy một cách trực tiếp để dỗ Doxygen vào tài liệu một thành viên không xác định. Có hai kludges cơ bản bạn có thể sử dụng ở đây:

1.) tạo đối tượng giả (hoặc thành viên giả) cho doxygen vào khoảng không quảng cáo không tồn tại trong mã trực tiếp.

2.) Nếu điều chỉnh bạn cần có thể dự đoán được và thường xuyên bạn có thể viết INPUT_FILTER cho doxygen để lấy tệp của bạn và chuyển đổi chúng trước khi phân tích cú pháp. Có một số vấn đề với phương pháp này - chủ yếu là nếu bạn có kế hoạch bao gồm mã trong tài liệu và bộ lọc phải thêm/xóa các dòng khỏi tệp, số dòng nó cho biết sẽ bị tắt và mọi cửa sổ mã được hiển thị bằng tài liệu sẽ bị tắt bởi số dòng đó. Bạn cũng có thể kiểm tra tùy chọn để lọc các nguồn được hiển thị để điều chỉnh cho điều này, nhưng tùy thuộc vào người tiêu dùng tài liệu của bạn là ai, nó có thể gây nhầm lẫn cho bản sao trong Doxygen không hoàn toàn khớp với những gì trong nguồn thực.

Trong trường hợp của chúng tôi, chúng tôi sử dụng tập lệnh python mà Doxygen chạy từ dòng lệnh có đường dẫn tệp là arg. Chúng tôi đọc các tập tin chỉ ra và viết những gì chúng tôi muốn Doxygen để giải thích thay vì stdout. Nếu bạn cần các bản sao nguồn được hiển thị trong doxygen để được lọc, bạn có thể đặt FILTER_SOURCE_FILES thành YES.

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