Eiffel具有按合同设计的功能。据此,对于任何例程,都有一个检查断言,如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 确实报告了违反合同的行为。
那么,如何通过命令行强制执行呢?是否有特定的标志可以使用?