Google Kythe

Last updated

Google Kythe
Developer(s) Google
Stable release
none yet (as of February 2015)
Written in C++, Go, Java, JavaScript, Shell, Clojure
Operating system Debian
Type Indexer and cross-referencer
License Apache License 2.0
Website kythe.io

Google Kythe is a source code indexer and cross-referencer for code comprehension which describes itself as a "pluggable, (mostly) language-agnostic ecosystem for building tools that work with code". [1]

Contents

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 structure. Finally, this graph structure can be queried to answer questions about the code base. [2]

Google Kythe is an open-source project being developed by Google. [3] 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 in 2008. [4] 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. [5]

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. [6]

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 client. [5]

Chromium Code Search Browser [7] uses Grok index to provide quick links to definition for every symbol in the source code. [8]

Reception

See also

Related Research Articles

An integrated development environment (IDE) is a software application that provides comprehensive facilities for software development. An IDE normally consists of at least a source-code editor, build automation tools, and a debugger. Some IDEs, such as NetBeans and Eclipse, contain the necessary compiler, interpreter, or both; others, such as SharpDevelop and Lazarus, do not.

<span class="mw-page-title-main">KDevelop</span> Integrated development environment

KDevelop is a free and open-source integrated development environment (IDE) for Unix-like computer operating systems and Windows. It provides editing, navigation and debugging features for several programming languages, and integration with build automation and version-control systems, using a plugin-based architecture.

Jython is an implementation of the Python programming language designed to run on the Java platform. The implementation was formerly known as JPython until 1999.

In computer-based language recognition, ANTLR, or ANother Tool for Language Recognition, is a parser generator that uses a LL(*) algorithm for parsing. ANTLR is the successor to the Purdue Compiler Construction Tool Set (PCCTS), first developed in 1989, and is under active development. Its maintainer is Professor Terence Parr of the University of San Francisco.

<span class="mw-page-title-main">Source-code editor</span> Text editor specializing in software code

A source-code editor is a text editor program designed specifically for editing source code of computer programs. It may be a standalone application or it may be built into an integrated development environment (IDE).

<span class="mw-page-title-main">Call graph</span> Structure in computing

A call graph is a control-flow graph, which represents calling relationships between subroutines in a computer program. Each node represents a procedure and each edge (f, g) indicates that procedure f calls procedure g. Thus, a cycle in the graph indicates recursive procedure calls.

Google Code Search was a free beta product from Google which debuted in Google Labs on October 5, 2006, allowing web users to search for open-source code on the Internet. Features included the ability to search using operators, namely lang:, package:, license:, and file:.

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, SYCL, and HIP frameworks. It acts as a drop-in replacement for the GNU Compiler Collection (GCC), supporting most of its compilation flags and unofficial language extensions. It includes a static analyzer, and several code analysis tools.

Web2py is an open-source web application framework written in the Python programming language. Web2py allows web developers to program dynamic web content using Python. Web2py is designed to help reduce tedious web development tasks, such as developing web forms from scratch, although a web developer may build a form from scratch if required.

<span class="mw-page-title-main">Chromium (web browser)</span> Open-source web browser project

Chromium is a free and open-source web browser project, mainly developed and maintained by Google. This codebase provides the vast majority of code for the Google Chrome browser, which is proprietary software and has some additional features. Chromium's logo is identical in shape to that of Google Chrome, but with blue colors instead of being multicolor.

Network UPS Tools (NUT) is a suite of software component designed to monitor power devices, such as uninterruptible power supplies, power distribution units, solar controllers and servers power supply units. Many brands and models are supported and exposed via a network protocol and standardized interface.

<span class="mw-page-title-main">OpenRefine</span> Application for data cleanup and data transformation

OpenRefine is an open-source desktop application for data cleanup and transformation to other formats, an activity commonly known as data wrangling. It is similar to spreadsheet applications, and can handle spreadsheet file formats such as CSV, but it behaves more like a database.

CppDepend is a static analysis tool for C/C++ code. This tool supports a large number of code metrics, allows for visualization of dependencies using directed graphs and dependency matrix. The tools also performs code base snapshots comparison, and validation of architectural and quality rules. User-defined rules can be written using LINQ queries. This possibility is named CQLinq. The tool also comes with a large number of predefined CQLinq code rules.

<span class="mw-page-title-main">GNOME Builder</span> General purpose integrated development environment (IDE) for the GNOME platform

GNOME Builder is a general purpose integrated development environment (IDE) for the GNOME platform, primarily designed to aid in writing GNOME-based applications. It was initially released on March 24, 2015. The application's tagline is "A toolsmith for GNOME-based applications".

<span class="mw-page-title-main">Bazel (software)</span> Software tool that automates software builds and tests

Bazel is a free and open-source software tool used for the automation of building and testing software. Google uses the build tool Blaze internally and released an open-sourced port of the Blaze tool as Bazel, named as an anagram of Blaze. Bazel was first released in March 2015 and was in beta status by September 2015.

Sourcegraph is a code search and code intelligence tool that semantically indexes and analyzes large codebases so that they can be searched across commercial, open-source, local, and cloud-based repositories. Sourcegraph supports all major programming languages.

Sourcetrail was a FOSS source code explorer that provided interactive dependency graphs and support for multiple programming languages including C, C++, Java and Python.

References

  1. "Google Open Source Blog: Kythe: a new approach to making developer tools". Google Open Source Blog.
  2. "Kythe - An Overview of Kythe". kythe.io.
  3. "Google Kythe Website". Google. Retrieved 23 February 2015.
  4. Steve Yegge. "Notes from the Mystery Machine Bus". plus.google.com.
  5. 1 2 Bryan Summersett. "Bryan Summersett - Steve Yegge and Grok". bsumm.net.
  6. "Issue 1541: new static analyzer from Google - Jython tracker". jython.org.
  7. "Chromium Code Search".
  8. "Kythe - Exploring Kythe's Sample Web UI". kythe.io. Archived from the original on 9 May 2015. Retrieved 30 April 2015.

Grok

Kythe

Similar projects


  1. Hawes, Nathan; Barham, Ben. "Using Clang to Visualize Large Codebases" (PDF). Retrieved 25 September 2015.