• 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