Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何在不使用I/O的情况下获得PMD报告&其中的详细信息?

如何在不使用I/O的情况下获得PMD报告&其中的详细信息?
EN

Stack Overflow用户
提问于 2017-07-11 12:14:13
回答 1查看 663关注 0票数 2

我试图使用自定义规则集生成PMD报告。输入是一串字符串格式的Apex类。在不输出文件的情况下,我想直接解析报表内容(XML格式),以创建违规、开始/结束行、优先级、规则名称和附加消息的摘要。这将在Apex代码的多个主体上完成,每次出现违规时都会添加到报表bean中。

我试图用SourceCodeProcessor来做这件事,但是不知道一些必需的对象/参数是什么样子的,也不知道它们是如何构建的。我仍然不知道如何创建一个RuleContext对象属性。

任何帮助都是非常感谢的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-11 19:35:17

根据您的计划,我会采取稍微不同的方法(我是PMD维护人员)。

SourceCodeProcessor水平很低.这是整个分析过程被编排的实际位置,但忽略了实现该过程的大部分有趣设置。

同样值得注意的是,SourceCodeProcessor处理的是(一个文件)。对于Apex来说,这目前可能没有什么区别,但是PMD正越来越倾向于将分析之间的信息交叉(即:我们计划将当前的数据流分析/控制流图代码扩展到进程间调用),因此能够让PMD在一次运行中控制完整的项目分析将是最好的。

因此,我想看看PMD.doPmd。您可能应该编写自己版本的此类方法,但应涵盖大部分基本知识:

  1. 使用设置(线程、要使用的规则集等)创建一个PMDConfiguration对象。
  2. RuleSetFacory根据您的配置创建规则集
  3. 获取具有要分析的源的List<DataSource>
  4. 创建一个RuleContext
  5. 设置收听报告的人。这将允许您作为POJO直接获取冲突(您可以避免实际生成报告文件并对其进行解析)
  6. 调用PMD.processFiles进行实际分析。

与PMD当前所做的工作不同的一点是步骤3,而不是指向文件(FileDataSource),您应该创建一个ReaderDataSource列表,在从db中检索到的源代码字符串周围使用StringReader

这是非常少的代码在你的一端,只是连接不同的部分已经在PMD。

P.S.这种方法的另一个优点是,作为一个非常高级别的PMD类,它是未来版本中最不可能经历API更改的类之一。PMD最近采用了语义版本控制,即将发布的版本(6.0.0)将引入几个API更改/删除不推荐的方法和类。

这可能不是要求这个的最好地方..。这主要是我偶然发现的,我不认为任何不熟悉PMD内部机制的人都能帮上忙。您可能希望更直接地与PMD开发团队联系(开发邮件列表、Github等等)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45043725

