2015-12-15 3 views
8

Versione: Luna Service Release 2 (4.4.2)

Io di solito utilizzare il metodo "/ **" per inserire Javadoc sui miei metodi. Eclipse inserisce @param per tutti gli argomenti, @throws per tutti i materiali da lancio e uno @return. Tuttavia allo @return non è mai stato aggiunto un tipo. Ecco come si presenta:

/** 
* 
* @param criteria 
* @param filters 
* @return 
*/ 
protected static String 
      getColumnNameFromCriteria(SelectedCriteria criteria, List<SelectionFilter> filters) 

La prima domanda è: esiste un interruttore da qualche parte in Eclipse per farlo inserire automaticamente il tipo di ritorno metodo quando l'aggiunta di Javadoc?

non riuscivo a trovare uno, così ho guardato: Preferenze-> Java-> codice stile-> code templates-> Metodi

su tale modello vedo una variabile ${tags}. Quella variabile è ciò che genera il Javadoc mostrato sopra.

La seconda domanda è: esiste un modo per modificare ${tags} per includere la variabile ${return_type} allegata al @return che è generato da ${tags}?

Voglio essere in grado di digitare /**<enter> e hanno Eclipse creare automaticamente il seguente Javadoc:

/** 
* 
* @param criteria 
* @param filters 
* @return String 
*/ 
protected static String 
      getColumnNameFromCriteria(SelectedCriteria criteria, List<SelectionFilter> filters) 
+0

solo curioso: il motivo per cui si vuole includere il tipo di ritorno nel javadoc? – wero

+0

Il compilatore si lamenta di questo errore. Javadoc: descrizione prevista dopo @return. In realtà non voglio includere la descrizione perché penso che il tipo di ritorno sarebbe più utile, se fosse necessario qualcosa. – RhythmicDevil

risposta

2

Hai provato plugin jautodoc? avere uno sguardo dentro ad esso può essere che vi aiuterà you.its meglio di eclissi costruito in alt-shift-j

http://jautodoc.sourceforge.net/

+0

Domani ci provo, grazie per il suggerimento. – RhythmicDevil

+0

JAutoDoc funziona molto bene, grazie per l'informazione Zia. – RhythmicDevil

+0

@RhythmicDevil è lieto di aiutarti.Tu sei il benvenuto! – Zia

1

Secondo la vostra domanda, non c'è nessuna configurazione in Eclipse (ancora) che consente di modificare questo. Questo perché i commenti in javadoc devono sporgere denuncia con lo strumento che genera automaticamente le classi javadoc HTML. Se è stato permesso di cambiarlo, lo strumento javadoc dovrebbe anche avere una configurazione per comprendere tali modifiche.

