如何使用p3c实现自定义代码规范检查


这篇文章将为大家详细讲解有关如何使用p3c实现自定义代码规范检查,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。p3c,一款代码规范的检查工具,有对应的ide插件,能在编码过程中对设置的规则进行提示,便打算对它进行拓展,增加对fastjson检查是否打开setAutoType特性的检查。 p3c主要包括3部分:PMD实现(p3c-pmd):使用PMDhttps://pmd.github.io/来实现代码规范检查Intellij IDEA插件Eclipse插件 p3c使用了PMD。PMD是一款静态代码扫描工具,该工具可以做到检查Java代码中是否含有未使用的变量、是否含有空的抓取块、是否含有不必要的对象等。PMD使用JavaCC生成解析器来解析源代码并生成AST(抽象语法树),通过对AST的检查可以直接从源代码文本层面来对代码进行检查,在PMD内部称为规则。即是否符合规则指的是,穷举源码各种可能的写法,然后在AST上检查是否出现。而规则的实现,重点便在对AST的处理上。 关于AST的介绍网上有很多,可以直接搜索,这里重要提两点:AST是源代码的抽象语法结构的树状表示抽象语法树并不依赖于原语言的语法,也就是说同语法分析阶段所采用的上下文无关 PMD使用JavaCC来生成AST。关于JavaCC也可以在网上查看相关资料,这里不多介绍,只要知道JavaCC是一个词法分析生成器和语法分析生成器便行。 PMD官方文档介绍了自定义规则的实现步骤,过程比较清晰,这里不赘述,只介绍下本文需要设计的步骤。1.2.1. 定义规则集 PMD的规则需要配置在XML文件中新建如下的空文件表示规则集public class AvoidFastJsonAutoTypeSupportRule extends AbstractAliRule {}java.extend.AvoidFastJsonAutoTypeSupportRule.rule.desc1

publicclassNegativeExample{

publicstaticvoidmain(String[]args){
ParserConfig.getGlobalInstance().setAutoTypeSupport(true);
}
}

]]>

]]> 说明:fastjson的setAutoTypeSupport特性存在安全漏洞 ]]> buildscript { repositories { maven { url “https://oss.sonatype.org/content/repositories/snapshots/” } maven { url ‘http://dl.bintray.com/jetbrains/intellij-plugin-service’ } mavenLocal() mavenCentral()}allprojects { group ‘com.alibaba.p3c.idea’ apply plugin: ‘java’ apply plugin: ‘kotlin’ apply plugin: ‘maven-publ 香港云主机ish’} “`以增加自定义规则检查。4.在p3c-common模块下,执行gradle clean buildPlugin,生成对应的插件。 本地安装该插件,可以得到如下效果这里只验证效果,没有真正引入fastjson依赖,也验证了pmd检查的是源码文本。关于如何使用p3c实现自定义代码规范检查就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

相关推荐: SOAPfuse中怎么实现融合基因操作

今天就跟大家聊聊有关SOAPfuse中怎么实现融合基因操作,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。和其他软件类似,SOAPfuse也需要建立物种对应的数据库,在软件安装的source目录下,提供了…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 08/08 16:36
下一篇 08/08 16:36

相关推荐