Google Kythe
   HOME

TheInfoList



OR:

Google Kythe is a
source code In computing, source code, or simply code, is any collection of code, with or without comments, written using a human-readable programming language, usually as plain text. The source code of a program is specially designed to facilitate the wo ...
indexer and
cross-reference The term cross-reference (abbreviation: xref) can refer to either: * An instance within a document which refers to related information elsewhere in the same document. In both printed and online dictionaries cross-references are important because ...
r for code comprehension which describes itself as a "pluggable, (mostly) language-agnostic ecosystem for building tools that work with code".


Overview

The core of Google Kythe is in defining language-agnostic protocols and data formats for representing, accessing and querying source code information as data. Kythe relies on an instrumented build system and compilers that produce indexing information, semantic information and metadata in Kythe specified format. This information obtained from running an instrumented build is stored in a language-agnostic
graph Graph may refer to: Mathematics *Graph (discrete mathematics), a structure made of vertices and edges **Graph theory, the study of such graphs and their properties *Graph (topology), a topological space resembling a graph in the sense of discre ...
structure. Finally, this graph structure can be queried to answer questions about the code base. Google Kythe is an
open-source Open source is source code that is made freely available for possible modification and redistribution. Products include permission to use the source code, design documents, or content of the product. The open-source model is a decentralized sof ...
project being developed by
Google Google LLC () is an American multinational technology company focusing on search engine technology, online advertising, cloud computing, computer software, quantum computing, e-commerce, artificial intelligence, and consumer electronics. ...
. It is licensed under an Apache licence 2.0.


Grok

Google Kythe originates from an internal project called Grok. Grok had been proposed by
Steve Yegge Steve Yegge is an American computer programmer and blogger who is known for writing about programming languages, productivity and software culture through his "Stevey's Drunken Blog Rants" site, followed by "Stevey's Blog Rants." Education Yegge ...
in 2008. Yegge observed that software projects routinely use more than 3 programming languages, yet development tools tend to be language specific and don't handle multiple programming languages well. Adding support for a language to an IDE is hard and the ad hoc analysis tools in IDEs tend to be inferior to real parsers and compilers. Some parts of Grok were publicly released even before Google Kythe was announced. In 2010, Google released a Python static analyzer which has been developed as part of Grok. In 2012, C++, Java, Python, JS and "2 internal languages" were supported by Grok. There was a browser client with support for querying the database and visually navigating through the source code. There was an
Emacs Emacs , originally named EMACS (an acronym for "Editor MACroS"), is a family of text editors that are characterized by their extensibility. The manual for the most widely used variant, GNU Emacs, describes it as "the extensible, customizable, s ...
client.
Chromium Chromium is a chemical element with the symbol Cr and atomic number 24. It is the first element in group 6. It is a steely-grey, lustrous, hard, and brittle transition metal. Chromium metal is valued for its high corrosion resistance and hardne ...
Code Search Browser uses Grok index to provide quick links to definition for every symbol in the source code.


Reception


See also

*
Clang Clang is a compiler front end for the C, C++, Objective-C, and Objective-C++ programming languages, as well as the OpenMP, OpenCL, RenderScript, CUDA, and HIP frameworks. It acts as a drop-in replacement for the GNU Compiler Collection (GCC), ...
*
Language Server Protocol The Language Server Protocol (LSP) is an open, JSON-RPC-based protocol for use between source code editors or integrated development environments (IDEs) and servers that provide programming language-specific features like code completion, syntax hig ...
*
LXR Cross Referencer LXR Cross Referencer, usually known as LXR, is a general-purpose source code indexer and cross-referencer for code comprehension that provides web-based browsing of source code, with links to the definition and usage of any identifier. History ...
*
OpenGrok OpenGrok is a source code search and cross-reference engine. It helps programmers to search, cross-reference, and navigate source code trees to aid code comprehension. It can understand various program file formats and version control histories ...


References


External links


Grok


Notes from the Mystery Machine Bus
blog

blog
Stanford Seminar - Google's Steve Yegge on GROK
lecture
Project Grok - Steve Yegge - Emacs Conference 2013
talk
Steve Yegge on Scalable Programming Language Analysis
talk


Kythe


Kythe
(Google Kythe Homepage)
Indexing Large, Mixed-Language Codebases
talk


Similar projects


Facebook pfffsrclibOracle Frappé
ref>

Microsoft Language Server Protocol
designed as part of
Visual Studio Code Visual Studio Code, also commonly referred to as VS Code, is a source-code editor made by Microsoft with the Electron Framework, for Windows, Linux and macOS. Features include support for debugging, syntax highlighting, intelligent code complet ...
, with implementations for several languages and integrated by several other development tools. Code comprehension tools Code navigation tools Code search engines Kythe {{Google-stub