= Gerrit Code Review - Robot Comments

Gerrit has special support for inline comments that are generated by
automated third-party systems, so called "robot comments". For example
robot comments can be used to represent the results of code analyzers.

In contrast to regular inline comments which are free-text comments,
robot comments are more structured and can contain additional data,
such as a robot ID, a robot run ID and a URL, see
link:rest-api-changes.html#robot-comment-info[RobotCommentInfo] for
details.

It is planned to visualize robot comments differently in the web UI so
that they can be easily distinguished from human comments. Users should
also be able to use filtering on robot comments, so that only part of
the robot comments or no robot comments are shown. In addition it is
planned that robot comments can contain fixes, that users can apply by
a single click.

== REST endpoints

* Posting robot comments is done by the
  link:rest-api-changes.html[Set Review] REST endpoint. The
  link:rest-api-changes.html#review-input[input] for this REST endpoint
  can contain robot comments in its `robot_comments` field.
* link:rest-api-changes.html#list-robot-comments[List Robot Comments]
* link:rest-api-changes.html#get-robot-comment[Get Robot Comment]

== Storage

Robot comments are stored per change in a
`refs/changes/XX/YYYY/robot-comments` ref, where `XX/YYYY` is the
sharded change ID.

Robot comments can be dropped by deleting this ref.

== Limitations

* There is no support for draft robot comments, but robot comments are
  always published and visible to everyone who can see the change.

GERRIT
------
Part of link:index.html[Gerrit Code Review]

SEARCHBOX
---------
