{"id":22350815,"url":"https://github.com/tcs1896/sharpchecker","last_synced_at":"2025-06-13T21:34:49.358Z","repository":{"id":144187990,"uuid":"89978635","full_name":"tcs1896/SharpChecker","owner":"tcs1896","description":"Type Annotation Analysis Using the .NET Compiler Platform","archived":false,"fork":false,"pushed_at":"2017-06-05T23:43:05.000Z","size":4541,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-05-27T16:07:14.395Z","etag":null,"topics":["annotation-analysis","csharp-code","roslyn","visual-studio"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tcs1896.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-05-02T01:30:55.000Z","updated_at":"2021-03-11T01:24:43.000Z","dependencies_parsed_at":null,"dependency_job_id":"b5646c0e-14ac-4756-97a7-f6b7c5980e2a","html_url":"https://github.com/tcs1896/SharpChecker","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/tcs1896/SharpChecker","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tcs1896%2FSharpChecker","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tcs1896%2FSharpChecker/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tcs1896%2FSharpChecker/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tcs1896%2FSharpChecker/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tcs1896","download_url":"https://codeload.github.com/tcs1896/SharpChecker/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tcs1896%2FSharpChecker/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":259723706,"owners_count":22901961,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["annotation-analysis","csharp-code","roslyn","visual-studio"],"created_at":"2024-12-04T12:11:04.733Z","updated_at":"2025-06-13T21:34:49.330Z","avatar_url":"https://github.com/tcs1896.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"## Student: Theodore Sill\n## Advisor: Professor Matthew Fluet\n\n### B. Thomas Golisano College of Computing and Information Sciences\n### Rochester Institute of Technology\n### Rochester, New York\n\n### May 2017\n\nThe code in this repository was submitted in partial fulfillment of the requirements for \nthe degree of Master of Science in Computer Science\n\n#### Abstract\n\n\u003eProgramming language type and runtime systems provide powerful guarantees about the\n\u003ebehavior of a program when it is executed. However, they do not always ensure that a\n\u003eprogram will have the desired runtime characteristics, or that the outcomes will align with\n\u003ethe intent of the programmer. It is often necessary to provide additional assurances that a\n\u003eprogram is correct in this sense. Type annotation analysis frameworks are static analysis\n\u003etools that allow programmers to add additional information in the form of type annotations,\n\u003eand thus express their intent in such a way that it may be automatically verified.\n\u003e\n\u003eIn the past, creating a type annotation analysis tool would have been a large undertaking.\n\u003eMost compilers were black boxes which accepted source files as input and produced an\n\u003eexecutable as output. Those wishing to make use of a program representation, such as\n\u003ean Abstract Syntax Tree (AST), were forced to construct their own. Microsoft opened this\n\u003eblack box when they delivered the .NET Compiler Platform (code named “Roslyn”), which\n\u003eexposes several APIs.\n\u003e\n\u003eIn this work, we will explore these offerings and describe how they were leveraged to\n\u003ebuild a type annotation analysis tool for C#. We call this tool “Sharp Checker” in homage\n\u003eto the Checker Framework, which is a full-featured solution for Java. The contribution of\n\u003ethis work is to translate the mechanisms of annotation processing at work in tools like the\n\u003eChecker Framework to the Visual Studio IDE, where users receive feedback immediately\n\u003eas they type and upon compilation. Sharp Checker may be installed as a NuGet package,\n\u003eand the source code is available on GitHub. We have demonstrated Sharp Checker’s extensibility\n\u003eand usefulness by implementing the Encrypted, Nullness, and Tainted annotated\n\u003etype systems and applying them to the Sharp Checker source code, as well as publicly available\n\u003eapplications. In the process, we discovered and corrected several bugs, while gaining\n\u003einsights into the properties which may be enforced by type annotation analysis.\n\nFor more information about the content of this repository please see Repository ReadMe.pdf\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftcs1896%2Fsharpchecker","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftcs1896%2Fsharpchecker","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftcs1896%2Fsharpchecker/lists"}