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'並重新編譯? –