首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >doors dxl -死链接列表

doors dxl -死链接列表
EN

Stack Overflow用户
提问于 2014-09-18 01:10:03
回答 3查看 3.4K关注 0票数 1

我喜欢使用dxl脚本,它可以让我列出无效的inlink,即列出指向已删除对象的链接。

我试过了,如果在门上有任何选择,但没有找到。

你能帮个忙吗。

谢谢

EN

回答 3

Stack Overflow用户

发布于 2015-01-01 12:26:45

我已经调查这个问题很长一段时间了,我还不能确定这个问题的原因,IBM也不能。标准做法应该是始终删除softDeleting对象之前的外部链接,并确保在进行对象修改或链接修改时,当用户在共享编辑中打开一个模块并锁定某个部分时,不要使用管理性删除锁定功能。这样做将有助于消除这个问题,但不是完全,因为它发生分配和我不能完全复制这个问题。

找到Deadlink的最好方法是使用targetAbsNo和sourceAbsNo,并检查源/目标对象中的传入/传出匹配的AbsNo和模块。如果您尝试将outlink目标设置为一个对象,DOORS将忽略此对象,并且它将找不到目标,即( object targetobj = DeadLink (Lnk))。

如果对象尚未清除,您仍然可以通过对源对象使用链接分析向导,创建到具有死链接的对象的新链接,然后删除此链接并保存更改,从而删除死链接。如果有死链的对象已经被清除了,我还没有找到一种方法来删除与不存在的对象的这种类型的链接。此外,您还需要知道具有死链接的未删除对象,以便这不会被softDeleted/purged,并与指向不存在的对象的外链产生问题。

我是凭空写出这段代码的,所以它没有经过测试,也不会工作,但你应该知道如何查找DeadLinks。object()以及Source和Target Module命名不正确,我不记得用于打开Target Modules的确切语法,并且我目前无法访问文档,抱歉。

将结果复制粘贴到excel中,你就会得到一个很好的电子表格。

代码语言:javascript
复制
Object objSrc 
Link lnkTargetLink
Module modMain = read("/Project/YourModule", true, true) 
modMain = current
filtering off
showDeletedObjects true
Buffer bufDeadObjects = create
bufDeadObjects = "Error\tSource Object\tTarget Module\tTarget Object\n"
for objSrc in modMain do {
    for lnkTargetLink in all(objSrc -> "*") do {
         Module targetMod = target module lnkTargetLink //Incorrect syntax
         int intTargetAbs = targetAbsNo lnkTargetLink 
         showDeletedObjects (true)
         filtering off
         Object objTarget = object(intTargetAbs, targetMod) 
         if(null objTarget) {
               bufDeadObjects += "Target Object Does not Exist\t"sourceAbsNo lnkTargetLink "\t" fullName targetMod "\t" intTargetAbs"\n"
         } else {
               Link lnkSourceLink
               bool boolFoundLink = false
               for lnkSourceLink in all(objTarget <- "*") do {
                    if(sourceAbsNo lnkSourceLink != intTargetAbs) continue
                    Module modSourceMod =  source module lnkSourceLink //Incorrect syntax
                    if(fullName modSourceMod != fullName targetMod ) continue
                    boolFoundLink = true
               }
               if(!boolFoundLink and isDeleted(objTarget)) {
                    bufDeadObjects += "DeadInlink on a Deleted Object\t"sourceAbsNo lnkTargetLink "\t" fullName targetMod "\t" intTargetAbs"\n"
               } else if (boolFoundLink and isDeleted(objTarget)){
                    bufDeadObjects += "Outlink to a Deleted Object\t"sourceAbsNo lnkTargetLink "\t" fullName targetMod "\t" intTargetAbs"\n"
               } else {
                    bufDeadObjects += "DeadOutlink\t"sourceAbsNo lnkTargetLink "\t" fullName targetMod "\t" intTargetAbs"\n"
               }
         }
    }
}
print stringOf (bufDeadObjects)
票数 2
EN

Stack Overflow用户

发布于 2014-10-02 17:12:59

我没有运行以下代码,这并不是最有效的,但它可以帮助您入门:

代码语言:javascript
复制
Link lnk ; for lnk in all obj->"*" do
{
    ModuleVersion targetmv = targetVersion(lnk)
    Module targetmod = load(mv,false)
    Object targetobj = target(lnk)
    if((null targetobj) || (isDeleted targetobj)) { /*dead link*/ }
    close(targetmod)
    delete(targetmv)
}
票数 0
EN

Stack Overflow用户

发布于 2015-05-06 20:24:03

Edit > Purge all将清除/移除所有已删除的对象,包括它们的所有死链接!

请注意,执行此操作后,不能取消删除。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25896493

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档