blob: c127765f1c9b4e3fc6d27e9e3d6fd8a15c7657b5 [file] [log] [blame] [view]
andybonsad92aa32015-08-31 02:27:441# Linux Eclipse Dev
andybons3322f762015-08-24 21:37:092
andybonsad92aa32015-08-31 02:27:443Eclipse can be used on Linux (and probably Windows and Mac) as an IDE for
4developing Chromium. It's unpolished, but here's what works:
andybons3322f762015-08-24 21:37:095
andybonsad92aa32015-08-31 02:27:446* Editing code works well (especially if you're used to it or Visual Studio).
7* Navigating around the code works well. There are multiple ways to do this
8 (F3, control-click, outlines).
9* Building works fairly well and it does a decent job of parsing errors so
10 that you can click and jump to the problem spot.
11* Debugging is hit & miss. You can set breakpoints and view variables. STL
12 containers give it (and gdb) a bit of trouble. Also, the debugger can get
13 into a bad state occasionally and eclipse will need to be restarted.
14* Refactoring seems to work in some instances, but be afraid of refactors that
15 touch a lot of files.
andybons3322f762015-08-24 21:37:0916
andybonsad92aa32015-08-31 02:27:4417[TOC]
andybons3322f762015-08-24 21:37:0918
andybonsad92aa32015-08-31 02:27:4419## Setup
20
21### Get & Configure Eclipse
andybons3322f762015-08-24 21:37:0922
Sam Goto0a2b48e2019-02-04 19:53:3923Eclipse 4.6.1 (Neon) is known to work with Chromium for Linux.
andybons3322f762015-08-24 21:37:0924
nodira6074d4c2015-09-01 04:26:4525* [Download](http://www.eclipse.org/downloads/) the distribution appropriate
26 for your OS. For example, for Linux 64-bit/Java 64-bit, use the Linux 64 bit
27 package (Eclipse Packages Tab -> Linux 64 bit (link in bottom right)).
andybonsad92aa32015-08-31 02:27:4428 * Tip: The packaged version of eclipse in distros may not work correctly
29 with the latest CDT plugin (installed below). Best to get them all from
30 the same source.
31 * Googlers: The version installed on Goobuntu works fine. The UI will be
32 much more responsive if you do not install the google3 plug-ins. Just
33 uncheck all the boxes at first launch.
34* Unpack the distribution and edit the eclipse/eclipse.ini to increase the
35 heap available to java. For instance:
36 * Change `-Xms40m` to `-Xms1024m` (minimum heap) and `-Xmx256m` to
37 `-Xmx3072m` (maximum heap).
38 * Googlers: Edit `~/.eclipse/init.sh` to add this:
andybons3322f762015-08-24 21:37:0939
nodira6074d4c2015-09-01 04:26:4540```
41export ECLIPSE_MEM_START="1024M"
42export ECLIPSE_MEM_MAX="3072M"
43```
andybonsad92aa32015-08-31 02:27:4444
45The large heap size prevents out of memory errors if you include many Chrome
46subprojects that Eclipse is maintaining code indices for.
47
48* Turn off Hyperlink detection in the Eclipse preferences. (Window ->
49 Preferences, search for "Hyperlinking, and uncheck "Enable on demand
50 hyperlink style navigation").
51
52Pressing the control key on (for keyboard shortcuts such as copy/paste) can
53trigger the hyperlink detector. This occurs on the UI thread and can result in
54the reading of jar files on the Eclipse classpath, which can tie up the editor
55due to the size of the classpath in Chromium.
56
57### A short word about paths
andybons3322f762015-08-24 21:37:0958
59Before you start setting up your work space - here are a few hints:
andybons3322f762015-08-24 21:37:0960
andybonsad92aa32015-08-31 02:27:4461* Don't put your checkout on a remote file system (e.g. NFS filer). It's too
62 slow both for building and for Eclipse.
63* Make sure there is no file system link in your source path because Ninja
64 will resolve it for a faster build and Eclipse / GDB will get confused.
65 (Note: This means that the source will possibly not reside in your user
66 directory since it would require a link from filer to your local
67 repository.)
andybons3322f762015-08-24 21:37:0968
andybonsad92aa32015-08-31 02:27:4469### Run Eclipse & Set your workspace
andybons3322f762015-08-24 21:37:0970
andybonsad92aa32015-08-31 02:27:4471Run eclipse/eclipse in a way that your regular build environment (export CC,
72CXX, etc...) will be visible to the eclipse process.
andybons3322f762015-08-24 21:37:0973
andybonsad92aa32015-08-31 02:27:4474Set the Workspace to be a directory on a local disk (e.g.
75`/work/workspaces/chrome`). Placing it on an NFS share is not recommended --
76it's too slow and Eclipse will block on access. Don't put the workspace in the
77same directory as your checkout.
andybons3322f762015-08-24 21:37:0978
andybonsad92aa32015-08-31 02:27:4479### Install the C Development Tools ("CDT")
andybons3322f762015-08-24 21:37:0980
andybonsad92aa32015-08-31 02:27:44811. From the Help menu, select Install New Software...
dgroganfbd6de92017-05-05 18:06:0682 1. Select the 'Work with' URL for the CDT
nodira6074d4c2015-09-01 04:26:4583 If it's not there you can click Add... and add it.
84 See https://eclipse.org/cdt/downloads.php for up to date versions,
85 e.g. with CDT 8.7.0 for Eclipse Mars, use
86 http://download.eclipse.org/tools/cdt/releases/8.7
andybonsad92aa32015-08-31 02:27:4487 1. Googlers: We have a local mirror, but be sure you run prodaccess before
88 trying to use it.
891. Select & install the Main and Optional features.
901. Restart Eclipse
911. Go to Window > Open Perspective > Other... > C/C++ to switch to the C++
92 perspective (window layout).
931. Right-click on the "Java" perspective in the top-right corner and select
94 "Close" to remove it.
andybons3322f762015-08-24 21:37:0995
andybonsad92aa32015-08-31 02:27:4496### Create your project(s)
97
98First, turn off automatic workspace refresh and automatic building, as Eclipse
99tries to do these too often and gets confused:
100
1011. Open Window > Preferences
1021. Search for "workspace"
1031. Turn off "Build automatically"
1041. Turn off "Refresh using native hooks or polling"
1051. Click "Apply"
andybons3322f762015-08-24 21:37:09106
107Create a single Eclipse project for everything:
108
andybonsad92aa32015-08-31 02:27:441091. From the File menu, select New > Project...
1101. Select C/C++ Project > Makefile Project with Existing Code
dgroganfbd6de92017-05-05 18:06:061111. Name the project the exact name of the directory: "src" (or "WebKit" if you
112 mainly work in Blink and want a faster experience)
1131. Provide a path to the code, like /work/chromium/src (or
114 /work/chromium/src/third_party/WebKit)
andybonsad92aa32015-08-31 02:27:441151. Select toolchain: Linux GCC
1161. Click Finish.
andybons3322f762015-08-24 21:37:09117
Allen Webb99a494a2019-04-16 18:25:06118Chromium uses C++14, so tell the indexer about it. Otherwise it will get
dgroganfbd6de92017-05-05 18:06:06119confused about things like std::unique_ptr.
120
1211. Right-click on "src" and select "Properties..."
1221. Navigate to C/C++ General > Preprocess Include Paths, Macros etc. >
123 Providers
1241. Select CDT GCC Built-in Compiler Settings
Allen Webb99a494a2019-04-16 18:25:061251. In the text box entitled Command to get compiler specs append "-std=c++14"
dgroganfbd6de92017-05-05 18:06:06126 (leaving out the quotes)
127
andybonsad92aa32015-08-31 02:27:44128Chromium has a huge amount of code, enough that Eclipse can take a very long
129time to perform operations like "go to definition" and "open resource". You need
130to set it up to operate on a subset of the code.
andybons3322f762015-08-24 21:37:09131
132In the Project Explorer on the left side:
133
andybonsad92aa32015-08-31 02:27:441341. Right-click on "src" and select "Properties..."
1351. Open Resource > Resource Filters
dgroganfbd6de92017-05-05 18:06:061361. Click "Add Filter..."
andybonsad92aa32015-08-31 02:27:441371. Add the following filter:
138 * Include only
139 * Files, all children (recursive)
140 * Name matches
mfomitchev95f20f12016-06-09 17:37:34141 `.*\.(c|cc|cpp|h|mm|inl|idl|js|json|css|html|gyp|gypi|grd|grdp|gn|gni|mojom)`
andybonsad92aa32015-08-31 02:27:44142 regular expression
1431. Add another filter:
144 * Exclude all
145 * Folders
Kent Tamura59ffb022018-11-27 05:30:56146 * Name matches `out_.*|\.git|web_tests` regular expression
147 * If you aren't working on WebKit, adding `|blink` will remove more
andybonsad92aa32015-08-31 02:27:44148 files
dgroganfbd6de92017-05-05 18:06:061491. Click "Apply and Close"
andybons3322f762015-08-24 21:37:09150
andybonsad92aa32015-08-31 02:27:44151Don't exclude the primary "out" directory, as it contains generated header files
152for things like string resources and Eclipse will miss a lot of symbols if you
153do.
andybons3322f762015-08-24 21:37:09154
andybonsad92aa32015-08-31 02:27:44155Eclipse will refresh the workspace and start indexing your code. It won't find
156most header files, however. Give it more help finding them:
andybons3322f762015-08-24 21:37:09157
andybonsad92aa32015-08-31 02:27:441581. Open Window > Preferences
1591. Search for "Indexer"
1601. Turn on "Allow heuristic resolution of includes"
1611. Select "Use active build configuration"
1621. Set Cache limits > Index database > Limit relative... to 20%
1631. Set Cache limits > Index database > Absolute limit to 256 MB
dgroganfbd6de92017-05-05 18:06:061641. Click "Apply and Close"
andybons3322f762015-08-24 21:37:09165
andybonsad92aa32015-08-31 02:27:44166Now the indexer will find many more include files, regardless of which approach
167you take below.
andybons3322f762015-08-24 21:37:09168
Sam Goto0a2b48e2019-02-04 19:53:39169Eclipse will still complain about unresolved includes or invalid declarations
170(semantic errors or code analysis errors in the ```Problems``` tab),
171which you can set eclipse to ignore:
172
1731. Right-click on "src" and select "Properties..."
174 * Open C++ General > Code Analysis
175 * Change the severity from ```Error``` to ```Warning``` for each of the
176 settings that you want eclipse to ignore.
177
andybonsad92aa32015-08-31 02:27:44178#### Optional: Manual header paths and symbols
andybons3322f762015-08-24 21:37:09179
andybonsad92aa32015-08-31 02:27:44180You can manually tell Eclipse where to find header files, which will allow it to
181create the source code index before you do a real build.
182
1831. Right-click on "src" and select "Properties..."
andybons3322f762015-08-24 21:37:09184 * Open C++ General > Paths and Symbols > Includes
185 * Click "GNU C++"
186 * Click "Add..."
andybonsad92aa32015-08-31 02:27:44187 * Add `/path/to/chromium/src`
andybons3322f762015-08-24 21:37:09188 * Check "Add to all configurations" and "Add to all languages"
andybonsad92aa32015-08-31 02:27:441891. Repeat the above for:
190 * `/path/to/chromium/src/testing/gtest/include`
andybons3322f762015-08-24 21:37:09191
192You may also find it helpful to define some symbols.
193
andybonsad92aa32015-08-31 02:27:441941. Add `OS_LINUX`:
andybons3322f762015-08-24 21:37:09195 * Select the "Symbols" tab
196 * Click "GNU C++"
197 * Click "Add..."
andybonsad92aa32015-08-31 02:27:44198 * Add name `OS_LINUX` with value 1
andybons3322f762015-08-24 21:37:09199 * Click "Add to all configurations" and "Add to all languages"
andybonsad92aa32015-08-31 02:27:442001. Repeat for `ENABLE_EXTENSIONS 1`
2011. Repeat for `HAS_OUT_OF_PROC_TEST_RUNNER 1`
2021. Click "OK".
2031. Eclipse will ask if you want to rebuild the index. Click "Yes".
andybons3322f762015-08-24 21:37:09204
205Let the C++ indexer run. It will take a while (10s of minutes).
206
andybonsad92aa32015-08-31 02:27:44207### Optional: Building inside Eclipse
andybons3322f762015-08-24 21:37:09208
andybonsad92aa32015-08-31 02:27:44209This allows Eclipse to automatically discover include directories and symbols.
210If you use gold or ninja (both recommended) you'll need to tell Eclipse about
211your path.
212
2131. echo $PATH from a shell and copy it to the clipboard
2141. Open Window > Preferences > C/C++ > Build > Environment
2151. Select "Replace native environment with specified one" (since gold and ninja
216 must be at the start of your path)
2171. Click "Add..."
2181. For name, enter `PATH`
2191. For value, paste in your path with the ninja and gold directories.
2201. Click "OK"
andybons3322f762015-08-24 21:37:09221
222To create a Make target:
223
andybonsad92aa32015-08-31 02:27:442241. From the Window menu, select Show View > Make Target
2251. In the Make Target view, right-click on the project and select New...
2261. name the target (e.g. base\_unittests)
2271. Unclick the Build Command: Use builder Settings and type whatever build
228 command you would use to build this target (e.g.
229 `ninja -C out/Debug base_unittests`).
2301. Return to the project properties page a under the C/C++ Build, change the
231 Build Location/Build Directory to be /path/to/chromium/src
232 1. In theory `${workspace_loc}` should work, but it doesn't for me.
233 1. If you put your workspace in `/path/to/chromium`, then
234 `${workspace_loc:/src}` will work too.
2351. Now in the Make Targets view, select the target and click the hammer icon
236 (Build Make Target).
andybons3322f762015-08-24 21:37:09237
andybonsad92aa32015-08-31 02:27:44238You should see the build proceeding in the Console View and errors will be
239parsed and appear in the Problems View. (Note that sometimes multi-line compiler
240errors only show up partially in the Problems view and you'll want to look at
241the full error in the Console).
andybons3322f762015-08-24 21:37:09242
andybonsad92aa32015-08-31 02:27:44243(Eclipse 3.8 has a bug where the console scrolls too slowly if you're doing a
Takuto Ikuta7478af722024-05-27 07:23:19244fast build, e.g. with reclient. To work around, go to Window > Preferences and
andybonsad92aa32015-08-31 02:27:44245search for "console". Under C/C++ console, set "Limit console output" to
2462147483647, the maximum value.)
andybons3322f762015-08-24 21:37:09247
andybonsad92aa32015-08-31 02:27:44248### Optional: Multiple build targets
andybons3322f762015-08-24 21:37:09249
andybonsad92aa32015-08-31 02:27:44250If you want to build multiple different targets in Eclipse (`chrome`,
251`unit_tests`, etc.):
andybons3322f762015-08-24 21:37:09252
andybonsad92aa32015-08-31 02:27:442531. Window > Show Toolbar (if you had it off)
2541. Turn on special toolbar menu item (hammer) or menu bar item (Project > Build
255 configurations > Set Active > ...)
256 1. Window > Customize Perspective... > "Command Groups Availability"
257 1. Check "Build configuration"
2581. Add more Build targets
259 1. Project > Properties > C/C++ Build > Manage Configurations
260 1. Select "New..."
261 1. Duplicate from current and give it a name like "Unit tests".
262 1. Change under “Behavior” > Build > the target to e.g. `unit_tests`.
andybons3322f762015-08-24 21:37:09263
andybonsad92aa32015-08-31 02:27:44264You can also drag the toolbar to the bottom of your window to save vertical
265space.
andybons3322f762015-08-24 21:37:09266
Sam Goto0a2b48e2019-02-04 19:53:39267### Optional: Running inside eclipse
268
269Running inside eclipse is fairly straightforward:
270
2711. Create a ```C/C++ Application```:
272 1. ```Run``` > ```Run configurations```
273 2. Double click on ```C/C++ Application```
274 3. Pick a name (e.g. ```shell```)
275 4. Point to ```C/C++ Application```
276 (e.g. ```src/out/Default/content_shell```)
277 6. Click ```Debug``` to run the program.
278
andybonsad92aa32015-08-31 02:27:44279### Optional: Debugging
andybons3322f762015-08-24 21:37:09280
andybonsad92aa32015-08-31 02:27:442811. From the toolbar at the top, click the arrow next to the debug icon and
282 select Debug Configurations...
2831. Select C/C++ Application and click the New Launch Configuration icon. This
284 will create a new run/debug con figuration under the C/C++ Application header.
2851. Name it something useful (e.g. `base_unittests`).
2861. Under the Main Tab, enter the path to the executable (e.g.
287 `.../out/Debug/base_unittests`)
2881. Select the Debugger Tab, select Debugger: gdb and unclick "Stop on startup
289 in (main)" unless you want this.
2901. Set a breakpoint somewhere in your code and click the debug icon to start
291 debugging.
andybons3322f762015-08-24 21:37:09292
Sam Goto0a2b48e2019-02-04 19:53:39293#### Multi-process debugging
294
295If you set breakpoints and your debugger session doesn't stop it is because
296both ```chrome``` and ```content_shell ``` spawn sub-processes.
297To debug, you need to attach a debugger to one of those sub-processes.
298
299Eclipse can attach automatically to forked processes
300(Run -> Debug configurations -> Debugger tab), but that doesn't seem to
301work well.
302
303The overall idea is described [here](https://www.chromium.org/blink/getting-started-with-blink-debugging)
304, but one way to accomplish this in eclipse is to run two ```Debug configurations```:
305
3061. Create a ```C/C++ Application```:
307 1. ```Run``` > ```Debug configurations```
308 2. Double click on ```C/C++ Application```
309 3. Pick a name (e.g. ```shell```)
310 4. Point to ```C/C++ Application```
311 (e.g. ```src/out/Default/content_shell```)
312 5. In the arguments tab, add the following the to program arguments:
313 ```--no-sandbox --renderer-startup-dialog test.html```
314 6. Click ```Debug``` to run the program.
315 7. That will run the application and it will stop with a message like the
316 following:
317 ```Renderer (239930) paused waiting for debugger to attach. Send SIGUSR1 to unpause.```
318 9. ```239930``` is the number of the process running waiting for the ```signal```.
3192. Create a ```C/C++ Attach to Application```:
Sam Goto1c5787d2019-02-12 00:49:16320 1. ```Run``` > ```Debug configurations```
321 2. Double click on ```C/C++ Attach to Application```
322 3. Pick a name (e.g. ```shell proc```)
323 4. Click ```Debug``` to run the configuration.
324 5. In the ```Select Processes``` dialog, pick the process that was
Sam Goto0a2b48e2019-02-04 19:53:39325 spawned above (if you type ```content_shell``` it will filter by
326 name)
Sam Goto1c5787d2019-02-12 00:49:16327 6. Click on ```Debugger console``` to access the ```gdb``` console.
328 7. Send the original process a signal
Sam Goto0a2b48e2019-02-04 19:53:39329 ```signal SIGUSR1```
Sam Goto1c5787d2019-02-12 00:49:16330 8. That should unblock the original process and you should now be able to
Sam Goto0a2b48e2019-02-04 19:53:39331 set breakpoints.
332
andybonsad92aa32015-08-31 02:27:44333### Optional: Accurate symbol information
andybons3322f762015-08-24 21:37:09334
andybonsad92aa32015-08-31 02:27:44335If setup properly, Eclipse can do a great job of semantic navigation of C++ code
336(showing type hierarchies, finding all references to a particular method even
337when other classes have methods of the same name, etc.). But doing this well
338requires the Eclipse knows correct include paths and pre-processor definitions.
339After fighting with with a number of approaches, I've found the below to work
340best for me.
andybons3322f762015-08-24 21:37:09341
andybonsad92aa32015-08-31 02:27:443421. From a shell in your src directory, run
dgroganfbd6de92017-05-05 18:06:06343 `gn gen --ide=eclipse out/Debug/` (replacing Debug with the output directory you normally use when building).
344 1. This generates <project root>/out/Debug/eclipse-cdt-settings.xml which
andybonsad92aa32015-08-31 02:27:44345 is used below.
346 1. This creates a single list of include directories and preprocessor
347 definitions to be used for all source files, and so is a little
348 inaccurate. Here are some tips for compensating for the limitations:
qyearsleyc0dc6f42016-12-02 22:13:39349 1. If you care about blink, move 'third\_party/WebKit/Source' to the
andybonsad92aa32015-08-31 02:27:44350 top of the list to better resolve ambiguous include paths (eg.
351 `config.h`).
3521. Import paths and symbols
353 1. Right click on the project and select Properties > C/C++ General > Paths
354 and Symbols
355 1. Click Restore Defaults to clear any old settings
356 1. Click Import Settings... > Browse... and select
357 `<project root>/out/Debug/eclipse-cdt-settings.xml`
358 1. Click the Finish button. The entire preferences dialog should go away.
359 1. Right click on the project and select Index > Rebuild
andybons3322f762015-08-24 21:37:09360
andybonsad92aa32015-08-31 02:27:44361### Alternative: Per-file accurate include/pre-processor information
andybons3322f762015-08-24 21:37:09362
andybonsad92aa32015-08-31 02:27:44363Instead of generating a fixed list of include paths and pre-processor
364definitions for a project (above), it is also possible to have Eclipse determine
365the correct setting on a file-by-file basis using a built output parser. I
366(rbyers) used this successfully for a long time, but it doesn't seem much better
367in practice than the simpler (and less bug-prone) approach above.
andybons3322f762015-08-24 21:37:09368
andybonsad92aa32015-08-31 02:27:443691. Install the latest version of Eclipse IDE for C/C++ developers
370 ([Juno SR1](http://www.eclipse.org/downloads/packages/eclipse-ide-cc-developers/junosr1)
371 at the time of this writing)
3721. Setup build to generate a build log that includes the g++ command lines for
373 the files you want to index:
374 1. Project Properties -> C/C++ Build
375 1. Uncheck "Use default build command"
376 1. Enter your build command, eg: `ninja -v`
377 1. Note that for better performance, you can use a command that
378 doesn't actually builds, just prints the commands that would be
379 run. For ninja/make this means adding -n. This only prints the
380 compile commands for changed files (so be sure to move your
381 existing out directory out of the way temporarily to force a
382 full "build"). ninja also supports "-t commands" which will
383 print all build commands for the specified target and runs even
384 faster as it doesn't have to check file timestamps.
385 1. Build directory: your build path including out/Debug
386 1. Note that for the relative paths to be parsed correctly you
387 can't use ninja's `-C <dir>` to change directories as you might
388 from the command line.
389 1. Build: potentially change `all` to the target you want to analyze,
390 eg. `chrome`
391 1. Deselect 'clean'
392 1. If you're using Ninja, you need to teach eclipse to ignore the prefix it
393 adds (eg. `[10/1234]` to each line in build output):
394 1. Project properties -> C/C++ General -> Preprocessor includes
395 1. Providers -> CDT GCC Build Output Parser -> Compiler command pattern
396 1. `(\[.*\] )?((gcc)|([gc]\+\+)|(clang(\+\+)?))`
397 1. Note that there appears to be a bug with "Share setting entries
398 between projects" - it will keep resetting to off. I suggest using
399 per-project settings and using the "folder" as the container to keep
400 discovered entries ("file" may work as well).
401 1. Eclipse / GTK has bugs where lots of output to the build console can
402 slow down the UI dramatically and cause it to hang (basically spends all
403 it's time trying to position the cursor correctly in the build console
404 window). To avoid this, close the console window and disable
405 automatically opening it on build:
406 1. Preferences->C/C++->Build->Console -> Uncheck "Open console when
407 building"
408 1. note you can still see the build log in
409 `<workspace>/.metadata/.plugins/org.eclipse.cdt.ui`
4101. Now build the project (select project, click on hammer). If all went well:
411 1. Right click on a cpp file -> properties -> C/C++ general -> Preprocessor
412 includes -> GNU C++ -> CDT GCC Build output Parser
413 1. You will be able to expand and see all the include paths and
414 pre-processor definitions used for this file
4151. Rebuild index (right-click on project, index, rebuild). If all went well:
416 1. Open a CPP file and look at problems windows
417 1. Should be no (or very few) errors
418 1. Should be able to hit F3 on most symbols and jump to their definitioin
419 1. CDT has some issues with complex C++ syntax like templates (eg.
420 `PassOwnPtr` functions)
421 1. See
422 [this page](http://wiki.eclipse.org/CDT/User/FAQ#Why_does_Open_Declaration_.28F3.29_not_work.3F_.28also_applies_to_other_functions_using_the_indexer.29)
423 for more information.
andybons3322f762015-08-24 21:37:09424
andybonsad92aa32015-08-31 02:27:44425### Optional: static code and style guide analysis using cpplint.py
andybons3322f762015-08-24 21:37:09426
andybonsad92aa32015-08-31 02:27:444271. From the toolbar at the top, click the Project -> Properties and go to
428 C/C++Build.
429 1. Click on the right side of the pop up windows, "Manage
430 Configurations...", then on New, and give it a name, f.i. "Lint current
431 file", and close the small window, then select it in the Configuration
432 drop down list.
433 1. Under Builder settings tab, unclick "Use default build command" and type
434 as build command the full path to your `depot_tools/cpplint.py`
435 1. Under behaviour tab, unselect Clean, select Build(incremental build) and
436 in Make build target, add `--verbose=0 ${selected_resource_loc}`
437 1. Go back to the left side of the current window, and to C/C++Build ->
438 Settings, and click on error parsers tab, make sure CDT GNU C/C++ Error
439 Parser, CDT pushd/popd CWD Locator are set, then click Apply and OK.
4401. Select a file and click on the hammer icon drop down triangle next to it,
441 and make sure the build configuration is selected "Lint current file", then
442 click on the hammer.
4431. Note: If you get the `cpplint.py help` output, make sure you have selected a
444 file, by clicking inside the editor window or on its tab header, and make
445 sure the editor is not maximized inside Eclipse, i.e. you should see more
446 subwindows around.
447
448### Additional tips
449
4501. Mozilla's
451 [Eclipse CDT guide](https://developer.mozilla.org/en-US/docs/Eclipse_CDT)
452 is helpful:
4531. For improved performance, I use medium-granularity projects (eg. one for
454 WebKit/Source) instead of putting all of 'src/' in one project.
Sam Goto0a2b48e2019-02-04 19:53:394551. Running [```content_shell```](https://www.chromium.org/developers/content-module)
456 as opposed to all of ```chrome``` is a lot faster/smaller.