Eiffel hat eine Funktion Design by Contract. Demnach wird für jede Routine überprüft, ob Assertionen wie require
und ensure
wahr sein müssen. Ich konnte jedoch nicht herausfinden, wie die Regel über die Befehlszeile erzwungen werden kann. Wenn die Assertions falsch sind, muss ein Fehler/eine Ausnahme vom Compiler oder zur Laufzeit ausgelöst werden.Wie erzwinge ich Assertionen für Eiffel über die Befehlszeile?
Zum Beispiel, wenn dies ist die Wurzelklasse,
class
APPLICATION
inherit
ARGUMENTS
create
make
feature {NONE}
object: TEST1
make
-- Run application.
do
create object
object.function(-1)
print(object.value)
end
end
und dies ist die TEST1
Klasse
class
TEST1
feature
value: INTEGER
-- value for testing
function(val: INTEGER)
-- Assign
require
val>0
do
value:=val
ensure
value>0
end
end
Das Programm kompiliert und ausgeführt ohne Fehler, obwohl beide die Behauptungen verletzt .
I
ec application.e
jedoch Eiffel Studio bin mit der Zusammenstellung hat eine Vertragsverletzung melden.
Also, wie kann man dies durch die Befehlszeile erzwingen? Gibt es eine bestimmte Flagge?
Dies funktioniert nicht für mich. Die Einstellung zeigt, dass alle Assertions auf "True" gesetzt sind, aber das Programm wird auch dann ausgeführt, wenn die Assertion verletzt wird, wenn ich es mit bash ausführe. – GoodDeeds
@GoodDeeds, Würden Sie versuchen, das Verzeichnis "EIFGENs" zu entfernen, indem Sie 'application.ecf' am Anfang des Projekts beibehalten und von Grund auf neu kompilieren? –