求助:使用DOORS DXL统计模块中无外向链接的需求数量
解决DOORS DXL脚本统计缺外向链接需求的问题
嘿,我来帮你搞定这个DOORS DXL脚本的问题!看起来你卡在条件判断和链接检查的环节了,我先给你一个能正常运行的脚本,再拆解关键细节帮你理解哪里可能出了问题。
完整可运行的DXL脚本
// 确保当前打开的是正式模块 Module current = currentModule() if (current == null || isBaseline(current)) { print "请打开一个正式模块后再运行脚本!\n" exit } int missingOutLinksCount = 0 Object obj // 遍历模块中的每个对象 for obj in current do { // 只关注类型为"Req"或"Obj"的对象 string objType = obj."Object Type" if (objType == "Req" || objType == "Obj") { // 检查该对象是否有外向链接 LinkSet outLinks = links(obj, outgoing) if (null outLinks || size(outLinks) == 0) { missingOutLinksCount++ // 可选:打印缺少链接的对象信息,方便定位 print "缺少外向链接的需求:ID=" obj."Absolute Number" ", 文本=" obj."Object Text" "\n" } } } print "\n统计结果:共有 " missingOutLinksCount " 个Req/Obj类型的需求缺少外向链接\n"
关键细节与常见错误排查
我猜你之前的条件判断失效,大概率是以下几个原因之一:
- 对象类型判断的属性名错误:DOORS中对象类型的标准属性是
"Object Type",如果拼写错误(比如写成ObjectType或者大小写不对),判断就会失效。一定要确保属性名和模块中的定义完全一致。 - 链接检查的方式不对:很多新手会误用
outgoing(obj),但正确获取外向链接集合的方式是links(obj, outgoing),然后通过size(outLinks)判断是否为空集合。 - 大小写不匹配:DOORS的属性值是区分大小写的,如果你的模块中对象类型是
req而不是Req,那判断条件也要对应调整,必须和实际值完全一致。 - 没有过滤正式模块:如果不小心在基线模块或者非正式模块运行脚本,也可能出现异常结果,脚本开头的判断就是为了避免这种情况。
如果运行脚本后还是有问题,可以先打印出每个对象的类型值,确认判断逻辑是否正确,比如在循环里加一行print "当前对象类型:" obj."Object Type" "\n",这样就能快速定位是不是类型判断的问题。
内容的提问来源于stack exchange,提问作者Chris Freund
相关产品推荐
相关产品推荐

