Как мне применить утверждения для Eiffel через командную строку?

У Eiffel есть функция Design by Contract. Согласно этому, для любой рутины, есть проверка, что утверждения, такие как require а также ensure должно быть правдой. Тем не менее, я не смог выяснить, как применить правило через командную строку, что, если утверждения ложны, должна быть ошибка / исключение, выдаваемое компилятором или во время выполнения.

Например, если это корневой класс,

class
    APPLICATION

inherit
    ARGUMENTS

create
    make

feature {NONE}


    object: TEST1
    make
            -- Run application.
        do          
            create object
            object.function(-1)
            print(object.value)
        end
end

и это TEST1 учебный класс

class
    TEST1

feature

    value: INTEGER
            -- value for testing
    function(val: INTEGER)
            -- Assign
        require
            val>0
        do
            value:=val
        ensure
            value>0     
        end

end

Программа компилируется и выполняется без каких-либо ошибок, даже если оба утверждения нарушены.

Я компилирую используя

ec application.e

Тем не менее, Eiffel Studio сообщает о нарушении договора.

Итак, как можно обеспечить это через командную строку? Есть ли определенный флаг для использования?

1 ответ

Похоже, что версия EiffelStudio с графическим интерфейсом и версия EiffelStudio для командной строки используют разные значения по умолчанию при создании новых проектов: версия командной строки отключает мониторинг утверждений, а версия GUI включает мониторинг утверждений. Фактически вы можете открыть проект, созданный с помощью версии командной строки в графическом интерфейсе, или, наоборот, скомпилировать проект, созданный в версии с графическим интерфейсом, с помощью компилятора командной строки. Настройки проекта хранятся в .ecf файл и являются частью проекта, то есть это .ecf Файл должен распространяться вместе с проектом.

Чтобы решить конкретную проблему, которую вы описываете, откройте .ecf в GUI (Файл | Открыть проект | Добавить проект | Открыть), затем перейдите к Project | Настройки проекта | Утверждения, включите все утверждения и нажмите Сохранить, выйдите из версии GUI. Теперь, когда вы перекомпилируете свой проект из командной строки, утверждения будут включены, и вы получите трассировку исключений во время выполнения, как и ожидалось.

Другие вопросы по тегам