Non devi preoccuparti di questo dato che questo tag @return è pensato per una generazione di javadoc. Una volta generato il tuo progetto javadoc, vedrai che ogni metodo avrà il tipo restituito (nell'html generato). Quel tag è per una DESCRIZIONE specifica del risultato del metodo.

Prendete questo metodo exmaple:

/** 
* This is an example of a documentation of a method with a return type. 
* Note that there isn't a type on the `@return` tag 
* 
* @return the someAttribute 
*/ 
public String getSomeAttribute() { 
    return someAttribute; 
} 

Quando, in Eclipse, si smette di puntatore del mouse su questo metodo mostrerà questo: enter image description here

Prestare attenzione alla prima riga di quel Docs l'immagine. Dice: String Foo.getSomeAttribute()

Quando si genera Javadoc tramite javadoc strumento o un altro strumento come Maven si willl generare tutti i file HTML con tutte javadocs delle vostre classi e la sintesi metodo sarà come questo (String class) enter image description here

Puoi vedere nella colonna "Modifier and type" il tipo di ritorno dei metodi. Se osservi il codice sorgente di uno di questi metodi, come il primo nell'immagine charAt(int index), vedrai che non c'è alcun tipo nel tag @return.

/** 
* Returns the <code>char</code> value at the 
* specified index. An index ranges from <code>0</code> to 
* <code>length() - 1</code>. The first <code>char</code> value of the sequence 
* is at index <code>0</code>, the next at index <code>1</code>, 
* and so on, as for array indexing. 
* 
* <p>If the <code>char</code> value specified by the index is a 
* <a href="Character.html#unicode">surrogate</a>, the surrogate 
* value is returned. 
* 
* @param  index the index of the <code>char</code> value. 
* @return  the <code>char</code> value at the specified index of this string. 
*    The first <code>char</code> value is at index <code>0</code>. 
* @exception IndexOutOfBoundsException if the <code>index</code> 
*    argument is negative or not less than the length of this 
*    string. 
*/ 
public char charAt(int index) { 
    if ((index < 0) || (index >= value.length)) { 
     throw new StringIndexOutOfBoundsException(index); 
    } 
    return value[index]; 
} 

Spero che ti aiuti a capire quel tag.

+0

Aha, non avevo realizzato che fosse per una descrizione. La descrizione è ora richiesta, apparentemente. Se non includo qualcosa ottengo questo: 'Javadoc: Descrizione prevista dopo @ return'. Inserisco semplicemente il tipo di reso perché è più veloce e, secondo me, più utile di una descrizione. – RhythmicDevil

1

La variabile ${tags} non sembra essere modificabile in Eclipse.Dopo aver esaminato parte del codice, ecco un link nella classe responsabile della risoluzione della variabile. Specificamente il metodo insertTag:

private static void insertTag(IDocument textBuffer, int offset, int length, String[] paramNames, String[] exceptionNames, String returnType, String[] typeParameterNames, boolean isDeprecated, 
     String lineDelimiter) throws BadLocationException { 
    IRegion region= textBuffer.getLineInformationOfOffset(offset); 
    if (region == null) { 
     return; 
    } 
    String lineStart= textBuffer.get(region.getOffset(), offset - region.getOffset()); 

    StringBuffer buf= new StringBuffer(); 
    for (int i= 0; i < typeParameterNames.length; i++) { 
     if (buf.length() > 0) { 
      buf.append(lineDelimiter).append(lineStart); 
     } 
     buf.append("@param <").append(typeParameterNames[i]).append('>'); //$NON-NLS-1$ 
    } 
    for (int i= 0; i < paramNames.length; i++) { 
     if (buf.length() > 0) { 
      buf.append(lineDelimiter).append(lineStart); 
     } 
     buf.append("@param ").append(paramNames[i]); //$NON-NLS-1$ 
    } 
    if (returnType != null && !returnType.equals("void")) { //$NON-NLS-1$ 
     if (buf.length() > 0) { 
      buf.append(lineDelimiter).append(lineStart); 
     } 
     buf.append("@return"); //$NON-NLS-1$ 
    } 
    if (exceptionNames != null) { 
     for (int i= 0; i < exceptionNames.length; i++) { 
      if (buf.length() > 0) { 
       buf.append(lineDelimiter).append(lineStart); 
      } 
      buf.append("@throws ").append(exceptionNames[i]); //$NON-NLS-1$ 
     } 
    } 

    ... 

noti che non v'è alcun modo per aggiungere il tipo di ritorno. Solo @return viene inserito nel modello.

C'è almeno un modo molto hacky per farlo. È comunque possibile aggiornare il modello andando a Finestra -> Preferenze -> Java -> Stile codice -> Modelli di codice -> Commenti e selezionando Modifica per modificare il modello di commento. È quindi possibile modificare il modello:

/** 
* ${tags} 
* @return ${return_type} 
*/ 

Vedi http://help.eclipse.org/mars/topic/org.eclipse.jdt.doc.user/concepts/concept-template-variables.htm per le variabili disponibili.

Ma questo causa due commenti @return da aggiungere. Come menzionato nell'altra risposta, non è necessario aggiungere un tipo di reso in quanto il generatore Javadoc può determinare automaticamente il tipo di reso. Se stai analizzando i commenti in qualche altro strumento, la soluzione sopra descritta potrebbe risolverli comunque.

+0

Ciao Manouti, grazie per il commento. Purtroppo non mi aiuta. Avevo capito come visualizzare @return ma, come hai sottolineato, causa un conflitto con quello che $ {tag} genera e devo comunque modificare manualmente Javadoc. – RhythmicDevil