背景
P3C
实操
找到我们的POM.XML
文件 , 添加以下配置
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<excludes>
<exclude>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</exclude>
</excludes>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-pmd-plugin</artifactId>
<version>3.8</version>
<configuration>
<!-- 规范的配置 https://github.com/alibaba/p3c -->
<rulesets>
<ruleset>rulesets/java/ali-comment.xml</ruleset>
<ruleset>rulesets/java/ali-concurrent.xml</ruleset>
<ruleset>rulesets/java/ali-constant.xml</ruleset>
<ruleset>rulesets/java/ali-exception.xml</ruleset>
<ruleset>rulesets/java/ali-flowcontrol.xml</ruleset>
<ruleset>rulesets/java/ali-naming.xml</ruleset>
<ruleset>rulesets/java/ali-oop.xml</ruleset>
<ruleset>rulesets/java/ali-orm.xml</ruleset>
<ruleset>rulesets/java/ali-other.xml</ruleset>
<ruleset>rulesets/java/ali-set.xml</ruleset>
</rulesets>
<printFailingErrors>true</printFailingErrors>
</configuration>
<executions>
<!-- 绑定pmd:check到verify生命周期 -->
<execution>
<id>pmd-check-verify</id>
<phase>verify</phase>
<goals>
<goal>check</goal>
</goals>
</execution>
<!-- 绑定pmd:pmd到site生命周期 -->
<execution>
<id>pmd-pmd-site</id>
<phase>site</phase>
<goals>
<goal>pmd</goal>
</goals>
</execution>
</executions>
<!-- p3c依赖 -->
<dependencies>
<dependency>
<groupId>com.alibaba.p3c</groupId>
<artifactId>p3c-pmd</artifactId>
<version>1.3.6</version>
</dependency>
</dependencies>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-site-plugin</artifactId>
<version>3.7.1</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-project-info-reports-plugin</artifactId>
<version>3.0.0</version>
</plugin>
</plugins>
</build>
<reporting>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jxr-plugin</artifactId>
<version>2.5</version>
</plugin>
</plugins>
</reporting>
IDEA 右侧就会出现pmd
相关命令

双击运行pmd:pmd
就行了;或者使用mvn pmd:pmd


解析生成的XML
即可,本文使用Python
处理,语言自己选择(粘贴过来格式有点问题、自己格式化一下)
# coding=UTF-8
import openpyxl, os
from xml.etree import ElementTree as ET
tree = ET.parse('xml文件路径')
rootNodes = tree.getroot()
all_data = []
for rootNode in rootNodes:
# 类路径
name = rootNode.attrib.get('name') + ""
for childNode in rootNode:
# 存储数据的字典
root_data = {}
# 开始行数
beginline = childNode.attrib.get('beginline')
# Bug 级别 : 1、2级、3级
priority = childNode.attrib.get('priority')
# 异常说明
text = childNode.text + ""
text = text.replace("""\n""", "")
# print("类路径 - {}".format(name))
# print("开始行数 - {}".format(beginline))
# print("Bug级别 - {}".format(priority))
# print("异常说明 - {}".format(text))
# print("******************************************")
root_data['name'] = name
root_data['beginline'] = beginline
root_data['text'] = text
all_data.append(root_data)
if len(all_data) > 0:
# 写入Excel(追加)Excel位置
workbook = openpyxl.load_workbook('excel/excel_test.xlsx')
# # 获得当前活跃的工作页,默认为第一个工作页
table = workbook.active
nrows = table.max_row # 获得行数
ncolumns = table.max_column # 获得行数
for value in all_data:
# 第一列
table.cell(nrows + 1, 1).value = ''
# 第二列
table.cell(nrows + 1, 2).value = ''
# 多列自己追加
nrows = nrows + 1
# 保存位置
workbook.save('excel/excel_test.xlsx')
print("新增 {} 条".format(str(len(all_data))))
print("******************* {} 结束 *******************".format(file_name))