Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(58)

Unified Diff: docs/clang_tool_refactoring.md

Issue 1306233003: Markdown style fixes for: (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: style changes Created 5 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « docs/clang_format.md ('k') | docs/closure_compilation.md » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: docs/clang_tool_refactoring.md
diff --git a/docs/clang_tool_refactoring.md b/docs/clang_tool_refactoring.md
index 20378109a4aefd7665794a3f2af2b07f092ed86c..929d8a278326aa397e57d37211345de1965f97e1 100644
--- a/docs/clang_tool_refactoring.md
+++ b/docs/clang_tool_refactoring.md
@@ -1,52 +1,100 @@
-# Caveats
- * The current workflow requires git.
- * This doesn't work on Windows... yet. I'm hoping to have a proof-of-concept working on Windows as well ~~in a month~~ several centuries from now.
+# Clang Tool Refactoring
-# Prerequisites
-Everything needed should be in a default Chromium checkout using gclient. third\_party/llvm-build/Release+Asserts/bin should be in your `$PATH`.
+[TOC]
-# Writing the Tool
-An example clang tool is being implemented in https://codereview.chromium.org/12746010/. Other useful resources might be the [basic tutorial for Clang's AST matchers](http://clang.llvm.org/docs/LibASTMatchersTutorial.html) or the [AST matcher reference](http://clang.llvm.org/docs/LibASTMatchersReference.html).
+## Caveats
-Build your tool by running the following command (requires cmake version 2.8.10 or later):
-```
-tools/clang/scripts/update.sh --force-local-build --without-android --with-chrome-tools <tools>
-```
-`<tools>` is a semicolon delimited list of subdirectories in `tools/clang` to build. The resulting binary will end up in `third_party/llvm-build/Release+Asserts/bin`. For example, to build the Chrome plugin and the empty\_string tool, run the following:
-```
-tools/clang/scripts/update.sh --force-local-build --without-android --with-chrome-tools "plugins;empty_string"
+* The current workflow requires git.
+* This doesn't work on Windows... yet. I'm hoping to have a proof-of-concept
+ working on Windows as well ~~in a month~~ several centuries from now.
+
+## Prerequisites
+
+Everything needed should be in a default Chromium checkout using gclient.
+`third_party/llvm-build/Release+Asserts/bin` should be in your `$PATH`.
+
+## Writing the Tool
+
+An example clang tool is being implemented in
+https://codereview.chromium.org/12746010/. Other useful resources might be the
+[basic tutorial for Clang's AST matchers](http://clang.llvm.org/docs/LibASTMatchersTutorial.html)
+or the
+[AST matcher reference](http://clang.llvm.org/docs/LibASTMatchersReference.html).
+
+Build your tool by running the following command (requires cmake version 2.8.10
+or later):
+
+```shell
+tools/clang/scripts/update.sh --force-local-build --without-android \
+--with-chrome-tools <tools>
```
-When writing AST matchers, the following can be helpful to see what clang thinks the AST is:
+`<tools>` is a semicolon delimited list of subdirectories in `tools/clang` to
+build. The resulting binary will end up in
+`third_party/llvm-build/Release+Asserts/bin`. For example, to build the Chrome
+plugin and the empty\_string tool, run the following:
+
+```shell
+tools/clang/scripts/update.sh --force-local-build --without-android \
+--with-chrome-tools "plugins;empty_string"
```
+
+When writing AST matchers, the following can be helpful to see what clang thinks
+the AST is:
+
+```shell
clang++ -cc1 -ast-dump foo.cc
```
-# Running the tool
-First, you'll need to generate the compilation database with the following command:
-```
+## Running the tool
+
+First, you'll need to generate the compilation database with the following
+command:
+
+```shell
cd $HOME/src/chrome/src
-ninja -C out/Debug -t compdb cc cxx objc objcxx > out/Debug/compile_commands.json
+ninja -C out/Debug -t compdb cc cxx objc objcxx > \
+out/Debug/compile_commands.json
```
-This will dump the command lines used to build the C/C++ modules in all of Chromium into the resulting file. Then run the following command to run your tool across all Chromium code:
-```
-# Make sure all chromium targets are built to avoid missing generated dependencies
+This will dump the command lines used to build the C/C++ modules in all of
+Chromium into the resulting file. Then run the following command to run your
+tool across all Chromium code:
+
+```shell
+# Make sure all chromium targets are built to avoid missing generated
+# dependencies
ninja -C out/Debug
-tools/clang/scripts/run_tool.py <toolname> <path/to/directory/with/compile_commands.json> <path 1> <path 2> ...
+tools/clang/scripts/run_tool.py <toolname> \
+<path/to/directory/with/compile_commands.json> <path 1> <path 2> ...
```
-`<path 1>`, `<path 2>`, etc are optional arguments you use to filter the files that will be rewritten. For example, if you only want to run the `empty-string` tool on files in `chrome/browser/extensions` and `sync`, you'd do something like:
-```
-tools/clang/scripts/run_tool.py empty_string out/Debug chrome/browser/extensions sync
+`<path 1>`, `<path 2>`, etc are optional arguments you use to filter the files
+that will be rewritten. For example, if you only want to run the `empty-string`
+tool on files in `chrome/browser/extensions` and `sync`, you'd do something like:
+
+```shell
+tools/clang/scripts/run_tool.py empty_string out/Debug \
+chrome/browser/extensions sync
```
-# Limitations
-Since the compile database is generated by ninja, that means that files that aren't compiled on that platform won't be processed. That means if you want to apply a change across all Chromium platforms, you'll have to run the tool once on each platform.
+## Limitations
+
+Since the compile database is generated by ninja, that means that files that
+aren't compiled on that platform won't be processed. That means if you want to
+apply a change across all Chromium platforms, you'll have to run the tool once
+on each platform.
+
+## Testing
-# Testing
`test_tool.py` is the test harness for running tests. To use it, simply run:
-```
+
+```shell
test_tool.py <tool name>
```
-Note that name of the built tool and the subdirectory it lives in at `tools/clang` must match. What the test harness does is find all files that match the pattern `*-original.cc` in your tool's tests subdirectory. It then runs the tool across those files and compares it to the expected result, stored in `*-expected.cc`
+
+Note that name of the built tool and the subdirectory it lives in at
+`tools/clang` must match. What the test harness does is find all files that
+match the pattern `*-original.cc` in your tool's tests subdirectory. It then
+runs the tool across those files and compares it to the expected result, stored
+in `*-expected.cc`
« no previous file with comments | « docs/clang_format.md ('k') | docs/closure_compilation.md » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698