AppCAT 7 的 CLI 命令指南

本文介绍 AppCAT CLI 命令用法。

Commands

Name Description
appcat analyze 此子命令允许对输入源代码或二进制文件运行源代码分析。
appcat transform 此子命令允许将 XML 规则转换为 YAML。
appcat version 此子命令显示工具版本。

appcat analyze

以下部分提供了可用 appcat analyze 命令行参数的详细说明。

Required parameters

Parameter Description
--input 用于分析的应用程序源代码或二进制文件的路径。 对多个值使用逗号分隔的列表: --input <input1>,<input2>,... 默认值是 []
--output 存储分析结果的目录。

Optional parameters

Category Parameter Description
源和目标技术
--list-sources 显示可用的迁移源技术。
--list-targets 显示可用的迁移目标技术。
--source-s 指定要分析的源技术。 对多个值使用逗号分隔的列表 ,例如 --source <source1>,<source2>,...。 使用 --list-sources 参数列出所有可用源。
--target-t 指定用于分析的目标技术。 对多个值使用逗号分隔的列表 ,例如 --target <target1>,<target2>,...。 使用 --list-targets 参数列出所有可用目标。
Analysis options
--analyze-known-libraries 在源代码分析期间,启用对 AppCAT maven.default.index 中指定的已知开源库的分析。 默认值是 false
--custom-maven-settings 指定自定义 Maven 设置文件的路径。
--dry-run 检查标记的有效性,而不实际执行分析。 默认值是 false
--mode-m 设置分析模式。 必须是 full - 源代码 + 依赖项之一,以便分析源代码并列出依赖项,或者 source-only。 默认值是 full
--packages 指定要计算的应用程序类包。 对多个值使用逗号分隔的列表 ,例如 --packages <package1>,<package2>,...。 默认值是 []
Rule options
--code-snips-number 使用文件中的代码片段限制显示的事件数。 0 表示没有限制,因此会显示文件中包含代码片段的所有事件。 -1 表示不显示任何代码片段。 默认值是 0
--enable-default-rulesets 启用默认规则集的执行。 默认值是 true。 使用 --enable-default-rulesets=false 进行禁用。
--label-selector-l 根据指定的标签选择器表达式应用规则,例如 (konveyor.io/target=azure-aks && konveyor.io/source)
--rules 指定规则文件或目录。 对多个值使用逗号分隔的列表 ,例如 --rules <rule1>,<rule2>,...。 默认值是 []
Proxy settings
--http-proxy 定义用于从 Maven 存储库下载开源软件(OSS)库的 HTTP 代理 URL。
--https-proxy 定义用于从 Maven 存储库下载 OSS 库的 HTTPS 代理 URL。
--no-proxy 指定要从 Maven 存储库下载 OSS 库时从代理使用情况中排除的 URL。
报表和输出格式
--bulk 批量运行多个 analyze 命令时合并结果。 默认值是 false
--context-lines-number 设置每个检测到事件的输出中包含的源代码行数。 默认值是 100
--incident-selector 根据自定义变量表达式(例如, (!package=io.konveyor.demo.config-utils))筛选事件。
--output-format 选择输出格式。 yamljson。 默认值是 yaml
--overwrite 覆盖现有输出目录。 默认值是 false
--skip-static-report 跳过生成静态分析报告。 默认值是 false
Supported sources

--list-sources 参数显示了以下源技术:

Source name Description Source
Java 迁移 Java 应用程序的最佳做法。 java
Java EE 迁移 Java EE 技术的最佳做法。 java-ee
OpenJDK 使用 OpenJDK 迁移应用程序的最佳做法。 openjdk
OpenJDK 8 使用 OpenJDK 8 迁移应用程序的最佳做法。 openjdk8
OpenJDK 9 使用 OpenJDK 9 迁移应用程序的最佳做法。 openjdk9
OpenJDK 10 使用 OpenJDK 10 迁移应用程序的最佳做法。 openjdk10
OpenJDK 11 使用 OpenJDK 11 迁移应用程序的最佳做法。 openjdk11
OpenJDK 12 使用 OpenJDK 12 迁移应用程序的最佳做法。 openjdk12
OpenJDK 13 使用 OpenJDK 13 迁移应用程序的最佳做法。 openjdk13
OpenJDK 14 使用 OpenJDK 14 迁移应用程序的最佳做法。 openjdk14
OpenJDK 15 使用 OpenJDK 15 迁移应用程序的最佳做法。 openjdk15
OpenJDK 16 使用 OpenJDK 16 迁移应用程序的最佳做法。 openjdk16
OpenJDK 17 使用 OpenJDK 17 迁移应用程序的最佳做法。 openjdk17
OpenJDK 18 使用 OpenJDK 18 迁移应用程序的最佳做法。 openjdk18
OpenJDK 19 使用 OpenJDK 19 迁移应用程序的最佳做法。 openjdk19
OpenJDK 20 使用 OpenJDK 20 迁移应用程序的最佳做法。 openjdk20
OpenJDK 21 使用 OpenJDK 21 迁移应用程序的最佳做法。 openjdk21
Oracle JDK 使用 Oracle JDK 迁移应用程序的最佳做法。 oraclejdk
Oracle JDK 7 使用 Oracle JDK 7 迁移应用程序的最佳做法。 oraclejdk7
RMI 迁移使用 RMI 技术的 Java 应用程序的最佳做法。 rmi
RPC 迁移使用 RPC 技术的 Java 应用程序的最佳做法。 rpc
Spring 5 迁移使用 Spring 5 技术的应用程序的最佳做法。 spring5
Spring Boot 迁移 Spring Boot 技术的最佳做法。 springboot
EAP 迁移使用 JBoss EAP 技术的 Java 应用程序的最佳做法。 eap
EAP 7 迁移使用 JBoss EAP 7 技术的 Java 应用程序的最佳做法。 eap7
Support targets

