DocumentCode
2487948
Title
Integrating a set of contract checking tools into Visual Studio
Author
Fähndrich, Manuel ; Barnett, Michael ; Leijen, Daan ; Logozzo, Francesco
Author_Institution
Microsoft Res., Redmond, WA, USA
fYear
2012
fDate
3-3 June 2012
Firstpage
43
Lastpage
48
Abstract
Integrating tools and extensions into existing languages, compilers, debuggers, and IDEs can be difficult, work-intensive, and often results in a one-off integration. In this paper, we report on our experience of building and integrating the CodeContract tool set into an existing programming environment. The CodeContract tools enable 1) authoring of contracts (preconditions, postconditions, and object invariants), 2) instrumenting contract checks into code, 3) statically checking code against contracts, and 4) visualizing contracts and results. We identify three characteristics of our integration that allowed us to reuse existing compilers and IDEs, increase the reach of our tools to multiple languages and target platforms, and maintain the tools over three consecutive versions of C# and Visual Studio with little effort. These principles are 1) use source embedding for new language features, 2) use target analysis and rewriting, and 3) use generic plug-ins to isolate tools from the IDE.
Keywords
C++ language; Visual BASIC; program compilers; program debugging; software tools; CodeContract tool; Integrating tools; Visual Studio; compilers; contract checking tools; debuggers; generic plug-ins; rewriting; source embedding; statically checking code; target analysis; Computer languages; Contracts; Feature extraction; Instruments; Libraries; Programming environments; Visualization; IDE; contracts; plug-ins; tools;
fLanguage
English
Publisher
ieee
Conference_Titel
Developing Tools as Plug-ins (TOPI), 2012 2nd Workshop on
Conference_Location
Zurich
Print_ISBN
978-1-4673-1819-8
Type
conf
DOI
10.1109/TOPI.2012.6229809
Filename
6229809
Link To Document