https://github.com/tcs1896/sharpchecker
Type Annotation Analysis Using the .NET Compiler Platform
https://github.com/tcs1896/sharpchecker
annotation-analysis csharp-code roslyn visual-studio
Last synced: about 1 year ago
JSON representation
Type Annotation Analysis Using the .NET Compiler Platform
- Host: GitHub
- URL: https://github.com/tcs1896/sharpchecker
- Owner: tcs1896
- Created: 2017-05-02T01:30:55.000Z (about 9 years ago)
- Default Branch: master
- Last Pushed: 2017-06-05T23:43:05.000Z (about 9 years ago)
- Last Synced: 2025-05-27T16:07:14.395Z (about 1 year ago)
- Topics: annotation-analysis, csharp-code, roslyn, visual-studio
- Language: C#
- Homepage:
- Size: 4.33 MB
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
## Student: Theodore Sill
## Advisor: Professor Matthew Fluet
### B. Thomas Golisano College of Computing and Information Sciences
### Rochester Institute of Technology
### Rochester, New York
### May 2017
The code in this repository was submitted in partial fulfillment of the requirements for
the degree of Master of Science in Computer Science
#### Abstract
>Programming language type and runtime systems provide powerful guarantees about the
>behavior of a program when it is executed. However, they do not always ensure that a
>program will have the desired runtime characteristics, or that the outcomes will align with
>the intent of the programmer. It is often necessary to provide additional assurances that a
>program is correct in this sense. Type annotation analysis frameworks are static analysis
>tools that allow programmers to add additional information in the form of type annotations,
>and thus express their intent in such a way that it may be automatically verified.
>
>In the past, creating a type annotation analysis tool would have been a large undertaking.
>Most compilers were black boxes which accepted source files as input and produced an
>executable as output. Those wishing to make use of a program representation, such as
>an Abstract Syntax Tree (AST), were forced to construct their own. Microsoft opened this
>black box when they delivered the .NET Compiler Platform (code named “Roslyn”), which
>exposes several APIs.
>
>In this work, we will explore these offerings and describe how they were leveraged to
>build a type annotation analysis tool for C#. We call this tool “Sharp Checker” in homage
>to the Checker Framework, which is a full-featured solution for Java. The contribution of
>this work is to translate the mechanisms of annotation processing at work in tools like the
>Checker Framework to the Visual Studio IDE, where users receive feedback immediately
>as they type and upon compilation. Sharp Checker may be installed as a NuGet package,
>and the source code is available on GitHub. We have demonstrated Sharp Checker’s extensibility
>and usefulness by implementing the Encrypted, Nullness, and Tainted annotated
>type systems and applying them to the Sharp Checker source code, as well as publicly available
>applications. In the process, we discovered and corrected several bugs, while gaining
>insights into the properties which may be enforced by type annotation analysis.
For more information about the content of this repository please see Repository ReadMe.pdf