AppCAT 7 的 CLI 命令指南

本文介绍 AppCAT CLI 命令用法。

Commands

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

appcat 分析

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

必需的参数

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

可选参数

Category Parameter Description
源和目标技术
--list-sources 显示可用的迁移源技术。
--list-targets 显示可用的迁移目标技术。
--list-capabilities 显示可用的迁移功能
--list-os 显示可用的迁移目标操作系统。
--source-s 指定要分析的源技术。 对多个值使用逗号分隔的列表 ,例如 --source <source1>,<source2>,...。 使用 --list-sources 参数列出所有可用源。
--target-t 指定用于分析的目标技术。 对多个值使用逗号分隔的列表 ,例如 --target <target1>,<target2>,...。 使用 --list-targets 参数列出所有可用目标。
--capability-c 指定用于分析的功能技术。 对多个值使用逗号分隔的列表 ,例如 --capability <capability1>,<capability2>,...。 使用 --list-capabilities 参数列出所有可用功能。
--os 指定用于分析的操作系统。 对多个值使用逗号分隔的列表 ,例如 --os <os1>,<os2>,...。 使用 --list-os 参数列出所有可用的作系统。
分析选项
--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>,...。 默认值是 []
规则选项
--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>,...。 默认值是 []
代理设置
--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
支持的源

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

源名称 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
支持的目标

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

目标名称 Description Target
Azure App 服务 部署应用到 Azure 应用程序服务的最佳做法。 azure-appservice
Azure Kubernetes 服务 部署应用到 Azure Kubernetes 服务的最佳做法。 azure-aks
Azure 容器应用 部署应用到 Azure 容器应用的最佳做法。 azure-container-apps
受支持的操作系统

--list-os 参数显示以下操作系统:

OS 名称 Description 操作系统
Linux 将应用程序迁移到 Linux 平台的最佳做法。 linux
Windows操作系统 将应用程序迁移到 Windows 平台的最佳做法。 windows
支持的功能

--list-capabilities 参数显示以下功能:

功能名称 Description 能力
容器化 容器化应用程序的最佳做法。 containerization
OpenJDK 11 迁移到 OpenJDK 11 的最佳做法。 openjdk11
OpenJDK 17 迁移到 OpenJDK 17 的最佳做法。 openjdk17
OpenJDK 21 迁移到 OpenJDK 21 的最佳做法。 openjdk21
配置忽略文件

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

全局参数

Parameter Description
--disable-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> \
        --source springboot \
        --target azure-aks,azure-appservice,azure-container-apps
        --capability containerization
        --os windows
    

    --target--capabilities-os 参数与 AND 条件结合使用,这意味着规则必须同时符合以下条件:

    • Azure 服务,例如 azure-aksazure-appserviceazure-container-apps
    • 检测容器化问题的功能。
    • Windows OS 平台。
  • 分析源代码目录,并使用自定义行号保留检测到的上下文行:

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

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

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

  • 在不带代码片段的情况下限制报表内容:

    appcat analyze \
        --input <path-to-source> \
        --output <path-to-output> \
        --code-snips-number -1
    

    当设置 --code-snips-number -1 时,代码片段不会导出到报表。 此行为有助于防止敏感数据被包含。

    AppCAT 报表的屏幕截图,显示了有代码片段和没有代码片段之间的差异。

    您还可以检查metadata.privacyMode中的report.json属性。

    PrivacyMode 值:

    • 不受限制 - 报表包含代码片段。
    • 受限 - 报表不包含代码片段。

appcat 转换

将 Windup XML 规则转换为 YAML。

必需的参数

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

全局参数

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

Examples

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

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

appcat 版本

显示工具的版本信息。

appcat version