使用分析助手配置 NOL

从配置开始

从 Object Flow 打开 NOL 配置对话框,或在配置构建时选择 辅助配置。助手没有侧边栏入口。它会保留当前项目、输入及完整的未保存编译配置,包括后端、目标和 NOL 声明。分析是独立的免费工具;运行分析不会启用对象局部化,也不会提交构建。

NOL 需要应用入口和动态边界的声明。可以搜索输入索引中的精确类、成员和资源路径。可读的方法签名用于区分重载,由编辑器填写精确的字节码描述符;外部符号仍可手动输入。这些声明描述预期应用行为,不要仅为消除诊断而随意扩大声明范围。

按引导流程配置

引导流程为 输入 → 入口点 → 解决问题 → 审阅 → 构建。

  1. 输入: 使用带入的 JAR 或选择输入。索引读取可选择的符号和资源,不执行应用。
  2. 入口点: 审阅后端提供的可能符合 public static void main(String[]) 的候选,并选择实际启动应用的方法。候选只是提议,不是完整的应用入口清单,也不会自动加入声明。需要时,应声明其他由外部调用的入口方法。
  3. 解决问题: 运行分析、阅读证据,并为相关边界准备声明。可以先准备多项修改,再运行一次分析;每次运行共同验证提交的输入与配置。
  4. 审阅: 查看配置差异,选择要返回外部草稿的 NOL 修改。已保存的项目默认值保持不变。也可以不修改声明直接返回。
  5. 构建: 明确决定是否为此次构建启用 NOL,再返回构建草稿、审阅并通过正常构建操作提交。启用 NOL 也会启用所选后端要求的模块设置,应审阅这些修改。分析与启用是两个独立选择。
配置分组声明内容
入口点可启动应用执行的方法,包括类和精确签名。
反射与 JNI通过这些边界可发现的类和成员,包括初始化及有意选择的全部声明成员。
序列化、代理与资源应用使用的序列化类、代理接口组合和资源声明。
保留规则必须保留的类声明或成员。保留声明本身不会新增执行入口。
类加载域域名称、父域和所属类。
枚举局部化关闭或已证明模式,其可用性取决于后端及 NOL 配置。

“应用到草稿”更新外部配置草稿,取消则不改变原配置。进入助手和返回时会保留完整的编译草稿及所选输入,包括无关模块的设置。保存项目是单独操作。高级 JSON 支持精确编辑,并与同一份配置往返;使用普通表单无需编写 JSON。报告路径和 schema 细节由服务管理。

分析并补全缺口

运行分析后查看证明结论、候选分类、错误和警告。可按位置或严重程度筛选问题并展开证据。候选资格只是分析结果,不表示优化已经发生。

可操作的诊断根据结构化的 configurationSection 和配置引导打开针对该问题的声明提示。提示解释受影响的边界,并要求选择精确的类、成员或资源。例如,无法确定的反射目标需要应用所有者提供真实目标类或成员。仅观察到一次反射 API 调用,不能证明所有可能目标。助手不会猜测目标,也不会解析英文诊断消息来决定声明内容。

先在本地准备声明,再为合并后的修改运行一次分析。审阅配置差异,选择要应用回草稿的 NOL 修改。其他编译设置和已保存的项目配置不会被覆盖。再次分析可比较已解决、仍存在和新增的问题。输入或配置变化后,旧证据会标记为尚未验证当前草稿;仅编辑声明并不能证明问题已经解决。

未声明入口点时,分析会保守纳入全部原始方法,包括可能被外部反射调用的私有方法。入口点警告用于解释这一范围,本身不会使证明变为不完整。只有能够覆盖应用的每个外部入口时,才应声明入口点;仅选择一个方便的方法来消除警告,会改变所声明的应用边界。

理解完成状态与下载

分析执行结束时,证明仍可能不完整。应阅读剩余问题,不要把执行完成理解为所有类都可局部化。进程失败与证明不完整是不同结果;失败的运行仍可能留下有用的诊断报告。如果进程在生成报告前失败,界面会明确说明。

需要完整证据或与协作者分享时,可下载原始 JSON。报告为私有,并遵循任务访问控制。分析不会生成新的已保护 JAR。包括失败运行在内,费用均为 0 NCU;上传、并发和资源限制仍然适用。