You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Custom SQL在Sparx EA中统计指定包的函数数量并生成图表

在Sparx EA中限定Custom SQL的包范围统计函数总数

你需要修正原SQL的关联逻辑,并添加包过滤条件,就能限定搜索范围到指定包。以下是几种实用的方案:

基础版:仅统计指定包(不含子包)的函数总数

按包名称筛选

如果知道目标包的名称,用这个查询:

SELECT COUNT(t_object.Object_ID) AS 函数总数, t_package.Name AS 所属包
FROM t_object
JOIN t_package ON t_object.Package_ID = t_package.Package_ID
WHERE t_object.Stereotype = 'Function'
AND t_package.Name = '目标包名称' -- 替换成你要统计的包名
GROUP BY t_package.Name

按包ID筛选(更精准,避免重名)

包ID可以在Sparx EA中查看(选中包后,在属性面板里找ID),用这个更准确:

SELECT COUNT(t_object.Object_ID) AS 函数总数, t_package.Name AS 所属包
FROM t_object
JOIN t_package ON t_object.Package_ID = t_package.Package_ID
WHERE t_object.Stereotype = 'Function'
AND t_package.Package_ID = 123 -- 替换成目标包的实际ID
GROUP BY t_package.Name

进阶版:统计指定包及其所有子包的函数总数

如果目标包有嵌套的子包,需要递归查询包层级,才能包含所有子包下的函数:

WITH RecursivePackages AS (
    SELECT Package_ID, Name, Parent_ID
    FROM t_package
    WHERE Package_ID = 123 -- 替换成目标包ID
    UNION ALL
    SELECT p.Package_ID, p.Name, p.Parent_ID
    FROM t_package p
    JOIN RecursivePackages rp ON p.Parent_ID = rp.Package_ID
)
SELECT COUNT(t.Object_ID) AS 函数总数, rp.Name AS 所属根包
FROM t_object t
JOIN RecursivePackages rp ON t.Package_ID = rp.Package_ID
WHERE t.Stereotype = 'Function'
GROUP BY rp.Name

补充说明

  • 原SQL里t_object和t_package没有关联条件,会产生笛卡尔积,必须用JOIN通过Package_ID关联两者
  • 如果你需要保留每个函数的名称(和原查询逻辑一致),只需要把COUNT(t_object.Object_ID)改成t_object.Name,去掉GROUP BY即可,但这样返回的是单个函数列表,不是总数

内容的提问来源于stack exchange,提问作者Ken

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 15:05:25