--list-targets 参数显示了以下目标技术:

Target name Description Target
Azure App 服务 部署应用到 Azure 应用程序服务的最佳做法。 azure-appservice
Azure Kubernetes 服务 部署应用到 Azure Kubernetes 服务的最佳做法。 azure-aks
Azure 容器应用 部署应用到 Azure 容器应用的最佳做法。 azure-container-apps
Cloud Readiness 使应用程序云 (Azure) 准备就绪的一般最佳做法。 cloud-readiness
Linux 使应用程序 Linux 准备就绪的一般最佳做法。 linux
OpenJDK 11 使用 Java 11 运行 Java 8 应用程序的一般最佳做法。 openjdk11
OpenJDK 17 使用 Java 17 运行 Java 11 应用程序的一般最佳做法。 openjdk17
OpenJDK 21 使用 Java 21 运行 Java 17 应用程序的一般最佳做法。 openjdk21
配置忽略文件

在 AppCAT CLI 安装路径中,可以将该文件配置为 .appcat-ignore 在运行 appcat analyze 命令时排除指定的文件夹或路径。

Global parameters

Parameter Description
--disable-telemetry Disables telemetry.
--log-level 设置日志级别。 默认值是 4
--no-cleanup 防止在执行后对临时资源进行清理。

Examples

  • 分析源代码目录:

    appcat analyze --input <path-to-source> --output <path-to-output>
    
  • 使用特定源和目标技术分析源代码目录:

    appcat analyze \
        --input <path-to-source> \
        --output <path-to-output> \
        --source springboot \
        --target azure-aks,azure-appservice,azure-container-apps
    
  • 使用额外的自定义规则分析源代码目录:

    appcat analyze --input <path-to-source> --output <path-to-output> --rules <path-to-rules>
    
  • 仅使用自定义规则分析源代码目录,而不使用默认规则集:

    appcat analyze \
        --input /path/to/source \
        --output /path/to/output \
        --enable-default-rulesets=false \
        --rules /path/to/rules
    
  • 分析和向现有输出目录和静态报表添加更多应用程序分析:

    appcat analyze \
        --input=<path-to-source-A>,<path-to-source-B>,<path-to-source-C> \
        --output=<path-to-output-ABC> \
        --target=<target-name>
    appcat analyze 
        --bulk \
        --input=<path-to-source-D> \
        --output=<path-to-output-ABC> \
        --target=<target-name>
    appcat analyze \
        --bulk \
        --input=<path-to-source-E> \
        --output=<path-to-output-ABC> \
        --target=<target-name>
    
  • 分析源代码目录,并使用自定义行号保留检测到的上下文行:

    appcat analyze \
        --input <path-to-source> \
        --output <path-to-output> \
        --context-lines-number <line-number>
    

以下屏幕截图显示了使用 --context-lines-number 3示例:

appcat 报表问题代码片段差异与上下文行数参数的屏幕截图。

appcat transform

将 Windup XML 规则转换为 YAML。

Required parameters

Parameter Description
--rules 将 XML 规则转换为 YAML。

Global parameters

Parameter Description
--disable-telemetry Disables telemetry
--log-level 设置日志级别。 默认值是 4
--no-cleanup 防止在执行后对临时资源进行清理。

Examples

以下示例将 windup XML 规则转换为 YAML:

appcat transform rules --input <path-to-rule> --output <path-to-output-folder>

appcat version

显示工具的版本信息。

appcat version