EID de JetBrains

This page is a translated version of the page JetBrains IDEs and the translation is 43% complete.

For our Open Source work, the Wikimedia Foundation (and the community) received a number of licenses for the All Products Pack of JetBrains (in doing it, we're thanking JetBrains for the support of our projects). Las licencias permiten a una cuenta de usuario anexada utilizar todos los productos para PC de JetBrains, tal como se describe en el sitio web de la empresa (Obtener acceso a cualquier producto para escritorio, incluidos IntelliJ IDEA Ultimate, ReSharper Ultimate y otros EID).[1] Si utiliza un producto JetBrains (como IntelliJ IDEA Ultimate o PhpStorm) para contribuir código abierto para MediaWiki o extensiones de MediaWiki, considere solicitar una clave de licencia del personal administrativo de cuentas.

¿Cómo obtener una licencia?

For staff, see https://office.wikimedia.org/wiki/JetBrains.

Para solicitar una licencia, basta con escribir un mensaje de correo electrónico o contactar a alguien del personal administrativo de cuentas mediante IRC:

Recibirá un mensaje por correo con un enlace de invitación a una de nuestras licencias. Cuando se visite, conectará una licencia con su cuenta de JetBrains (si aún no tiene una, deberá creársela). Observe que contamos apenas con unas cuantas licencias y, aunque podamos asegurarnos de que reciba una, queremos cerciorarnos de que la gente que contribuye de manera activa a alguno de nuestros proyectos sea quien se beneficie de la licencia. Por ello, comprobaremos que es contribuidor/a activo/a de alguno de nuestros proyectos antes de enviarle un enlace de invitación. There are no big things you need to accomplish (such as a specific amount of changes per day or something else, that would be ridiculous, as we're thankful for anything you do for our projects!). However, if you've never contributed code to our projects or your last change was a reasonable time ago (e.g. over a year or so), we may ask you some questions (e.g. "Why do you want a license?"). But don't hesitate and simply ask us if you can get a license :)

¿Qué producto debo usar?

Like mentioned above, the MediaWiki open source project owns licenses for the All products pack of JetBrains, which includes all desktop products (like PhpStorm, IntelliJ IDEA Ultimate, Webstorm and so on). Determinados productos comparten funcionalidades, por lo que puede ser difícil escoger el correcto. You probably heard from this page because someone suggested you to use PhpStorm. Even if this isn't false, and PhpStorm is a good product, we would like to encourage you to choose the IntelliJ IDEA Ultimate, which includes some more features and language support compared to PhpStorm. If you plan to contribute to projects other than the PHP-based ones in MediaWiki, it probably would be a benefit, that you already use the "non-plus-ultra" product. However, as all products are included anyway, you can choose the product you like the most, if you have one.

If you wish to test bleeding edge features, IntelliJ IDEA Ultimate and other standalone products have separate release rhythms. Installing PhpStorm or WebStorm separately has its benefits.

Estilo del código de MediaWiki

MediaWiki has its own and specific code style for PHP, JavaScript, JSON and some other languages. The JetBrains products allow you to define all of your coding conventions in the project settings so that the IDE supports you as best as it can, e.g. by automatically format the code you write.

The following XML code is a snapshot of the settings of the coding convention for PHP, JSON, JavaScript and LESS. It may be incomplete and misses some other languages. So if you want to extend it, feel free to simply add the settings for the coding convention. If you want to import the settings, please copy the code and save it as a file on your computer. Now import the settings in the JetBrains IDE ("Import Scheme" from the gear icon next to Settings > Editor > Code Style > Scheme).

Expand to see XML
<code_scheme name="MediaWiki" version="173">
  <option name="LINE_SEPARATOR" value="&#xA;" />
    <option name="COMMA_AFTER_LAST_ARRAY_ELEMENT" value="true" />
    <option name="BLANK_LINES_BEFORE_RETURN_STATEMENT" value="1" />
    <option name="KEEP_RPAREN_AND_LBRACE_ON_ONE_LINE" value="true" />
    <option name="XML_LEGACY_SETTINGS_IMPORTED" value="true" />
  <codeStyleSettings language="JSON">
      <option name="INDENT_SIZE" value="4" />
      <option name="USE_TAB_CHARACTER" value="true" />
  <codeStyleSettings language="JavaScript">
      <option name="USE_TAB_CHARACTER" value="true" />
      <option name="SMART_TABS" value="true" />
  <codeStyleSettings language="LESS">
      <option name="USE_TAB_CHARACTER" value="true" />
  <codeStyleSettings language="PHP">
    <option name="RIGHT_MARGIN" value="100" />
    <option name="KEEP_LINE_BREAKS" value="false" />
    <option name="KEEP_CONTROL_STATEMENT_IN_ONE_LINE" value="false" />
    <option name="CLASS_BRACE_STYLE" value="1" />
    <option name="METHOD_BRACE_STYLE" value="1" />
    <option name="CATCH_ON_NEW_LINE" value="true" />
    <option name="ALIGN_MULTILINE_FOR" value="false" />
    <option name="SPACE_AROUND_UNARY_OPERATOR" value="true" />
    <option name="SPACE_WITHIN_PARENTHESES" value="true" />
    <option name="SPACE_WITHIN_METHOD_CALL_PARENTHESES" value="true" />
    <option name="SPACE_WITHIN_METHOD_PARENTHESES" value="true" />
    <option name="SPACE_WITHIN_IF_PARENTHESES" value="true" />
    <option name="SPACE_WITHIN_WHILE_PARENTHESES" value="true" />
    <option name="SPACE_WITHIN_FOR_PARENTHESES" value="true" />
    <option name="SPACE_WITHIN_CATCH_PARENTHESES" value="true" />
    <option name="SPACE_WITHIN_SWITCH_PARENTHESES" value="true" />
    <option name="SPACE_WITHIN_ARRAY_INITIALIZER_BRACES" value="true" />
    <option name="CALL_PARAMETERS_WRAP" value="1" />
    <option name="METHOD_PARAMETERS_WRAP" value="1" />
    <option name="METHOD_PARAMETERS_LPAREN_ON_NEXT_LINE" value="true" />
    <option name="METHOD_PARAMETERS_RPAREN_ON_NEXT_LINE" value="true" />
    <option name="EXTENDS_LIST_WRAP" value="1" />
    <option name="EXTENDS_KEYWORD_WRAP" value="1" />
    <option name="METHOD_CALL_CHAIN_WRAP" value="5" />
    <option name="PARENTHESES_EXPRESSION_RPAREN_WRAP" value="true" />
    <option name="BINARY_OPERATION_WRAP" value="1" />
    <option name="TERNARY_OPERATION_WRAP" value="5" />
    <option name="TERNARY_OPERATION_SIGNS_ON_NEXT_LINE" value="true" />
    <option name="KEEP_SIMPLE_METHODS_IN_ONE_LINE" value="true" />
    <option name="FOR_STATEMENT_WRAP" value="1" />
    <option name="FOR_STATEMENT_RPAREN_ON_NEXT_LINE" value="true" />
    <option name="ARRAY_INITIALIZER_WRAP" value="5" />
    <option name="ARRAY_INITIALIZER_LBRACE_ON_NEXT_LINE" value="true" />
    <option name="ARRAY_INITIALIZER_RBRACE_ON_NEXT_LINE" value="true" />
    <option name="ASSIGNMENT_WRAP" value="5" />
    <option name="IF_BRACE_FORCE" value="3" />
    <option name="DOWHILE_BRACE_FORCE" value="3" />
    <option name="WHILE_BRACE_FORCE" value="3" />
    <option name="FOR_BRACE_FORCE" value="3" />
    <option name="WRAP_ON_TYPING" value="1" />
      <option name="USE_TAB_CHARACTER" value="true" />

Con esto, puede dar formato automáticamente a su código para que se ajuste a las normas. Para hacerlo, seleccione «Reformatear código» en el menú Código.

Code sniffer integration

You can also integrate PHP Codesniffer (PHPCS) into PhpStorm and similar products, so that phpcs errors will be shown in real-time. Assuming you're working within the root of the core MediaWiki project (from which you can also work on extensions):

  1. Go to Settings > Languages & Frameworks > PHP > Code Sniffer.
  2. Next to "Configuration" click on the "...", opening up the Code Sniffer panel.
  3. Click on "...", and browse to the vendor/bin directory and select phpcs. Click on "Validate" to ensure the binary loads properly.
  4. Go to Settings > Inspections and look for "PHP Code Sniffer validation" under PHP.
  5. Select "Custom" as the "Coding standard", then from "..." choose the ruleset.xml file that's located in vendor/mediawiki/mediawiki-codesniffer/MediaWiki.

MediaWiki-Vagrant users specific

This replaces step 3 from the section above.

  1. Create a code sniffer configuration by clicking on "+" in the Code Sniffer panel.
  2. Select the Remote PHP interpreter as setup for MediaWiki-Vagrant, check Manual:How to debug/with MediaWiki-Vagrant and PHPStorm and MediaWiki-Vagrant/Advanced usage#PhpStorm if you haven't yet.
  3. Select /vagrant/mediawiki/vendor/bin/phpcs as the PHP Code Sniffer path.

Using PHPStorm with a test server

Running unit tests

  1. Go to Settings > Languages & Frameworks PHP > Test frameworks
  2. Set default configuration file as mediawiki/phpunit.xml (a sample phpunit.xml.dist is part of the repo – create your phpunit.xml by copying it if you haven't already).

Gerrit plugin

There's a third-party plugin for downloading and reviewing Gerrit changes, https://plugins.jetbrains.com/plugin/7272-gerrit. To configure, go to Settings -> Version control -> Gerrit, and set:

  • Web-URL: https://gerrit.wikimedia.org/r/
  • Login: your Gerrit username, e.g. "awight"
  • Password: your HTTPS password for Gerrit
  • Be sure to check "List all Gerrit changes", otherwise you will encounter a 414 error when the plugin tries to download all available projects in one request.

Phab and gerrit linking

References to phab tickets and gerrit patches (in the code or in commit messages on IntelliJ's git GUI) can be made clickable:

  • Go to Preferences > Version Control > Issue Navigation
  • Add the following configurations:
    1. (T\d+)https://phabricator.wikimedia.org/$1
    2. (I[0-9a-f]{6,})https://gerrit.wikimedia.org/r/q/$1

See also