【问题标题】:Why does DOORS `isBaseline` seem to always return FALSE?为什么 DOORS `isBaseline` 似乎总是返回 FALSE?
【发布时间】:2019-02-05 15:33:33
【问题描述】:

我在 DOORS 模块中创建了一个新的主要基线,然后运行了一个包含行的小型 DXL 脚本

 Module mp = current
Baseline bp = getMostRecentBaseline(mp)
int majorVersion = major(bp)
int minorVersion = minor(bp)
print "major " majorVersion " minor " minorVersion "\n"
string suff = suffix(bp)
print "suffix " suff "\n"
bool bstat
bstat = isBaseline(mp)
print "bstat " bstat "\n"
ModuleVersion mv = moduleVersion(mp)
string basind = baselineIndex(mp)
print "baseline index " basind "\n"
bool otherbstat = baseline(mp)
print "otherstat " otherbstat "\n"
bool basv = isBaseline(mv)
print "version base " basv "\n"  

所有这些都返回 FALSE,表示该模块当前没有基线。自基线以来,我没有对任何属性进行任何编辑。我已经完成了创建新视图之类的操作。如果我运行 IBM DXL 宏将最新基线与“当前”版本进行比较,它会报告零差异。

所以我的问题是 - 各种 isBaseline 函数看什么导致它们返回 FALSE?或者,我是不是走错了路——我真正需要的只是一段 DXL 代码的 Q&D 代码,以检查我的模块自上一个基线建立以来是否没有针对内容进行编辑。

【问题讨论】:

    标签: versioning ibm-doors baseline


    【解决方案1】:

    主要问题是,当您的代码获取 ModuleVersion(第 11 行)时,它会使用获取模块当前版本的函数形式。第 14 行应该调用 isBaseline,而不是 baseline,从而使最后两行变得多余。

    有关 moduleVersion 函数的完整详细信息,请参阅 DXL 参考手册当前版本 (9.6.1) 的 p310。

    获得我认为您期望的结果的代码的最小修改版本如下:

    Module mp = current
    Baseline bp = getMostRecentBaseline(mp)
    int majorVersion = major(bp)
    int minorVersion = minor(bp)
    print "major " majorVersion " minor " minorVersion "\n"
    string suff = suffix(bp)
    print "suffix " suff "\n"
    bool bstat
    bstat = isBaseline(mp)
    print "bstat " bstat "\n"
    ModuleVersion mv = moduleVersion(uniqueID(mp), bp)
    string basind = baselineIndex(mp)
    print "baseline index " basind "\n"
    bool otherbstat = isBaseline(mv)
    print "otherstat " otherbstat "\n"
    bool basv = isBaseline(mv)
    print "version base " basv "\n"  
    

    在下面的版本中,为了清楚起见,我重命名了变量、重新排序了一些行并删除了一些不需要的内容:

    Module modCurrent   = current
    Baseline blLatest   = getMostRecentBaseline(modCurrent)
    
    int iMajorVersion   = major(blLatest)
    int iMinorVersion   = minor(blLatest)
    
    string sBLSuffix    = suffix(blLatest)
    
    print "last baseline: major " iMajorVersion " minor " iMinorVersion " suffix " sBLSuffix "\n"
    
    bool bIsBaseline = isBaseline(modCurrent)
    
    print "bIsBaseline = " bIsBaseline "\n"
    
    ModuleVersion mv    = moduleVersion(uniqueID(modCurrent), blLatest)
    Module modBaselined = load(mv, false)
    
    string basind = baselineIndex(modBaselined)
    
    print "baseline index = " basind "\n"
    
    bIsBaseline = isBaseline(modBaselined)
    
    print "bIsBaseline = " bIsBaseline "\n"
    
    close(modBaselined)
    

    【讨论】:

    • 谢谢。我提供了多余的方法只是为了表明它们似乎都得出了相同的结果。您的代码很有帮助
    • 啊,有道理。不客气,卡尔。请您单击我的答案旁边的“向上”箭头为它记录“投票”吗?谢谢。
    【解决方案2】:

    看起来isBaseline 仅在当前模块视图设置为显示选定基线而不是“当前”工作视图时才返回 TRUE。 `isBaseline 及其兄弟不查看模块内容,因此不会看到基线版本和当前工作视图之间的任何潜在差异。

    我知道有各种 DXL 工具会对内容进行“比较”,因此可以单独处理。如this question 所述,有默认“比较”脚本的增强版本,例如在this DOORS forum 发布的脚本

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-10-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多