Skip to content

Latest commit

 

History

History
30 lines (21 loc) · 2.57 KB

README.md

File metadata and controls

30 lines (21 loc) · 2.57 KB

ReF12

Landing repo for discussions, issues, and wiki for https://ref12.io.

ref12.io is a replacement/successor to https://referencesource.microsoft.com, http://sourceroslyn.io, https://source.dot.net, and other sites generated by SourceBrowser. Though they serve a similar function, Ref12's architecture and backend are completely different.

To browse source, simply open https://ref12.io in your browser. By default, you can navigate the dotnet/runtime and other assorted repos currently found in https://source.dot.net. A much larger set of repos is available to sponsors. Our sponsors can also request other public repos to be added to the index. NOTE: Login is required for sponsors to view the full set of repos. See full list here.

Currently, indexing private repositories is not supported.

Contact us if you're interested in self-hosting the ReF12 engine on-prem for your private enterprise. We provide a license and paid support. Your private source code stays hosted on your infrastructure.

Features

  • Semantic analysis of C#, VB, and MSBuild
  • Syntax coloring for C#, VB, MSBuild, XML
  • Scope to a repo using format https://ref12.io/{owner}/{repository} (i.e https://ref12.io/dotnet/wpf)
  • Go To Definition (click on a reference)
  • Find All References (click on a definition)
  • Project Explorer - in any document click on the Project link at the bottom
  • Document Outline - for a document click on the button in top right to display types and members in the current file
  • Clicking on the partial keyword will display a list of all files where this type is declared
  • MSBuild files (.csproj etc) have hyperlinks

Conceptual design

Indexing happens in two phases: Analysis and Ingestion. During analysis, C#/VB source files are analyzed using Roslyn and files are generated containing the extracted semantic information. These files are typically packaged into a zip file and ingested elsewhere. During ingestion, the analysis files are loaded an their information is added to a custom database. The database is used to satisfy all queries. The database format allows it to be queried in a serverless manner using WASM but this is untenable for larger codebases or aggregations of codebases.

Indexing is incremental. Many repos can be analyzed and ingested at different times.

Limitations and known issues

  • Analysis requires a successful build of projects or successful extraction of compilation using Roslyn MSBuildWorkspace.