2013-01-03 30 views
5

Tôi đang sử dụng nhân sư có phần mở rộng autodoc và muốn tạo một danh sách chỉ chứa các hàm thành viên không có giấy tờ trong một số mô-đun chứ không phải thành viên được tài liệu.Làm cách nào tôi có thể liệt kê các thành viên không có giấy tờ với nhân sư/tự động?

tôi thành công có thể tạo ra một danh sách bao gồm cả thành viên ghi nhận và các thành viên không có giấy tờ như sau:

.. automodule:: module 
    :members: 
    :undoc-members: 

Sử dụng :members: chỉ một mình tạo ra danh sách các thành viên chỉ ghi nhận, như mong đợi.

.. automodule:: module 
    :members: 

nhưng chỉ sử dụng chỉ thị :undoc-members: một mình (ví dụ bỏ qua :members: cờ) không dẫn đến bất kỳ danh sách ở tất cả:

.. automodule:: module 
    :undoc-members: 

Có cách nào để tự động tạo này?

(Tài liệu chính bao gồm trang hiển thị tất cả các thành viên được tài liệu, nhưng tôi thấy hữu ích hơn nhiều để đảm bảo rằng tôi đã viết tài liệu cho từng chức năng, v.v ... bằng một trang đơn liệt kê bất kỳ thành viên nào không có giấy tờ, không hiển thị văn bản cho những tài liệu được ghi lại).

+0

Nếu đây là về việc tìm kiếm và ghi lại những thành viên không có giấy tờ, phải có cách để tự động liệt kê những người đó trong khi xây dựng ... nếu không được tích hợp sẵn, có một sự kiện ('autodoc-process-docstring') , nhưng yêu cầu viết phần mở rộng nhân sư của riêng bạn. – delnan

+0

OK cảm ơn @delnan, tôi sẽ xem xét việc viết phần mở rộng. – Bonlenfum

Trả lời

4

Trọng sự kiện autodoc-process-docstring (như ghi nhận của @delnan) có thể giúp đỡ, bằng cách thêm dòng sau vào conf.py:

# set up the types of member to check that are documented 
members_to_watch = ['function',]; 

def warn_undocumented_members(app, what, name, obj, options, lines): 
    if(what in members_to_watch and len(lines)==0): 
     # warn to terminal during build 
     print "Warning: ", what, "is undocumented: ", name, "(%d)"% len(lines); 
     # or modify the docstring so the rendered output is highlights the omission 
     lines.append(".. Warning:: %s '%s' undocumented" % (what, name)); 

Và sau đó kết nối chức năng này để sự kiện này (từ một câu trả lời trong this SO thread):

def setup(app): 
    app.connect('autodoc-process-docstring', warn_undocumented_members); 

Để bật (tắt) các cảnh báo bao gồm (loại trừ) thành viên chưa hoàn thành - toàn cầu với autodoc_default_flags trong conf.py hoặc với cả chỉ thị như trong câu hỏi.

autodoc_default_flags = ['members', 'undoc-members' ] 
#autodoc_default_flags = ['members' ] 

EDIT:

Tôi đã cố gắng để mở rộng phương pháp này để tạo chỉ các thành viên undoc, theo phương pháp sau:

  • có điều kiện thiết lập một tài sản, nói rằng, warn_undoc=True, trên đối tượng trong khi đang thực hiện chức năng warn_undocumented_members (ở trên)
  • gắn chức năng ghi đè thứ hai vào sự kiện tiền xử lý autodoc-skip-member bỏ qua tất cả các thành viên nếu họ đã làm khôngwarn_undoc thiết lập.

Tuy nhiên, điều tra thêm quy định cách tiếp cận này, bởi vì autodoc-skip-member xảy ra cho mỗi nhóm thành viên trước khi xảy ra autodoc-process-docstring. Do đó, các thuộc tính được đặt quá muộn để bỏ qua điều kiện dựa trên sự hiện diện/vắng mặt của các tài liệu.

+0

Điều này không hoàn toàn trả lời câu hỏi của tôi, bởi vì nó vẫn không cung cấp cách tạo trang với * chỉ * các thành viên chưa hoàn chỉnh, nhưng nó cung cấp quyền truy cập thông tin để tìm (và do đó tài liệu) chúng. – Bonlenfum

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