
# 查询重复代码块信息V2 - GetRelatedDuplicateBlocksV2
#### 功能介绍
查询文件下涉及的所有重复代码块，或查询与某个重复代码块重复的其他代码块。
#### 调用方法
请参见[如何调用API](https://support.huaweicloud.com/api-codecheck/codecheck_03_0006.html)。
#### 授权信息
账号根用户具备所有API的调用权限，如果使用账号下的IAM用户调用当前API，该IAM用户需具备如下身份策略权限，更多的权限说明请参见[权限和授权项](https://support.huaweicloud.com/api-codecheck/Permission.html)。
| 授权项                          | 访问级别 | 资源类型（\*为必须） | 条件键                     | 别名 | 依赖的授权项 |
|:---|:---|:---|:---|:---|:---|
| codeartscheck:task:getReport | Read | task \*     | -                       | -  | -      |
| codeartscheck:task:getReport | Read | -           | codeartscheck:ProjectId | -  | -      |
   
#### URI
POST /v2/related-duplicate-blocks
#### 请求参数
表1请求Header参数 
| 参数         | 是否必选 | 参数类型   | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
|:---|:---|:---|:---|
| X-Language | 否    | String | **参数解释：** 语言，决定响应以哪种语言返回。 **约束限制：** 不涉及。 **取值范围：** - zh-cn：中文。   - en-us：英文。    **默认取值：** zh-cn。 |
   
表2请求Body参数 
| 参数              | 是否必选 | 参数类型    | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
|:---|:---|:---|:---|
| taskId          | 是    | String  | **参数解释：** 任务ID，即新建检查任务接口的返回值，每个代码检查任务及其下的分支任务、通过API创建的增量任务都有唯一的任务ID。即[查询任务列表](https://support.huaweicloud.com/api-codecheck/ShowTasksList.html)接口响应中的id字段。 **约束限制：** 不涉及。 **取值范围：** 长度为\[1\~32\]个字符。 **默认取值：** 不涉及。                                                                                                                                                                                                                                                            |
| jobId           | 否    | String  | **参数解释：** 执行ID，来自代码检查执行任务接口的返回值，每次执行代码检查任务都有唯一的执行ID。版本级不传，门禁级必传。即"根据任务ID查询任务执行记录"的响应中的ID字段。 **约束限制：** 不涉及。 **取值范围：** 长度为\[1\~32\]个字符。 **默认取值：** 不涉及。                                                                                                                                                                                                                                                                                                                           |
| filePath        | 否    | String  | **参数解释：** 文件路径，查询该文件下涉及的所有重复块。 **约束限制：** 与blockId参数二选一。 **取值范围：** 不涉及。 **默认取值：** 不涉及。                                                                                                                                                                                                                                                                                                                                                                                          |
| blockId         | 否    | String  | **参数解释：** 重复块ID或重复文件ID。 **约束限制：** 与filePath参数二选一。 **取值范围：** 不涉及。 **默认取值：** 不涉及。                                                                                                                                                                                                                                                                                                                                                                                                |
| startLine       | 否    | Integer | **参数解释：** 需要在查询结果中去掉的重复块的起始行数。 **约束限制：** 不涉及。 **取值范围：** 不涉及。 **默认取值：** 不涉及。                                                                                                                                                                                                                                                                                                                                                                                                    |
| duplicationType | 否    | String  | **参数解释：** 重复类型，与blockId配合使用才有效。决定是重复块ID还是重复文件ID。 **约束限制：** 不涉及。 **取值范围：** - duplication_code：重复代码块。   - duplication_file：重复文件。    **默认取值：** 不涉及。 |
   
#### 响应参数
**状态码：200**
表3响应Body参数 
| 参数     | 参数类型                                                                                       | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
|:---|:---|:---|
| status | String                                                                                     | **参数解释：** 响应状态。 **取值范围：** - success：成功。   - error：失败。    |
| result | Array of [DuplicationFile] objects | **参数解释：** 查询重复代码块信息结果。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
   
 表4DuplicationFile 
| 参数        | 参数类型                                                                           | 描述                                                                                                                                                                          |
|:---|:---|:---|
| filePath  | String                                                                         | **参数解释：** 文件路径。 **取值范围：** 不涉及。 |
| fileName  | String                                                                         | **参数解释：** 文件名称。 **取值范围：** 不涉及。 |
| blockInfo | Array of [BlockInfo] objects | **参数解释：** 关联的重复信息。                                                                                                           |
   
 表5BlockInfo 
| 参数              | 参数类型    | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
|:---|:---|:---|
| blockId         | String  | **参数解释：** 重复块ID或重复文件ID。 **取值范围：** 不涉及。                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| duplicationType | String  | **参数解释：** 重复类型，与blockId配合使用才有效。决定是重复块ID还是重复文件ID。 **取值范围：** - duplication_code：重复代码块。   - duplication_file：重复文件。    |
| filePath        | String  | **参数解释：** 文件路径。 **取值范围：** 不涉及。                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| startLine       | Integer | **参数解释：** 重复开始行号。 **取值范围：** 不涉及。                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| endLine         | Integer | **参数解释：** 重复结束行号。 **取值范围：** 不涉及。                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
   
**状态码：400**
表6响应Body参数 
| 参数         | 参数类型   | 描述                                                                                                                                                                          |
|:---|:---|:---|
| error_code | String | **参数解释：** 错误码。 **取值范围：** 不涉及。  |
| error_msg  | String | **参数解释：** 错误描述。 **取值范围：** 不涉及。 |
   
**状态码：401**
表7响应Body参数 
| 参数         | 参数类型   | 描述                                                                                                                                                                          |
|:---|:---|:---|
| error_code | String | **参数解释：** 错误码。 **取值范围：** 不涉及。  |
| error_msg  | String | **参数解释：** 错误描述。 **取值范围：** 不涉及。 |
   
#### 请求示例
- 在ID为897acf5exxx48a5013cd的任务下，查询code/test.java文件下的所有涉及的重复代码块和重复文件。
  ```
  POST https://{endpoint}/v1/related-duplicate-blocks
  {
    "taskId" : "897acf5exxx48a5013cd",
    "file_path" : "code/test.java"
  }
  ```
  
- 在ID为897acf5exxx48a5013cd的任务下，查询与ID为1的代码块重复的所有代码块。
  ```
  POST https://{endpoint}/v1/related-duplicate-blocks
  {
    "taskId" : "897acf5exxx48a5013cd",
    "duplication_type" : "duplication_code",
    "block_id" : "1"
  }
  ```
  
- 在ID为897acf5exxx48a5013cd的任务下，查询与ID为1的重复文件重复的所有文件。
  ```
  POST https://{endpoint}/v1/related-duplicate-blocks
  {
    "taskId" : "897acf5exxx48a5013cd",
    "duplication_type" : "duplication_file",
    "block_id" : "1"
  }
  ```
  
 
#### 响应示例
**状态码：200**
请求成功!
```
{
  "status" : "success",
  "error" : null,
  "result" : [ {
    "filePath" : "vote/assets/plugins/bootstrap-switch/test/bootstrap-switch.js",
    "fileName" : "bootstrap-switch.js",
    "blockInfo" : [ {
      "blockId" : "1",
      "duplicationType" : "duplication_file",
      "filePath" : "vote/assets/plugins/bootstrap-switch/test/bootstrap-switch.js",
      "startLine" : 0,
      "endLine" : 0
    } ]
  } ]
}
```
**状态码：400**
请求异常。
```
{
  "error_code" : "CC.xxxxxxxx.400",
  "error_msg" : "请求参数校验失败,请检查请求参数是否正确"
}
```
**状态码：401**
权限不足。
```
{
  "error_code" : "CC.00000003",
  "error_msg" : "认证信息过期"
}
```
#### 状态码
| 状态码 | 描述    |
|:---|:---|
| 200 | 请求成功! |
| 400 | 请求异常。 |
| 401 | 权限不足。 |
   
#### 错误码
请参见[错误码](https://support.huaweicloud.com/api-codecheck/ErrorCode.html)。
