diff options
author | dim <dim@FreeBSD.org> | 2012-08-15 20:02:54 +0000 |
---|---|---|
committer | dim <dim@FreeBSD.org> | 2012-08-15 20:02:54 +0000 |
commit | 554bcb69c2d785a011a30e7db87a36a87fe7db10 (patch) | |
tree | 9abb1a658a297776086f4e0dfa6ca533de02104e /docs/ClangTools.html | |
parent | bb67ca86b31f67faee50bd10c3b036d65751745a (diff) | |
download | FreeBSD-src-554bcb69c2d785a011a30e7db87a36a87fe7db10.zip FreeBSD-src-554bcb69c2d785a011a30e7db87a36a87fe7db10.tar.gz |
Vendor import of clang trunk r161861:
http://llvm.org/svn/llvm-project/cfe/trunk@161861
Diffstat (limited to 'docs/ClangTools.html')
-rw-r--r-- | docs/ClangTools.html | 118 |
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> + |