# 开发工具和插件使用指南

版本：v1.0

时间：2019-02-09

[TOC]

## [强制] Intellij IDEA

集成开发环境（IDE）统一使用Intellij IDEA，版本2016及以上，建议安装Intellij IDEA 2018

下载地址：http://www.jetbrains.com/idea/download/#section=windows

注册码：http://idea.lanyus.com/ 建议使用补丁或搭建本地服务器 //有钱买正版

- 下载JetbrainsIdesCrack-4.2.jar

- 复制JetbrainsIdesCrack-4.2.jar至Intellij 安装目录下的lib目录

  ```
  Intellij 安装目录/JetBrains/lib/JetbrainsIdesCrack-4.2.jar
  ```

- 在Intellij 安装目录下的bin目录找到idea64.exe.vmoptions（64位）或idea.exe.vmoptions（32位）编辑

  ```
  //在最后一行增加-javaagent:../lib/JetbrainsIdesCrack-4.2.jar
  //并且这句话的前后空行
  
  -Xms128m
  -Xmx750m
  -XX:ReservedCodeCacheSize=240m
  -XX:+UseConcMarkSweepGC
  -XX:SoftRefLRUPolicyMSPerMB=50
  -ea
  -Dsun.io.useCanonCaches=false
  -Djava.net.preferIPv4Stack=true
  -Djdk.http.auth.tunneling.disabledSchemes=""
  -XX:+HeapDumpOnOutOfMemoryError
  -XX:-OmitStackTraceInFastThrow
  
  -javaagent:../lib/JetbrainsIdesCrack-3.4-release-enc.jar
  
  ```

- 重新打开Intellij，打开激活窗口，选择激活码方式，填入以下激活码(注: 内容可自行修改)

  ```
  {"licenseId":"ThisCrackLicenseId",
  "licenseeName":"随便填",
  "assigneeName":"随便填",
  "assigneeEmail":"邮箱，随便填",
  "licenseRestriction":"描述信息，随便填",
  "checkConcurrentUse":false,
  "products":[
  {"code":"II","paidUpTo":"2099-12-31"},
  {"code":"DM","paidUpTo":"2099-12-31"},
  {"code":"AC","paidUpTo":"2099-12-31"},
  {"code":"RS0","paidUpTo":"2099-12-31"},
  {"code":"WS","paidUpTo":"2099-12-31"},
  {"code":"DPN","paidUpTo":"2099-12-31"},
  {"code":"RC","paidUpTo":"2099-12-31"},
  {"code":"PS","paidUpTo":"2099-12-31"},
  {"code":"DC","paidUpTo":"2099-12-31"},
  {"code":"RM","paidUpTo":"2099-12-31"},
  {"code":"CL","paidUpTo":"2099-12-31"},
  {"code":"PC","paidUpTo":"2099-12-31"},
  {"code":"DB","paidUpTo":"2099-12-31"},
  {"code":"GO","paidUpTo":"2099-12-31"},
  {"code":"RD","paidUpTo":"2099-12-31"}
  ],
  "hash":"2911276/0",
  "gracePeriodDays":7,
  "autoProlongated":false}
  ```

- 点击保存即可

## [强制] 阿里代码规约插件

阿里代码规约检查插件，是基于阿里Java开发规范的代码检查工具

