| = Gerrit Code Review - IntelliJ Setup |
| |
| == Prerequisites |
| You need an installation of IntelliJ version 2016.2 or later. The latest version |
| might not yet be in-sync with the Bazel plugin for IntelliJ. It usually becomes |
| so quite quickly after new IDEA versions get released, though. It should then be |
| possible to use the fairly latest IntelliJ release with an updated Bazel plugin. |
| |
| In addition, Java 8 must be specified on your path or via `JAVA_HOME` so that |
| building with Bazel via the Bazel plugin is possible. |
| |
| TIP: If the synchronization of the project with the BUILD files using the Bazel |
| plugin fails and IntelliJ reports the error **Could not get Bazel roots**, this |
| indicates that the Bazel plugin couldn't find Java 8. |
| |
| Bazel must be installed as described by |
| <<dev-bazel#installation,Building with Bazel - Installation>>. |
| |
| == Installation of the Bazel plugin |
| |
| . Go to *File -> Settings -> Plugins*. |
| . Click on *Browse Repositories*. |
| . Search for the plugin `IntelliJ with Bazel`. |
| . Install it. |
| . Restart IntelliJ. |
| |
| TIP: If your project's Bazel build fails with **Cannot run program "bazel": No |
| such file or directory**, then you may have to set the binary location in the |
| Bazel plugin settings: |
| |
| . Go to Preferences -> Other Settings -> Bazel Settings. |
| . Set the Bazel binary location. |
| |
| == Creation of IntelliJ project |
| |
| . Go to *File -> Import Bazel Project*. |
| . For *Use existing bazel workspace -> Workspace*, select the directory |
| containing the Gerrit source code. |
| . Choose *Import from workspace* and select the `.bazelproject` file which is |
| located in the top directory of the Gerrit source code. |
| . Adjust the path of the project data directory and the name of the project if |
| desired. |
| |
| TIP: The project data directory can be separate from the source code. One |
| advantage of this is that project files don't need to be excluded from version |
| control. |
| |
| Unfortunately, the created project seems to have a broken output path. To fix |
| it, please complete the following steps: |
| |
| . Go to *File -> Project Structure -> Project Settings -> Modules*. |
| . Switch to the tab *Paths*. |
| . Click on *Inherit project compile output path*. |
| . Click on *Use module compile output path*. |
| |
| == Recommended settings |
| |
| === Code style |
| |
| ==== google-java-format plugin |
| Install the `google-java-format` plugin by following these steps: |
| |
| . Go to *File -> Settings -> Plugins*. |
| . Click on *Browse Repositories*. |
| . Search for the plugin `google-java-format`. |
| . Install it. |
| . Restart IntelliJ. |
| |
| Every time you start IntelliJ, make sure to use *Code -> Reformat with |
| google-java-format* on an arbitrary line of code. This replaces the default |
| CodeStyleManager with a custom one. Thus, uses of *Reformat Code* either via |
| *Code -> Reformat Code*, keyboard shortcuts, or the commit dialog will use the |
| custom style defined by the `google-java-format` plugin. |
| |
| ==== Code style settings |
| The `google-java-format` plugin is the preferred way to format the code. As it |
| only kicks in on demand, it's also recommended to have code style settings |
| which help to create properly formatted code as-you-go. Those settings can't |
| completely mimic the format enforced by the `google-java-format` plugin but try |
| to be as close as possible. So before submitting code, please make sure to run |
| *Reformat Code*. |
| |
| . Download |
| https://raw.githubusercontent.com/google/styleguide/gh-pages/intellij-java-google-style.xml[ |
| intellij-java-google-style.xml]. |
| . Go to *File -> Settings -> Editor -> Code Style*. |
| . Click on *Manage*. |
| . Click on *Import*. |
| . Choose `IntelliJ IDEA Code Style XML`. |
| . Select the previously downloaded file `intellij-java-google-style.xml`. |
| . Make sure that `Google Style` is chosen as *Scheme*. |
| |
| In addition, the EditorConfig settings (which ensure a consistent style between |
| Eclipse, IntelliJ, and other editors) should be applied on top of that. Those |
| settings are in the file `.editorconfig` of the Gerrit source code. IntelliJ |
| will automatically pick up those settings if the EditorConfig plugin is enabled |
| and configured correctly as can be verified by: |
| |
| . Go to *File -> Settings -> Plugins*. |
| . Ensure that the EditorConfig plugin is enabled. |
| . Go to *File -> Settings -> Editor -> Code Style*. |
| . Ensure that *Enable EditorConfig support* is checked. |
| |
| NOTE: If IntelliJ notifies you later on that the EditorConfig settings override |
| the code style settings, simply confirm that. |
| |
| === Copyright |
| Copy the folder `$(gerrit_source_code)/tools/intellij/copyright` (not just the |
| contents) to `$(project_data_directory)/.idea`. If it already exists, replace |
| it. |
| |
| === File header |
| By default, IntelliJ adds a file header containing the name of the author and |
| the current date to new files. To disable that, follow these steps: |
| |
| . Go to *File -> Settings -> Editor -> File and Code Templates*. |
| . Select the tab *Includes*. |
| . Select *File Header*. |
| . Remove the template code in the right editor. |
| |
| === Commit message |
| To simplify the creation of commit messages which are compliant with the |
| <<dev-contributing#commit-message,Commit Message>> format, do the following: |
| |
| . Go to *File -> Settings -> Version Control*. |
| . Check *Commit message right margin (columns)*. |
| . Make sure that 72 is specified as value. |
| . Check *Wrap when typing reaches right margin*. |
| |
| In addition, you should follow the instructions of |
| <<dev-contributing#git_commit_settings,this section>> (if you haven't |
| done so already): |
| |
| * Install the Git hook for the `Change-Id` line. |
| * Set up the HTTP access. |
| |
| Setting up the HTTP access will allow you to commit changes via IntelliJ without |
| specifying your credentials. The Git hook won't be noticeable during a commit |
| as it's executed after the commit dialog of IntelliJ was closed. |
| |
| == Run configurations |
| Run configurations can be accessed on the toolbar. To edit them or add new ones, |
| choose *Edit Configurations* on the drop-down list of the run configurations |
| or go to *Run -> Edit Configurations*. |
| |
| === Pre-configured run configurations |
| |
| In order to be able to use the pre-configured run configurations, the following |
| steps are necessary: |
| |
| . Make sure that the folder `runConfigurations` exists within |
| `$(project_data_directory)/.idea`. If it doesn't exist, create it. |
| . Specify the IntelliJ path variable `GERRIT_TESTSITE`. (This configuration is |
| shared among all IntelliJ projects.) |
| .. Go to *Settings -> Appearance & Behavior -> Path Variables*. |
| .. Click on the *+* to add a new path variable. |
| .. Specify `GERRIT_TESTSITE` as name and the path to your local test site as |
| value. |
| |
| The copied run configurations will be added automatically to the available run |
| configurations of the IntelliJ project. |
| |
| ==== Gerrit Daemon |
| WARNING: At the moment running this configuration results in a |
| `java.io.FileNotFoundException`. To debug a local Gerrit server with IntelliJ, |
| use the instructions of <<dev-readme#run_daemon,Running the Daemon>> in |
| combination with <<remote-debug,Debugging a remote Gerrit server>>. |
| |
| Copy `$(gerrit_source_code)/tools/intellij/gerrit_daemon.xml` to |
| `$(project_data_directory)/.idea/runConfigurations/`. |
| |
| This run configuration starts the Gerrit daemon similarly as |
| <<dev-readme#run_daemon,Running the Daemon>>. |
| |
| NOTE: The <<dev-readme#init,Site Initialization>> has to be completed |
| before this run configuration works properly. |
| |
| === Unit tests |
| To create run configurations for unit tests, run or debug them via a right-click |
| on a method, class, file, or package. The created run configuration is a |
| temporary one and can be saved to make it permanent. |
| |
| Normally, this approach generates JUnit run configurations. When the Bazel |
| plugin manages a project, it intercepts the creation and creates a Bazel test |
| run configuration instead, which can be used just like the standard ones. |
| |
| [[remote-debug]] |
| === Debugging a remote Gerrit server |
| If a remote Gerrit server is running and has opened a debug port, you can attach |
| IntelliJ via a `Remote debug configuration`. |
| |
| . Go to *Run -> Edit Configurations*. |
| . Click on the *+* to add a new configuration. |
| . Choose *Remote*. |
| . Adjust *Configuration -> Settings -> Host* and *Port*. |
| . Start this configuration in `Debug` mode. |
| |
| GERRIT |
| ------ |
| Part of link:index.html[Gerrit Code Review] |
| |
| SEARCHBOX |
| --------- |