Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Safonov / AMPN_Lab4_SpecSharp.doc
Скачиваний:
142
Добавлен:
16.04.2015
Размер:
275.46 Кб
Скачать
  1. Сборка проекта Bag

Для сборки проекта Bag выберем пункт основного меню Build / Rebuild solution. В результате сборка выполнится успешно, однако в окне “Output. Show output from Build” будет выдан целый ряд предупреждений. Приведем полностью содержимое окна:

------ Rebuild All started: Project: Project4, Configuration: Debug .NET ------

Spec# program verifier: Creating BoogiePL program

Spec# program verifier: Checking BoogiePL program

Spec# program verifier: Verifying method 1 of 12: Bag.SpecSharp::CheckInvariant(System.Boolean) (implementation Bag.SpecSharp.CheckInvariant$System.Boolean)... 0 error(s) found

Spec# program verifier: Verifying method 2 of 12: Bag.#ctor(System.Int32[]) (implementation Bag..ctor$System.Int32.array)... 1 error(s) found

Spec# program verifier: Verifying method 3 of 12: Bag.#ctor(optional(Microsoft.Contracts.NonNullType) System.Int32[],System.Int32,System.Int32) (implementation Bag..ctor$System.Int32.array$notnull$System.Int32$System.Int32)... 2 error(s) found

Spec# program verifier: Verifying method 4 of 12: Bag.RemoveMin (implementation Bag.RemoveMin)... 4 error(s) found

Spec# program verifier: Verifying method 5 of 12: Bag.Add(System.Int32) (implementation Bag.Add$System.Int32)... 5 error(s) found

Spec# program verifier: Verifying method 6 of 12: Bag..cctor (implementation Bag..cctor)... 0 error(s) found

Spec# program verifier: Verifying method 7 of 12: BagFixed.SpecSharp::CheckInvariant(System.Boolean) (implementation BagFixed.SpecSharp.CheckInvariant$System.Boolean)... 0 error(s) found

Spec# program verifier: Verifying method 8 of 12: BagFixed.#ctor(optional(Microsoft.Contracts.NonNullType) System.Int32[]) (implementation BagFixed..ctor$System.Int32.array$notnull)... 0 error(s) found

Spec# program verifier: Verifying method 9 of 12: BagFixed.#ctor(optional(Microsoft.Contracts.NonNullType) System.Int32[],System.Int32,System.Int32) (implementation BagFixed..ctor$System.Int32.array$notnull$System.Int32$System.Int32)... 0 error(s) found

Spec# program verifier: Verifying method 10 of 12: BagFixed.RemoveMin (implementation BagFixed.RemoveMin)... 0 error(s) found

Spec# program verifier: Verifying method 11 of 12: BagFixed.Add(System.Int32) (implementation BagFixed.Add$System.Int32)... 0 error(s) found

Spec# program verifier: Verifying method 12 of 12: BagFixed..cctor (implementation BagFixed..cctor)... 0 error(s) found

Spec# program verifier: Finished

C:\Documents and Settings\saf\My Documents\Visual Studio 2008\Projects\Project4\Project4\BagBroken.ssc(11,5): warning CS2663: array reference might be null

C:\Documents and Settings\saf\My Documents\Visual Studio 2008\Projects\Project4\Project4\BagBroken.ssc(11,18): warning CS2638: Using possibly null pointer to get array length

C:\Documents and Settings\saf\My Documents\Visual Studio 2008\Projects\Project4\Project4\BagBroken.ssc(24,5): warning CS2663: Call of System.Array.Copy(System.Array! sourceArray, int sourceIndex, System.Array! destinationArray, int destinationIndex, int length), unsatisfied precondition: destinationIndex + length <= destinationArray.GetLowerBound(0) + destinationArray.Length

C:\Documents and Settings\saf\My Documents\Visual Studio 2008\Projects\Project4\Project4\BagBroken.ssc(24,5): warning CS2663: Call of System.Array.Copy(System.Array! sourceArray, int sourceIndex, System.Array! destinationArray, int destinationIndex, int length), unsatisfied precondition: sourceIndex + length <= sourceArray.GetLowerBound(0) + sourceArray.Length

C:\Documents and Settings\saf\My Documents\Visual Studio 2008\Projects\Project4\Project4\BagBroken.ssc(29,14): warning CS2663: Method Bag.RemoveMin(), unsatisfied frame condition

