objectionary/wpa

GitHub: objectionary/wpa

专为 EO 语言设计的全程序静态分析框架,通过跨文件联合检查 XMIR 中间表示来发现单文件 Lint 无法捕获的代码缺陷。

Stars: 4 | Forks: 3

# EO 的全程序分析器 [![此处遵循 EO 原则](https://www.elegantobjects.org/badge.svg)](https://www.elegantobjects.org) [![我们推荐 IntelliJ IDEA](https://www.elegantobjects.org/intellij-idea.svg)](https://www.jetbrains.com/idea/) [![mvn](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/e11741c42b220957.svg)](https://github.com/objectionary/wpa/actions/workflows/mvn.yml) [![PDD 状态](https://www.0pdd.com/svg?name=objectionary/wpa)](https://www.0pdd.com/p?name=objectionary/wpa) [![Maven Central](https://img.shields.io/maven-central/v/org.eolang/wpa.svg)](https://maven-badges.herokuapp.com/maven-central/org.eolang/wpa) [![Javadoc](https://www.javadoc.io/badge/org.eolang/wpa.svg)](https://www.javadoc.io/doc/org.eolang/wpa) [![许可证](https://img.shields.io/badge/license-MIT-green.svg)](https://github.com/objectionary/wpa/blob/master/LICENSE.txt) 这个 Java 包是一组全程序分析器 (也称为 WPA lints),专为 [XMIR] 设计——[EO] 对象的 一种中间表示。WPA lints 会将一组 XMIR 文件放在一起进行分析, 而不是每次只分析一个文件。 单文件 lints 位于一个单独的包中, [`org.eolang:lints`](https://github.com/objectionary/lints), 本库正是构建于该包之上。 将其添加到您的项目中: ``` org.eolang wpa ``` 然后,使用 `Program` 类对 XMIR 文件运行全程序分析: ``` import java.nio.file.Paths; import org.eolang.lints.Program; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; final class Foo { @Test void testProgram() { Assertions.assertTrue( new Program( Paths.get("xmir-files") ).defects().isEmpty() ); } } ``` 您可以借助 XMIR 源文件中的 `+unlint` 元信息来禁用任何特定的 linter。 ## 本库的设计 该库被设计为一组 `Lint>` 实现。`Program` 类是公共入口点——它会发现目录中的 `.xmir` 文件,运行所有 WPA lints,并返回收集到的缺陷。 向库用户暴露的类: * `Program` — 一组 [XMIR] 的检查器 * `Defect` — 发现的单个缺陷(来自 `org.eolang:lints`) * `Severity` — 缺陷的严重程度(来自 `org.eolang:lints`) ## 如何贡献 Fork 本仓库,进行修改,然后向我们发送 pull request。 我们将审查您的更改,并在不违反我们质量标准的前提下, 尽快将它们应用到 `master` 分支。 为避免不必要的麻烦,在向我们发送 pull request 之前,请 运行完整的 Maven 构建: ``` mvn clean install -Pqulice ``` 您需要 Maven 3.8+ 和 Java 11+。
标签:EO语言, JS文件枚举, Linter, pptx, XMIR, 中间表示, 代码分析, 代码规范, 全程序分析, 凭证管理, 域名枚举, 数据管道, 编程语言, 编译器插件, 缺陷检测, 软件工程, 错误基检测, 静态代码分析