OLD | NEW |
1 # Clang Tool Refactoring | 1 # Clang Tool Refactoring |
2 | 2 |
3 [TOC] | 3 [TOC] |
4 | 4 |
5 ## Introduction | 5 ## Introduction |
6 | 6 |
7 Clang tools can help with global refactorings of Chromium code. Clang tools can | 7 Clang tools can help with global refactorings of Chromium code. Clang tools can |
8 take advantage of clang's AST to perform refactorings that would be impossible | 8 take advantage of clang's AST to perform refactorings that would be impossible |
9 with a traditional find-and-replace regexp: | 9 with a traditional find-and-replace regexp: |
10 | 10 |
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
118 ninja -C out/Debug # For non-Windows | 118 ninja -C out/Debug # For non-Windows |
119 ninja -d keeprsp -C out/Debug # For Windows | 119 ninja -d keeprsp -C out/Debug # For Windows |
120 | 120 |
121 # experimental alternative: | 121 # experimental alternative: |
122 $gen_targets = $(ninja -C out/gn -t targets all \ | 122 $gen_targets = $(ninja -C out/gn -t targets all \ |
123 | grep '^gen/[^: ]*\.[ch][pc]*:' \ | 123 | grep '^gen/[^: ]*\.[ch][pc]*:' \ |
124 | cut -f 1 -d :`) | 124 | cut -f 1 -d :`) |
125 ninja -C out/Debug $gen_targets | 125 ninja -C out/Debug $gen_targets |
126 ``` | 126 ``` |
127 | 127 |
128 On Windows, generate the compile DB first, and after making any source changes. | |
129 Then omit the `--generate-compdb` in later steps. | |
130 | |
131 ```shell | |
132 tools/clang/scripts/generate_win_compdb.py out/Debug | |
133 ``` | |
134 | |
135 Then run the actual clang tool to generate a list of edits: | 128 Then run the actual clang tool to generate a list of edits: |
136 | 129 |
137 ```shell | 130 ```shell |
138 tools/clang/scripts/run_tool.py <toolname> \ | 131 tools/clang/scripts/run_tool.py <toolname> \ |
139 --generate-compdb | 132 --generate-compdb |
140 out/Debug <path 1> <path 2> ... >/tmp/list-of-edits.debug | 133 out/Debug <path 1> <path 2> ... >/tmp/list-of-edits.debug |
141 ``` | 134 ``` |
142 | 135 |
143 `--generate-compdb` can be omitted if the compile DB was already generated and | 136 `--generate-compdb` can be omitted if the compile DB was already generated and |
144 the list of build flags and source files has not changed since generation. | 137 the list of build flags and source files has not changed since generation. |
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
210 | 203 |
211 ```shell | 204 ```shell |
212 tools/clang/scripts/test_tool.py <tool name> | 205 tools/clang/scripts/test_tool.py <tool name> |
213 ``` | 206 ``` |
214 | 207 |
215 The name of the tool binary and the subdirectory for the tool in | 208 The name of the tool binary and the subdirectory for the tool in |
216 `//tools/clang` must match. The test runner finds all files that match the | 209 `//tools/clang` must match. The test runner finds all files that match the |
217 pattern `//tools/clang/<tool name>/tests/*-original.cc`, runs the tool across | 210 pattern `//tools/clang/<tool name>/tests/*-original.cc`, runs the tool across |
218 those files, and compared it to the `*-expected.cc` version. If there is a | 211 those files, and compared it to the `*-expected.cc` version. If there is a |
219 mismatch, the result is saved in `*-actual.cc`. | 212 mismatch, the result is saved in `*-actual.cc`. |
OLD | NEW |