C:\Documents and Settings\saf\My Documents\Visual Studio 2008\Projects\Project4\Project4\BagBroken.ssc(42,7): warning CS2663: (trace position)

C:\Documents and Settings\saf\My Documents\Visual Studio 2008\Projects\Project4\Project4\BagBroken.ssc(42,7): warning CS2663: Assignment to field Bag.count of non-exposed target object may break invariant: 0 <= count

C:\Documents and Settings\saf\My Documents\Visual Studio 2008\Projects\Project4\Project4\BagBroken.ssc(42,7): warning CS2663: (trace position)

C:\Documents and Settings\saf\My Documents\Visual Studio 2008\Projects\Project4\Project4\BagBroken.ssc(43,7): warning CS2663: Target array of assignment is not allowed to be committed

C:\Documents and Settings\saf\My Documents\Visual Studio 2008\Projects\Project4\Project4\BagBroken.ssc(42,7): warning CS2663: (trace position)

C:\Documents and Settings\saf\My Documents\Visual Studio 2008\Projects\Project4\Project4\BagBroken.ssc(43,13): warning CS2663: Array index possibly above upper bound

C:\Documents and Settings\saf\My Documents\Visual Studio 2008\Projects\Project4\Project4\BagBroken.ssc(42,7): warning CS2663: (trace position)

C:\Documents and Settings\saf\My Documents\Visual Studio 2008\Projects\Project4\Project4\BagBroken.ssc(47,15): warning CS2663: Method Bag.Add(int x), unsatisfied frame condition

C:\Documents and Settings\saf\My Documents\Visual Studio 2008\Projects\Project4\Project4\BagBroken.ssc(56,7): warning CS2663: (trace position)

C:\Documents and Settings\saf\My Documents\Visual Studio 2008\Projects\Project4\Project4\BagBroken.ssc(53,9): warning CS2663: The call to System.Array.Copy(System.Array! sourceArray, int sourceIndex, System.Array! destinationArray, int destinationIndex, int length) requires sourceArray to be peer consistent

C:\Documents and Settings\saf\My Documents\Visual Studio 2008\Projects\Project4\Project4\BagBroken.ssc(52,9): warning CS2663: (trace position)

C:\Documents and Settings\saf\My Documents\Visual Studio 2008\Projects\Project4\Project4\BagBroken.ssc(53,9): warning CS2663: The call to System.Array.Copy(System.Array! sourceArray, int sourceIndex, System.Array! destinationArray, int destinationIndex, int length) requires sourceArray to be peer consistent (owner must not be valid)

C:\Documents and Settings\saf\My Documents\Visual Studio 2008\Projects\Project4\Project4\BagBroken.ssc(52,9): warning CS2663: (trace position)

C:\Documents and Settings\saf\My Documents\Visual Studio 2008\Projects\Project4\Project4\BagBroken.ssc(56,7): warning CS2663: Target array of assignment is not allowed to be committed

C:\Documents and Settings\saf\My Documents\Visual Studio 2008\Projects\Project4\Project4\BagBroken.ssc(56,7): warning CS2663: (trace position)

C:\Documents and Settings\saf\My Documents\Visual Studio 2008\Projects\Project4\Project4\BagBroken.ssc(56,13): warning CS2663: Array index possibly above upper bound

C:\Documents and Settings\saf\My Documents\Visual Studio 2008\Projects\Project4\Project4\BagBroken.ssc(52,9): warning CS2663: (trace position)

Build complete -- 0 errors, 22 warnings

========== Rebuild All: 1 succeeded, 0 failed, 0 skipped ==========

Приведенные предупреждения весьма полезны. Их анализ позволит еще до выполнения программы исправить найденные ошибки.

Ряд ошибок найден статическим верификатором Boogie, встроенном в систему Spec#. Он сообщает о несоответствиях реализации и спецификации, которые могут быть найдены статически (без исполнения программы). Например, в конструкторе Bag используется вызов Array.Copy, неправильный пятый аргумент которого приводит к нарушению инварианта, что и фиксирует верификатор Boogie. Однако верификатор выводит свои сообщения как предупреждения, т.е. пользователю дается возможность исполнения программы, если ее сборка пройдет успешно.

Соседние файлы в папке Safonov