summaryrefslogtreecommitdiffstats
path: root/docs/ClangTools.html
diff options
context:
space:
mode:
Diffstat (limited to 'docs/ClangTools.html')
-rw-r--r--docs/ClangTools.html118
1 files changed, 118 insertions, 0 deletions
diff --git a/docs/ClangTools.html b/docs/ClangTools.html
new file mode 100644
index 0000000..0dfdc6a
--- /dev/null
+++ b/docs/ClangTools.html
@@ -0,0 +1,118 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<title>Clang Tools</title>
+<link type="text/css" rel="stylesheet" href="../menu.css">
+<link type="text/css" rel="stylesheet" href="../content.css">
+</head>
+<body>
+
+<!--#include virtual="../menu.html.incl"-->
+
+<div id="content">
+
+<h1>Clang Tools</h1>
+<p>Clang Tools are standalone command line (and potentially GUI) tools design
+for use by C++ developers who are already using and enjoying Clang as their
+compiler. These tools provide developer-oriented functionality such as fast
+syntax checking, automatic formatting, refactoring, etc.</p>
+
+<p>Only a couple of the most basic and fundamental tools are kept in the primary
+Clang Subversion project. The rest of the tools are kept in a side-project so
+that developers who don't want or need to build them don't. If you want to get
+access to the extra Clang Tools repository, simply check it out into the tools
+tree of your Clang checkout and follow the usual process for building and
+working with a combined LLVM/Clang checkout:</p>
+<ul>
+ <li>With Subversion:
+ <ul>
+ <li><tt>cd llvm/tools/clang/tools</tt></li>
+ <li><tt>svn co http://llvm.org/svn/llvm-project/clang-tools-extra/trunk
+ extra</tt></li>
+ </ul>
+ </li>
+ <li>Or with Git:
+ <ul>
+ <li><tt>cd llvm/tools/clang/tools</tt></li>
+ <li><tt>git clone http://llvm.org/git/clang-tools-extra.git extra</tt></li>
+ </ul>
+ </li>
+</ul>
+
+<p>This document describes a high-level overview of the organization of Clang
+Tools within the project as well as giving an introduction to some of the more
+important tools. However, it should be noted that this document is currently
+focused on Clang and Clang Tool developers, not on end users of these tools.</p>
+
+<!-- ======================================================================= -->
+<h2 id="org">Clang Tools Organization</h2>
+<!-- ======================================================================= -->
+
+<p>Clang Tools are CLI or GUI programs that are intended to be directly used by
+C++ developers. That is they are <em>not</em> primarily for use by Clang
+developers, although they are hopefully useful to C++ developers who happen to
+work on Clang, and we try to actively dogfood their functionality. They are
+developed in three components: the underlying infrastructure for building
+a standalone tool based on Clang, core shared logic used by many different tools
+in the form of refactoring and rewriting libraries, and the tools
+themselves.</p>
+
+<p>The underlying infrastructure for Clang Tools is the
+<a href="LibTooling.html">LibTooling</a> platform. See its documentation for
+much more detailed information about how this infrastructure works. The common
+refactoring and rewriting toolkit-style library is also part of LibTooling
+organizationally.</p>
+
+<p>A few Clang Tools are developed along side the core Clang libraries as
+examples and test cases of fundamental functionality. However, most of the tools
+are developed in a side repository to provide easy separation from the core
+libraries. We intentionally do not support public libraries in the side
+repository, as we want to carefully review and find good APIs for libraries as
+they are lifted out of a few tools and into the core Clang library set.</p>
+
+<p>Regardless of which repository Clang Tools' code resides in, the development
+process and practices for all Clang Tools are exactly those of Clang itself.
+They are entirely within the Clang <em>project</em>, regardless of the version
+control scheme.</p>
+
+
+<!-- ======================================================================= -->
+<h2 id="coretools">Core Clang Tools</h2>
+<!-- ======================================================================= -->
+
+<p>The core set of Clang tools that are within the main repository are tools
+that very specifically compliment, and allow use and testing of <em>Clang</em>
+specific functionality.</p>
+
+<h3 id="clang-check"><tt>clang-check</tt></h3>
+<p>This tool combines the LibTooling framework for running a Clang tool with the
+basic Clang diagnostics by syntax checking specific files in a fast, command line
+interface. It can also accept flags to re-display the diagnostics in different
+formats with different flags, suitable for use driving an IDE or editor.</p>
+
+<p>FIXME: Link to user-oriented clang-check documentation.</p>
+
+<h3 id="clang-fixit"><tt>clang-fixit</tt> (Not yet implemented!)</h3>
+<p>A tool which specifically applies the Clang fix-it hint diagnostic technology
+on top of a dedicated tool. It is designed to explore alternative interfaces for
+applying fix-it hints, including automatic application, prompting users with
+options for different fixes, etc.</p>
+
+<p><b>NB:</b> The clang-fixit tool is planned, but not yet implemented.</p>
+
+<p>FIXME: Link to user-oriented clang-fixit documentation.</p>
+
+<!-- ======================================================================= -->
+<h2 id="registerplugin">Extra Clang Tools</h2>
+<!-- ======================================================================= -->
+
+<p>As various categories of Clang Tools are added to the extra repository,
+they'll be tracked here. The focus of this documentation is on the scope and
+features of the tools for other tool developers; each tool should provide its
+own user-focused documentation.</p>
+
+</div>
+</body>
+</html>
+
OpenPOWER on IntegriCloud