Почему DOORS `isBaseline`, кажется, всегда возвращает FALSE? - PullRequest
0 голосов
/ 30 августа 2018

Я создал новую основную базовую линию в модуле 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 смотрят на то, что заставляет их возвращать ЛОЖЬ? Или я поступаю неправильно - все, что мне действительно нужно, это бит Q & D кода DXL, чтобы проверить, что мой модуль не был отредактирован для контента с момента установления последнего базового уровня.

Ответы [ 2 ]

0 голосов
/ 31 августа 2018

Основная проблема заключается в том, что когда ваш код получает ModuleVersion (строка 11), он использует форму функции, которая получает текущую версию модуля. Строка 14 должна вызывать isBaseline , а не baseline , что делает последние две строки избыточными.

См. P310 текущей версии (9.6.1) Справочного руководства по DXL для получения полной информации о функции moduleVersion .

Ниже приведена минимально измененная версия вашего кода, которая дает ожидаемый результат:

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)
0 голосов
/ 30 августа 2018

Похоже, isBaseline возвращает значение ИСТИНА только в том случае, если текущий вид модуля настроен на отображение выбранной базовой линии, в отличие от «текущего» рабочего вида. `isBaseline и его братья не смотрят содержимое модуля и, следовательно, не увидят потенциальных различий между базовой версией и текущим рабочим представлением.

Я знаю о различных инструментах DXL, которые выполняют «сравнение» с содержимым, поэтому с ним можно работать отдельно. Как отмечалось на в этом вопросе , существуют улучшенные версии сценария сравнения по умолчанию, например, опубликованные на на этом форуме DOORS

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...