Eiffel有一个功能Design by Contract。据此,对于任何例行公事,都有一个检查,例如require
和ensure
这些断言必须为真。但是,我一直无法找到如何通过命令行强制执行规则,如果断言为false,则编译器或运行时必须有错误/异常。如何通过命令行强制执行埃菲尔的断言?
例如,如果这是根类,
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
但是,编译,艾菲尔工作室确实发现有违反合同的。
那么,如何通过命令行执行此操作?有没有特殊的标志可供使用?
这不适合我。该设置显示所有断言都设置为true,但即使在使用bash运行它时断言被违反,程序仍会通过。 – GoodDeeds
@GoodDeeds,你会尝试删除'EIFGENs'目录,保存项目顶部的'application.ecf'并重新编译? –