= Gerrit Code Review - Eclipse Setup This document is about configuring Gerrit Code Review into an Eclipse workspace for development and debugging with GWT. Java 6 or later SDK is also required to run GWT's compiler and runtime debugging environment. [[setup]] == Project Setup In your Eclipse installation's `eclipse.ini` file, add the following line in the `vmargs` section: ---- -DmaxCompiledUnitsAtOnce=10000 ---- Without this setting, annotation processing does not work reliably and the build is likely to fail with errors like: ---- Could not write generated class ... javax.annotation.processing.FilerException: Source file already created ---- and ---- AutoAnnotation_Commands_named cannot be resolved to a type ---- In Eclipse, choose 'Import existing project' and select the `gerrit` project from the current working directory. Expand the `gerrit` project, right-click on the `buck-out` folder, select 'Properties', and then under 'Attributes' check 'Derived'. Note that if you make any changes in the project configuration that get saved to the `.project` file, for example adding Resource Filters on a folder, they will be overwritten the next time you run `tools/eclipse/project.py`. [[Formatting]] == Code Formatter Settings Import `tools/GoogleFormat.xml` using Window -> Preferences -> Java -> Code Style -> Formatter -> Import... This will define the 'Google Format' profile, which the project settings prefer when formatting source code. == Site Initialization Build once on the command line with link:dev-buck.html#build[Buck] and then follow link:dev-readme.html#init[Site Initialization] in the Developer Setup guide to configure a local site for testing. == Testing === Running the Daemon Duplicate the existing launch configuration: * In Eclipse select Run -> Debug Configurations ... * Java Application -> `gerrit_daemon` * Right click, Duplicate * Modify the name to be unique. * Switch to Arguments tab. * Edit the `-d` program argument flag to match the path used during 'init'. The template launch configuration resolves to `../gerrit_testsite` since that is what the documentation recommends. * Switch to Common tab. * Change Save as to be Local file. * Close the Debug Configurations dialog and save the changes when prompted. === Running GWT Debug Mode The `gerrit_gwt_debug` launch configuration uses GWT's link:http://www.gwtproject.org/articles/superdevmode.html[Super Dev Mode]. * Make a local copy of the `gerrit_gwt_debug` configuration, using the process described for `gerrit_daemon` above. * Launch the local copy of `gerrit_gwt_debug` from the Eclipse debug menu. * If debugging GWT for the first time: ** Open the link:http://localhost:9876/[codeserver URL] and add the `Dev Mode On` and `Dev Mode Off` bookmarklet to your bookmark bar. ** Activate the source maps feature in your browser. Refer to the link:https://developer.chrome.com/devtools/docs/javascript-debugging#source-maps[ Chrome] and link:https://developer.mozilla.org/en-US/docs/Tools/Debugger#Use_a_source_map[ Firefox] developer documentation. * Load the link:http://localhost:8080[Gerrit page]. * Open the source tab in developer tools. * Click the `Dev Mode On` bookmark to incrementally recompile changed files. * Select the `gerrit_ui` module to compile (the `Compile` button can also be used as a bookmarklet). * In the developer tools source tab, open a file and set a breakpoint. * Navigate to the UI and confirm that the breakpoint is hit. * To end the debugging session, click the `Dev Mode Off` bookmark. .After changing the client side code: * Hitting `F5` in the browser only reloads the last compile output, without recompiling. * To reflect your changes in the debug session, click `Dev Mode On` then `Compile`. === Running GWT Debug Mode for Gerrit plugins A Gerrit plugin can expose GWT module and its implementation can be inspected in the SDM debug session. `codeserver` needs two additional inputs to expose the plugin module in the SDM debug session: the module name and the source folder location. For example the module name and source folder of `cookbook-plugin` should be added in the local copy of the `gerrit_gwt_debug` configuration: ---- com.googlesource.gerrit.plugins.cookbook.HelloForm \ -src ${resource_loc:/gerrit}/plugins/cookbook-plugin/src/main/java \ -- --console-log [...] ---- After doing that, both the Gerrit core and plugin GWT modules can be activated during SDM (debug session)[http://imgur.com/HFXZ5No]. GERRIT ------ Part of link:index.html[Gerrit Code Review] SEARCHBOX ---------