复制
相关文章
使用dbms_rowid包获得rowid的详细信息
Last Updated: Sunday, 2004-11-07 12:46 Eygle
数据和云01
2018/09/12
6210
如何在windows下和linux下获取文件(如exe文件)的详细信息和属性
最近在项目开发中,由cs开发的exe的程序,需要自动升级,该exe程序放在linux下,自动升级时检测不到该exe程序的版本号信息,但是我们客户端的exe程序需要获取服务器上新程序的版本号信息。最后由我用java实现linux上exe文件的版本号读取功能。下面是详细代码:
业余草
2019/01/21
6K0
如何在windows下和linux下获取文件(如exe文件)的详细信息和属性
Spring在无RedirectAttributes的情况下(如Interceptor中)使用Flash scope
判断逻辑很简单,但是重定向的时候需要前台有消息提示,如果是在Controller中,可以在方法上注入RedirectAttributes参数,但是Interceptor中默认没有这个参数,那么我们如何实现RedirectAttributes的flashMessage功能呢?
飞奔去旅行
2019/06/13
5.4K0
DevOps如何在不牺牲安全性的情况下迁移到云端
企业采用DevOps意味着开发进行将比以往任何时候都要快。那么如何确保一切都是安全的,尤其是将业务迁移到云端时? 调研机构Gartner公司预测, 2022年全球云计算服务市场规模和增长率几乎是整体I
CloudBest
2019/09/17
6940
DevOps如何在不牺牲安全性的情况下迁移到云端
如何在不导致服务器宕机的情况下,用 PHP 读取大文件
协作翻译 原文:How to Read Big Files with PHP (Without Killing Your Server) 链接:https://www.sitepoint.com/performant-reading-big-files-php/ 译者:Tocy, Tony, 南宫冰郁, Tot_ziens 作为PHP开发人员,我们并不经常需要担心内存管理。PHP 引擎在我们背后做了很好的清理工作,短期执行上下文的 Web 服务器模型意味着即使是最潦草的代码也不会造成持久的影响。 很少情况下
企鹅号小编
2018/02/11
1.6K0
如何在不导致服务器宕机的情况下,用 PHP 读取大文件
从磁盘I_O的角度理解SQL查询的成本
数据库存储的基本单位是页,对于一棵 B+ 树的索引来说,是先从根节点找到叶子节点,也就是先查找数据行所在的页,再将页读入到内存中,在内存中对页的记录进行查找,从而得到想要数据,想要查找的,只是一行记录,但是对于磁盘 I/O 来说却需要加载一页的信息,因为页是最小的存储单位。
Michel_Rolle
2023/08/18
2.5K0
golang fmt(格式换 I O接口)
fmt 方法可以大致分为 print, scan两类, 根据基础方法可以构建特定方法。
copy_left
2019/08/21
9840
EasyDSS如何在不更换地址的情况下扩容磁盘大小以增加存储空间?
对于EasyDSS录像存储的问题是大家咨询比较多的内容,EasyDSS平台内有默认的存储磁盘,当默认存储磁盘空间不足时就需要更改存储磁盘的地址或者对磁盘进行扩容,前文中我们分享过如何将RTMP协议视频直播点播平台EasyDSS录像文件存储在其他的空闲磁盘内,本文我们讲一下如何在不更换地址的情况下扩容磁盘的大小。
TSINGSEE青犀视频
2021/07/15
9230
EasyDSS如何在不更换地址的情况下扩容磁盘大小以增加存储空间?
如何在CDH启用Kerberos的情况下安装及使用Sentry(一)
本文档主要讲述如何在启用Kerberos的CDH集群中安装配置及使用Sentry。
Fayson
2018/03/29
3.5K2
如何在CDH启用Kerberos的情况下安装及使用Sentry(一)
java的IO技术中什么是I什么是O?
马克-to-win:很多老司机还搞不清什么是I什么是O。很简单,我有个土办法。以内存为单位,数据进内存叫In,出内存叫Out。读文件,是数据从硬盘进到内存,所以用in类型流来处理。
马克java社区
2021/05/06
1.5K0
java的IO技术中什么是I什么是O?
O2O的下半场,谁笑到最后?—— O2O下半场数据报告
中国O2O的发展以团购行业为开端,逐渐进入公众视野;而后O2O在各行各业遍地开花;在出行、家装、婚庆、家政、教育、旅游等领域涌现出一批O2O概念的企业;同时,BAT等巨头以资金和互联网基础设施(支付、搜索、社交、地图等)的优势纷纷入局。
IT阅读排行榜
2018/08/16
8860
O2O的下半场,谁笑到最后?—— O2O下半场数据报告
如何在CDH启用Kerberos的情况下安装及使用Sentry(二)
使用beeline连接HiveServer2,创建columnread角色并授权test表s1列的读权限,将columnread角色授权给fayson_r用户组
Fayson
2018/03/29
3.5K0
如何在CDH启用Kerberos的情况下安装及使用Sentry(二)
如何在CDH未启用认证的情况下安装及使用Sentry
CDH平台中的安全,认证(Kerberos/LDAP)是第一步,授权(Sentry)是第二步。如果要启用授权,必须先启用认证。但在CDH平台中给出了一种测试模式,即不启用认证而只启用Sentry授权。但强烈不建议在生产系统中这样使用,因为如果没有用户认证,授权没有任何意义形同虚设,用户可以随意使用任何超级用户登录HiveServer2或者Impala,并不会做密码校验。注:本文档仅适用于测试环境。
Fayson
2018/03/29
8.6K0
如何在CDH未启用认证的情况下安装及使用Sentry
不更新TP框架的情况下防止getshell漏洞
最近ThinkPHP框架出现了一个比较严重的漏洞,在没有开启强制路由的情况下可能的getshell漏洞,受影响的版本包括5.0.23和5.1.31之前的所有版本。 官方也很快提供了解决方案,大大的点个赞。但是只是讲了个重点,没讲太详细,对于一些新手和初学者可能不大方便操作。下面提供一些修复的方法,应该算是比较详细了。
jwj
2022/05/18
7520
Python 爬虫使用 Selenium 如何在 WebElement 获得属性
我们需要在 Doc 中选择我们的元素,这个叫做选择器,通常来说 HTML 很多不同的选择器。
HoneyMoose
2023/09/19
1570
Python 爬虫使用 Selenium 如何在 WebElement 获得属性
使用JPA原生SQL查询在不绑定实体的情况下检索数据
在这篇博客文章中,我将与大家分享我在学习过程中编写的JPA原生SQL查询代码。这段代码演示了如何使用JPA进行数据库查询,而无需将数据绑定到实体对象。通过本文,你将了解如何使用原生SQL查询从数据库中高效地检索数据。
高久峰
2023/08/07
7460
《前端实战总结》如何在不刷新页面的情况下改变URL
由于我们常用的http请求一般是基于XHR对象的实现或者fetch实现,这种请求操作并不会触发浏览器url的变化,这样虽然也能正常请求数据并渲染到页面,但是如果用户在当前页面操作了某个get请求并得到了某条数据,想通过链接将当前看到的界面分享给其他人时,那么此时浏览器url并不会变化,通过链接只能访问到初始化的数据界面,此时并不能达到理想的效果。如下图所示:
徐小夕
2021/11/16
1.9K0
《前端实战总结》如何在不刷新页面的情况下改变URL
不联网的情况下,使用 electron-builder 快速打包全平台应用
Electron 之所以能够日益风靡,是因为其简单易用且对各个操作平台具有良好的支持。
编程三昧
2022/03/03
3.6K0
不联网的情况下,使用 electron-builder 快速打包全平台应用
点击加载更多

相似问题

推到Git报告时i/o超时

12

Maven PMD插件-不使用“mvn站点”命令或“pmd:pmd”生成报告

13

GNU time(1)报告错误的I/O计数

20

如何在不指定-O1的情况下获得gcc的-O1优化

44

找不到PMD报告

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文