IDEAカスタムテンプレートコメント(空のパラメーターと戻り値の問題を解決しました)

序文

テンプレートコメントを設定するとき、特にメソッドテンプレートコメントを設定するとき(パラメータや戻り値が空であるなど)、多くの人がさまざまな問題遭遇したと思います私もインターネットでたくさんの検索を行ってきましたが、結局は何も戻らないことをご存知でしょう。この記事でこの問題を解決できます。クラスのテンプレート注釈は非常に単純なので、オンライン検索の方法でもクラスの生成の問題を解決できます。テンプレートコメントの状況については、この記事では紹介せず、メソッドテンプレートコメントの生成方法と、Groovy使用するスクリプトの具体的な意味だけを紹介します。これによりGroovy、最後に、独自のニーズに合わせて独自のスクリプトを作成できます。Gif具体的な使用方法を示す動画もありますが、言うまでもなく紹介を始めます。

テンプレートを作成する

最初File -> Settings -> Editor -> Live Templatesクリックすると、次のインターフェイスが表示されます。

画像-20201022101321942

次に、クリック+して選択する必要がありますTemplate Group...

画像-20201022101455162

次に、任意の名前を選択してクリックしますOK

画像-20201022101636732

次に、下の図に従って、最初に作成したものを選択してGroupから、クリック+して選択しますLive Template

画像-20201022101834531

次に、ポップアップインターフェイスの図にマークされている情報を入力します。

画像-20201022102035375

写真1の位置は伝統に従って使用されており(ほとんどの人がこのように設定していたと思います)*、対応するものTemplate textは次のとおりです。

**
 * description
$params$
 *
$return$
 * @author zjw
 * @createTime $date$ $time$
 */
注意

ここで特に注意する必要があります。Template textコンテンツの先頭を先頭にすることはできません/**。そうしないと、パラメータと戻り値が空になる場合があります。以前にこのように設定したと思われるかもしれませんが、機能しませんが、読み続けてください。続けてください。以前に遭遇したことがTemplate textありますが、後でスクリプトのコードと一致させるためにここにいるので、同じように見えない可能性があります。

次に、下の図の手順に従ってセットアップApplication Contextsする必要がありますJavaを選択し、終了後にクリックすることを忘れないでくださいApply

画像-20201022103830214

配置脚本

上記の手順を完了したら、図に次の工程に係る構成に対応するスクリプトを開始することができ、かつ2、及び3それぞれに次の二つの入力Groovy(後述するようにスクリプトを意味する)スクリプト、4および5ドロップダウンボックスシステムのデフォルトを選択します:

groovyScript("def result='';def flag=false;def params=\"${_1}\".replaceAll('[\\\\[|\\\\]|\\\\s]', '').split(',').toList(); for(i = 0; i < params.size(); i++) {if (!params[i].equals('')) {flag=true;result+='* @param ' + params[i] + ' ' + params[i] + ((i < params.size() - 1) ? '\\n\\t ':'')} else {result+=' *'}}; return flag ? ' *\\n\t ' + result : result", methodParameters())

groovyScript("def params=\"${_1}\";def index=params.lastIndexOf('.', params.indexOf('<'));if(index!=-1){params=params.substring(index+1);};index=params.indexOf('.');if(index!=-1&&params.indexOf('<')==-1){params=params.substring(index+1);};return ' * @return ' + params.replaceAll('java.lang.', '').replaceAll(',',', ');", methodReturnType())

画像-20201022113313982

少し設定を完了したら、をクリックOKApplyてテンプレートを使用します。

注釈使用テスト

上記のGroovyスクリプトの意味を説明する前に、上記の構成の注釈テンプレートの使用方法を見てみましょう
注釈を追加する必要があるメソッドを入力し、/*を押しTabて生成するだけです。これは*、上記のAbbreviation構成に対応します。*使用される*上記構成置き換えることTemplate text、およびTemplate text前面の添加を/、我々は正常に対応するコメントテンプレートに追加Gif操作の動きは次の通りであります:

デモ

demo1

スクリプトの意味の概要

$return$例としてsetスクリプトを取り上げます。説明の便宜上、スクリプトはフォーマットされています。コードとその意味は次のとおりでGroovyありJava、構文は非常に似ているため、理解するのは難しくありません。

groovyScript("
        // 将 methodReturnType() 的返回值转化为字符串赋给 params
        // 默认的返回值格式为 pojo.User / java.lang.int 等形式
        def params = \"${
    
    _1}\";
        
        // 如果返回值有集合时,原始形式为 java.util.List<java.lang.Integer> 这种形式
        // 这里获取 '<' 前的 '.' 下标
        def index = params.lastIndexOf('.', params.indexOf('<'));
        
        if (index != -1) {
    
    
            // 执行到这里说明返回值有泛型,为了看着更舒服
            // 这里的作用是把 java.util.List<java.lang.Integer> 变为 List<java.lang.Integer>
            params = params.substring(index + 1);
        };
        
        // 这里继续获取 '.' 的下标
        index = params.indexOf('.');
        
        // 如果 '.' 存在,且不存在 '<' 说明返回值没有泛型
        if (index != -1 && params.indexOf('<') == -1) {
    
    
            // 把返回值为 pojo.User 这种变为 User
            params = params.substring(index + 1);
        };
        
        // 当返回值为基本类型时,都会有 'java.lang.' 前缀
        // 例如 java.lang.int ,这里去掉了 java.lang.
        // 此外将返回结果中的 ','替换为', '是为了处理 有多个泛型参数的情况
        // 例如原始返回值可能为 java.util.Map<java.lang.Integer,java.lang.String>
        // 这里为了让泛型之间的 ',' 变成 ', ' 更加美观
        // 需要注意的是,我没有处理 java.util.List<pojo.User> 这种情况
        // 经过这些代码只会变为 List<pojo.User>, 这个就留给大家自己做了
        return ' * @return ' + params.replaceAll('java.lang.', '').replaceAll(',', ', ');
    ",
    methodReturnType()
)

注意

ここreturnでは、処理されたスクリプトコードのすべての意味のみを示します。コードも少し醜いので、独自のGrovvyスクリプトを作成して共有できることを願っています。私のparamスクリプトは醜いので、ここでは行いません。ご不明な点がございましたら、メッセージを残すこともできます。

総括する

この記事では、IDEA生成されたカスタムメソッドテンプレートコメントを使用するとき発生する可能性のある問題のいくつかについて説明します。もちろん、バージョンの理由や操作上の理由により、問題が発生する可能性もあります。メッセージを残して、一緒に話し合うこともできます。

おすすめ

転載: blog.csdn.net/qq_41698074/article/details/109252069