2cd97871ff
Change-Id: I5ff028affb5fb671da4acc5e55607d04a900a99e
201 lines
7.8 KiB
Plaintext
201 lines
7.8 KiB
Plaintext
= 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.
|
|
|
|
== 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.
|
|
|
|
TIP: If you would like to execute a test in NoteDb mode, add
|
|
`--test_env=GERRIT_NOTEDB=READ_WRITE` to the *Bazel flags* of your run
|
|
configuration.
|
|
|
|
[[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
|
|
---------
|