Eiffel은 Design by Contract입니다. 이에 따르면 임의의 루틴에 대해 require
및 ensure
과 같은 어설 션이 true 여야한다는 확인이 있습니다. 그러나 어설 션이 false 인 경우 컴파일러에서 또는 런타임에 throw 된 오류/예외가 있어야한다는 명령 줄을 통해 규칙을 적용하는 방법을 찾을 수 없었습니다. 예를 들어 에펠 명령 행을 통해 어서션을 시행하려면 어떻게해야합니까?
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, 프로젝트 상단에서'application.ecf'를 보존하고 처음부터 다시 컴파일하면'EIFGENs' 디렉토리를 제거 하시겠습니까? –