打造企业自己代码规范IDEA插件(中)
🚀 优质资源分享 🚀
学习路线指引(点击解锁)知识定位人群定位🧡 Python实战微信订餐小程序 🧡
进阶级本课程是python flask+微信小程序的完美结合,从项目搭建到腾讯云部署上线,打造一个全栈订餐系统。💛Python量化交易实战💛
入门级手把手带你打造一个易扩展、更安全、效率更高的量化交易系统
一些基本概念
在开始独立研发公司自己的代码规范检查规则之前,先介绍一些相关的基本概念。阿里巴巴代码规范很多规则其实都是基于开源框架PMD进行的研发。PMD用官方的话语介绍来说:PMD是一个源代码分析器。它可以发现常见的编程缺陷,如未使用的变量、空catch块、不必要的对象创建等。它支持多种语言。它可以用自定义规则进行扩展。它使用JavaCC和Antlr将源文件解析为抽象语法树(AST),并对其运行规则以查找冲突。规则可以用Java编写,也可以使用XPath查询。开源代码库:https://github.com/pmd/pmd这里涉及到一个很关键的概念——AST 抽象语法树(Abstract Syntax Tree)。AST运用场景其实非常多,日常我们研发过程中错误提示、代码高亮、代码格式化、代码转译等等实现的基础都基于AST。简单说,会通过词法分析和语法分析将代码转化成一种类似树样层次结构来进行描述,当然这种描述可以用XML格式。文字描述比较抽象,不妨看一个”Hello world”的具体AST语法树(Java 1.8),这样就很容易进行理解了。
另外一个概念XPath 是一门在XML 文档中查找信息的语言。本身和代码解析没有关系,但当AST通过XML格式描述时,XPath能够很好完成对相关节点进行查找。两者的结合就能进行违规代码的检查,这就是XPath规则代码规范检查基本原理。此外,与其配套的PMD-Designer规则可视化工具也很好用。例如阿里巴巴代码规范中 PackageNamingRule 就是非常典型的XPath规则。包名只能由小写字母、数字来组成,具体的XPath:private static final String XPATH = “//PackageDeclaration/Name” + “[not (matches(@Image, ‘^[a-z0-9]+(\\.[a-z][a-z0-9]*)*$’))]”;
下面先写个规则的例子来感受下自定义规则具体的操作;从检查代码中System.out 类似的日志输出开始。
Example :检查代码中System.out 类似的日志输出。
步骤一,运用PMD-Designer 来辅助编写具体XPath的检查规则;这个工具也可以验证各种代码写法下,规则是否都能起到很好的作用。最终XPath 具体规则如下:
//Name[starts-with(@Image, ‘System.out.print’) or starts-with(@Image, ‘System.err.print’)]
步骤二,新建一个具体的规则类,继承AbstractXpathRule ;其中AbstractXpathRule 本身是继承 PMD 中 XPathRule,主要扩展了多语言的设计。详细如下:
package com.alibaba.p3c.pmd.lang.java.rule.emo; …import static net.sourceforge.pmd.lang.rule.xpath.XPathRuleQuery.XPATH_2_0; public class VoidSystemPrintRule extends AbstractXpathRule { private static final String XPATH = ”//Name[starts-with(@Image, ’System.out.print’) or starts-with(@Image, ’System.err.print’)]”; public VoidSystemPrintRule() { setXPath(XPATH); setVersion(XPATH_2_0); } @Override public void addViolation(Object data, Node node, String arg) { ViolationUtils.addViolationWithPrecisePosition(this, node, data, I18nResources.getMessage(“java.naming.VoidSystemPrintRule.violation.msg”, node.getImage())); } }
步骤三:在messages.xml 和 messages_en.xml 分别添加检查出错后给出相关中英文提示。
程序中避免直接使用 System 对相关日志信息输出entry>—— Avoid using system printentry>
步骤四:新建emo-common.xml 的规则集合,并将实现的规则配置进去。
EmoJavaCommonRuledescription> 3priority> System.out.println(message); example> rule>ruleset>
步骤五:在ali-pmd.xml 中引入我们新加的规则集合 emo-common.xml。
最后运行下修改完的代码程序,效果如下:
综述下关键点,代码规范检查基本原理可以基于AST语法树来进行实现;AST结合Xpath可以方便进行相关规范规则的编写;通过 PMD-Designer 能可视化的帮助我们实现 XPath 的相关代码规范规则以及验证相关规则;给出了一个例子,基于阿里开源代码规范插件源码,编写适用自己公司的代码规范的方式。
附上相关代码github链接:https://github.com/ariesfly/emo-coding-guardian如有遇到问题欢迎公众号私信留言
Original: https://blog.csdn.net/u012804784/article/details/127099626Author: u012804784Title: 打造企业自己代码规范IDEA插件(中)
相关阅读Title: 2022版最新最详细Manim开发环境搭建
安装前提示Python版本要求: Python3.7+使用 pip 安装时,最好使用镜像,负责可能会因为网络安装失败,因为安装依赖较多且依赖包较大。
以豆瓣源镜像示例:
pip install 包名 -i https://pypi.douban.com/simple
提前升级 pip 到最新版本,否则会在本地安装依赖包时会报错提示因版本问题要求更新 pip ,命令如下:
python -m pip install –upgrade pip
同样也可以选择用镜像加速安装,比如:
python -m pip install –upgrade pip -i https://pypi.douban.com/simple版本安装说明
manim 分为 个人版 和 社区版 安装说明如下:
FFmpeg 和 MiKTeX 这两个是必装依赖
依赖安装
按版本需求执行对应命令,可使用上面提到的镜像加速安装
个人版安装# 安装 manimglpip install manimgl# 检测是否可以运行manimgl社区版安装# 安装 manimglpip install manim# 检测是否可以运行manimWindows安装
说明:Windows系统版本要求为 Windows10+
安装 FFmpeg 。安装 LaTeX 发行版。推荐使用 MiKTeX 。安装剩余的 Python 包。
P.S.可先在文末下载好所需的文件
安装 FFmpeg将下载好的FFmpeg压缩包解压出来,把文件夹名称改为 ffmpeg ,然后将文件夹剪切或复制到C盘根目录配置环境变量。依次打开 Windows设置->系统->关于->高级系统设置->高级->环境变量 ,然后根据需求在user或者系统变量里的 Path 中增加一条FFmpeg的bin路径,如: C:\ffmpeg\bin ,然后依次点击确定关闭所有窗口。用快捷键 Windows键 + r 打开cmd,输入 ffmpeg 命令看能否正常运行,也可通过 ffmpeg 查看FFmpeg版本信息。
P.S.Windows键也就是Windows系统图标的那个键,一般在 Ctrl 旁边
安装 MiKTeX
将下载好的 MiKTeX 的exe文件双击,一直下一步即可,中间有选择为user安装或者为所有用户安装,可根据自身需要选择。
安装剩余的 Python 包
特别说明: 安装社区版不需要此步骤!
可使用以下命令安装,但是要先安装Git版本控制工具,国内使用的话,clone这个文件一般会非常慢或者失败。建议使用文档末尾下载的源代码包,提取它,然后执行文件夹中的最后两个命令。[En]
It is recommended to use the source code package downloaded at the end of the document, extract it, and then execute the last two commands in the folder.*
git clone https://github.com/3b1b/manim.gitcd manimpip install -e .manimgl example_scenes.py OpeningManimExample
当你看到 Successful 的时候就说明安装成功了,此时所有环境配置完成,开始相关的学习吧!
截至2022-08-12最新软件版本:
P.S.该资源存储由本站自建云提供,由于资源下载人数较多且本站无广告以及无打赏,造成成本过高,现改为其他网盘存储
FFmpeg 百度云下载MiKTeX 阿里云下载 百度云下载Manim 百度云下载其他优秀软件推荐:TT-Dosbox打字练习百度云下载小霸王游戏机百度云下载
Original: https://www.cnblogs.com/markhoo/p/16705085.htmlAuthor: MarkHooTitle: 2022版最新最详细Manim开发环境搭建
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/305159/
转载文章受原作者版权保护。转载请注明原作者出处!