1. 打开 File >> Settings >> Plugins  在搜索栏检索Alibaba, 点击安装

   ![1](https://i.loli.net/2019/02/11/5c618ef76260a.jpg)

2. 安装完成在Intellij 工具栏出现以下按钮

   ![2](https://i.loli.net/2019/02/11/5c618ec959ca3.jpg)

3.  或者选择 tools >> 阿里编程规约

   ![3](https://i.loli.net/2019/02/11/5c618f20f07ec.jpg)

4.  运行代码检查，根据提示修改代码

   ![4](https://i.loli.net/2019/02/11/5c618f42bc1bb.jpg)



## [推荐] Find Bugs插件

Java静态分析工具Find Bugs插件可以帮助发现一些隐藏的bug。需要说明的是，Find Bugs插件发现的bug有时可能会产生误告警

1. 打开 File >> Settings >> Plugins  在搜索栏检索Find Bugs, 点击安装

   ![5](https://i.loli.net/2019/02/11/5c6190c236660.jpg)

2. 安装完成后在底部会出现FindBugs-IDE 工具tab

   ![6](https://i.loli.net/2019/02/11/5c6190d41d5de.jpg)

3. 选择文件或者目录，点击FindBugs-IDE或者右键选择FindBugs，执行检查

   ![7](https://i.loli.net/2019/02/11/5c6190e997e67.jpg)

   ![8](https://i.loli.net/2019/02/11/5c6190fd0cde9.jpg)

4.  File >> setting >> Other Setting >> Findbugs 可以对规则进行选择和设置

   ![9](https://i.loli.net/2019/02/11/5c61911b68864.jpg)

## [强制] Find Security插件

Find Security 是Find Bugs的一个配置选项，默认为选择，请确保出选项被选择

![10](https://i.loli.net/2019/02/11/5c61912a500dc.jpg)

## [强制] JavaDoc插件

Intellij 自带JavaDoc工具，要生成JavaDoc文档需要完成以下两个配置

**JavaDoc模板**

常用的JavaDoc标签
<table>
<thead>
<tr>
  <th>标签</th>
  <th>描述</th>
  <th>示例</th>
</tr>
</thead>
<tbody>
<tr>
  <td>@author</td>
  <td>标识一个类的作者</td>
  <td>@author description</td>
</tr>
<tr>
  <td>@version</td>
  <td>指定类的版本</td>
  <td>@version info</td>
</tr>
<tr>
  <td>@date</td>
  <td>创建时间</td>
  <td>@date date time</td>
</tr>
<tr>
  <td>@since</td>
  <td>标记当引入一个特定的变化时</td>
  <td>@since release</td>
</tr>
<tr>
  <td>@deprecated</td>
  <td>指名一个过期的类或成员</td>
  <td>@deprecated description</td>
</tr>
<tr>
  <td>@param</td>
  <td>说明一个方法的参数</td>
  <td>@param parameter-name explanation</td>
</tr>
<tr>
  <td>@return</td>
  <td>说明返回值类型</td>
  <td>@return explanation</td>
</tr>
<tr>
  <td>@throws</td>
  <td>和 @exception标签一样.</td>
  <td>The @throws tag has the same meaning as the @exception tag.</td>
</tr>
<tr>
  <td>@see</td>
  <td>指定一个到另一个主题的链接</td>
  <td>@see class </td>
</tr>
</tbody></table>
1. File >> Setting >> Plugins 安装JavaDoc2

   ![15](https://i.loli.net/2019/02/11/5c61913c6b847.jpg)

2. File >> Setting >> Other Settings >> JavaDoc 设置class和interface的头说明

   ![16](https://i.loli.net/2019/02/11/5c61914b70646.jpg)

   ```
   //Class 
   /**\n
    * Describe class function detail.\n
    * \n
    * @author C.T \n
    * @date <#if 1==1>${.now?string["yyyy-MM-dd HH:mm:ss"]}</#if> \n
    * @version v1.0 \n
    * @since jdk1.8 \n
   <#if element.typeParameters?has_content>        * \n
   </#if>
   <#list element.typeParameters as typeParameter>
           * @param <${typeParameter.name}> the type parameter\n
   </#list>
    */
   
   //Interface
   /**\n
    * Describe interface function detail.\n
    * \n
    * @author C.T \n
    * @date <#if 1==1>${.now?string["yyyy-MM-dd HH:mm:ss"]}</#if> \n
    * @version v1.0 \n
    * @since jdk1.8 \n
   <#if element.typeParameters?has_content>        * \n
   </#if>
   <#list element.typeParameters as typeParameter>
           * @param <${typeParameter.name}> the type parameter\n
   </#list>
    */
   ```

   

3. 通过JavaDoc的快捷键或者generator工具可以自动生成JavaDoc，生成时支持一次全部生成和选择指定对象生成

   ![17](https://i.loli.net/2019/02/11/5c61915e9b5d5.jpg)

   ![18](https://i.loli.net/2019/02/11/5c619172cf42c.jpg)

   ![17](https://i.loli.net/2019/02/11/5c619184cf681.jpg)

   


**运行时参数配置**

1.  Tools >> Generate JavaDoc

   ![11](https://i.loli.net/2019/02/11/5c619195f0523.jpg)

2.  选择范围以及设置运行参数

   ![12](https://i.loli.net/2019/02/11/5c6191a91bc66.jpg)

   ```
   //中文
   Locale : zh_CN  
   
   //encoding UTF-8 -charset UTF-8 解决中文编码问题
   //-windowtitle "接口文档" 设置文档title
   //-link http://docs.Oracle.com/javase/8/docs/api //指定API版本是jdk8
   Other command line arguments: encoding utf-8  -charset utf-8 -tag date:a:”date” -link http://docs.Oracle.com/javase/8/docs/api
   ```

3.  点击 OK 运行

   ![13](https://i.loli.net/2019/02/11/5c6191b8ca0a1.jpg)

## [强制] Apiggs插件

Apiggs是一款基于JavaDoc的restful接口文档生成工具

install

```
<!--自动生成restful接口文档-->
<plugin>
    <groupId>com.github.fengyuchenglun</groupId>
    <artifactId>apiggs-maven-plugin</artifactId>
    <version>1.0.10</version>
    <executions>
        <execution>
            <phase>compile</phase>
            <goals>
                <goal>apiggs</goal>
            </goals>
        </execution>
    </executions>
    <configuration>
        <showValidField>false</showValidField>
        <controller>CosmoController</controller>
        <responseBody>CosmoController</responseBody>
    </configuration>
</plugin>
```

可选Option

```
id 项目id，生成id.html文件
title 文档标题
description 文档描述
production 输出文件夹，默认为 apiggs
out 输出目录，默认为 target
source 源码目录
dependency 源码依赖的代码目录，以逗号隔开
jar 源码依赖的jar包目录，以逗号隔开
ignore 忽略某些类型
version 文档版本号
```

可参考后台框架DEMO工程中的例子

## [推荐] TestNG插件

TestNg单元测试框架，安装TestNg插件，可以快速，自动创建TestNg单元测试类

1. File >> Settings >> Plugins  在搜索栏检索TestNG, 点击安装

   ![；20](https://i.loli.net/2019/02/11/5c6191cab72fb.jpg)

   注意：这个插件目前支持TestNG5.6 如果Maven中使用版本与此有差异，手动调整自动生成的代码

2.  在需要写单元测试的类，右键选择generator >> test 完成相关配置即可自动生成，以Test结尾的java单元测试类

   ![21](https://i.loli.net/2019/02/11/5c6191daeb989.jpg)

## [强制] Git插件

Git作为分布式版本管理系统

1. 下载并安装Git，参考https://git-scm.com/book/zh/v2/%E8%B5%B7%E6%AD%A5-%E5%AE%89%E8%A3%85-Git

2. 在intellij设置Git信息

   ![26](https://i.loli.net/2019/02/11/5c6191f2ecb24.jpg)

3. 选择文件，右键使用Git UI操作完成Git操作

   ![27](https://i.loli.net/2019/02/11/5c619201c56c1.jpg)

4.  安装Commit-Message-Create确保提交使用统一模板 建议使用 Commit-Message-Create

   

6. 提交时 请确保这些选项被选中

   ![31](https://i.loli.net/2019/02/12/5c62324f1fd17.jpg)

7.  点击 Commit Message 右边编辑按钮，载入模板，按照Commit message 的格式修改内容

   ![31](https://i.loli.net/2019/02/12/5c6240d7af7ad.jpg)

   Commit message 的格式

   Commit message 都包括三个部分：Header，Body 和 Footer

   ```
   //Header 是必需的，Body 和 Footer 可以省略
   <type>(<scope>): <subject>
   // 空一行
   <body>
   // 空一行
   <footer>
   ```

   - Header部分只有一行，包括三个字段：`type`（必需）、`scope`（可选）和`subject`（必需）

     type用于说明 commit 的类别，只允许使用下面7个标识，如果type为feat和fix，则该 commit 将肯定出现在 Change log 之中。其他情况（docs、chore、style、refactor、test）建议不要放入 Change log

     ```
     feat：新功能（feature）
     fix：修补bug
     docs：文档（documentation）
     style： 格式（不影响代码运行的变动）
     refactor：重构（即不是新增功能，也不是修改bug的代码变动）
     test：增加测试
     chore：构建过程或辅助工具的变动
     ```

     scope用于说明 commit 影响的范围，不同功能模块

     subject是 commit 目的的简短描述，不超过50个字符。

     ```
     以动词开头，使用第一人称现在时，比如change，而不是changed或changes
     第一个字母小写
     结尾不加句号（.）
     ```

   - Body 部分是对本次 commit 的详细描述，可以分成多行

     ```
     //body 一般说明几个问题
     做了什么事情
     为什么做这个事情
     怎么解决的问题
     有什么影响
     ```

   - Footer 部分只用于两种情况

     ```
     //情况1 
     //当前代码与上一个版本不兼容，则 Footer 部分以BREAKING CHANGE开头，后面是对变动的描述、以及变动理由和迁移方法。
     //例如
     BREAKING CHANGE: isolate scope bindings definition has changed.
     
         To migrate the code follow the example below:
     
         Before:
     
         scope: {
           myAttr: 'attribute',
         }
     
         After:
     
         scope: {
           myAttr: '@',
         }
     
         The removed `inject` wasn't generaly useful for directives so there should be no code using it.
     ```

     ```
     //情况2 关闭相关联的Issue，例如
     Closes #234
     //或者一次多个
     Closes #123, #245, #992
     
     ```

     