2013-01-03 12 views
5

Utilizzo la sfinge con l'estensione autodoc e desidero generare un elenco solo contenente le funzioni membro non documentate in diversi moduli e non i membri documentati.Come posso elencare membri non documentati con sfinge/autodoc?

posso creare correttamente un elenco che comprende entrambi membri documentati e membri non documentati come segue:

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

Utilizzando la direttiva :members: da solo crea l'elenco dei soli membri documentati, come previsto.

.. automodule:: module 
    :members: 

ma utilizzando solo la direttiva :undoc-members: da sola (cioè omettendo la bandiera :members:) non comporta alcuna lista a tutti:

.. automodule:: module 
    :undoc-members: 

Esiste un modo per generare automaticamente questo?

(La documentazione principale include una pagina che mostra tutti i membri documentati, ma troverei molto più utile assicurarsi di avere documenti scritti per ogni funzione ecc. Avendo una singola pagina che elenca tutti i membri non documentati, senza mostrare il testo per quelli che sono documentati).

+0

Se si tratta di trovare e documentare questi membri non documentati, ci dovrebbe essere un modo per elencarli automaticamente durante la compilazione ... se non integrato, c'è un evento ('autodoc-process-docstring') che potrebbe essere utile , ma richiede la scrittura della propria estensione sfinge. – delnan

+0

OK grazie @delnan, cercherò di scrivere un'estensione. – Bonlenfum

risposta

4

Override l'evento autodoc-process-docstring (come notato da @delnan) può aiutare, aggiungendo quanto segue a 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)); 

e poi collegare questa funzione per l'evento (da una risposta in this SO thread):

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

Per accendere (off) le avvertenze comprendono (escludere) i UNDOC membri - globalmente con autodoc_default_flags in conf.py, o con entrambe le direttive come nella questione.

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

EDIT:

ho cercato di estendere questo approccio per generare solo i membri UNDOC, con il seguente metodo:

  • condizionalmente impostare una proprietà, ad esempio, warn_undoc=True, sulla oggetto durante la funzione warn_undocumented_members (sopra)
  • collegare una seconda funzione di override all'evento di preprocessore autodoc-skip-member che ha saltato tutti i membri se lo hanno fatto non set warn_undoc.

Tuttavia, ulteriori indagini regole questo approccio fuori, perché autodoc-skip-member si verifica per ogni gruppo di membri della prima autodoc-process-docstring si verifica. Pertanto, le proprietà vengono impostate troppo tardi per saltare condizionatamente in base alla presenza/assenza di docstring.

+0

Questo non risponde totalmente alla mia domanda, perché ancora non fornisce un modo per generare una pagina con * only * i membri undoc, ma fornisce accesso alle informazioni per trovare (e quindi documentarle). – Bonlenfum

Problemi correlati