IDEs JetBrains

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

Pour nos travaux Open Source, la Fondation Wikimedia (et la communauté) ont reçu un certain nombre de licences pour le All Products Pack de JetBrains (et par là même, nous remercions JetBrains de bien vouloir supporter nos projets). La license autorise un utilisateur rattaché à utiliser tous les produits d'ordinateur Jetbrains, comme décrit sur le site web de Jetbrains (Get access to all desktop products including IntelliJ IDEA Ultimate, ReSharper Ultimate and other IDEs).[1] Si vous utilisez un produit JetBrains (tel que Intellij IDEA Ultima ou PhpStorm) pour contribuer au code Open Source pour MediaWiki ou des extensions MediaWiki, pensez demander une clé de licence à partir d'un compte administrateur.

Comment recevoir une licence ?

Pour le personnel, voir https://office.wikimedia.org/wiki/JetBrains.

Pour demander une licence, écrivez simplement un courriel ou contactez l'un des administrateurs de compte via IRC :

  • Sam Reed (reedy dans #wikimedia-dev connecter, sreed [AT] wikimedia [POINT] org)
  • Florian Schmidt (FlorianSW dans #wikimedia-dev connecter, florian.schmidt.stargatewissen [AT] gmail [POINT] com)

Vous recevrez un courriel avec un lien d'invitation pour une de nos licences, qui, une fois cliqué, va connecter une licence avec votre compte JetBrains (si vous n'en n'avez pas encore, vous devrez en créer un). Veuillez noter que nous avons un nombre de licence limité, et même si vous êtes sûr que vous pouvez avoir une licence, nous voulons nous assurer que les personnes qui contribuent activement au code sur l'un de nos projets puissent en bénéficier. Cela signifie que nous vérifierons si vous êtes un contributeur actif à l'un de nos projets avant de vous envoyer un lien d'invitation. Il n'y a pas de grandes choses que vous devez accomplir (comme une quantité spécifique de changements par jour ou autre chose, ce serait ridicule, car nous sommes reconnaissants pour tout ce que vous faites pour nos projets !). Cependant, si vous n'avez jamais contribué au code de l'un de nos projets ou que votre dernière modification date de suffisamment longtemps (par exemple de plus d'un an), nous pourrions vous poser quelques questions (par exemple « Pourquoi souhaitez-vous une licence ? »). Mais n'hésitez pas à simplement nous demander si vous pouvez obtenir une licence :)

Quel produit devrais-je utiliser ?

Comme mentionné précédemment, le projet open source MediaWiki possède des licences pour le Pack All Products de Jetbrains qui inclut tous les logiciels de bureau (comme PhpStorm, IntelliJ IDEA Ultimate, Webstorm etc.). Certains produits partagent certaines fonctionnalités, donc il peut être difficile de choisir le bon produit. Vous avez probablement entendu parler de cette page car quelqu'un vous a suggéré d'utiliser PhpStorm. Même si ce n'est pas faux, et que PhpStorm est un bon produit, nous vous encourageons à choisir IntelliJ IDEA Ultimate, qui inclut la prise en charge de fonctionnalités et langages supplémentaires comparé à PhpStorm. Si vous prévoyez de contribuer aux projets de MediaWiki basés sur autre chose que PHP, il est probablement plus avantageux d'utiliser déjà le produit « non-ultra-plus ». Cependant, comme tous les produits sont inclus de toute façon, vous pouvez choisir le logiciel que vous préférez le plus, si vous en avez un.

Si vous souhaitez tester les fonctionnalités de pointe, IntelliJ IDEA Ultimate et d'autres produits séparés ont des rythmes de sortie de version séparés. Installer PhpStorm ou Webstorm séparément a chacun son avantage.

Style du code MediaWiki

MediaWiki possède son style de codage propre et spécifique pour PHP, JavaScript, JSON et quelques langages supplémentaires. Les produits JetBrains vous permettent de définir toutes vos conventions de codage dans les paramètres du projet, de cette manière, l'IDE vous aide du mieux qu'il peut, par exemple avec l'autoformatage du code.

Le code XML suivant est un instantané des paramètres des convention de code pour PHP, JSON, Javascript et LESS. Ceci peut être incomplet et exclure certains autres langages. Donc si vous souhaitez l'étendre, n'hésitez pas à simplement ajouter le paramètre pour la convention de codage. Si vous souhaitez importer les paramètres, veuillez copier le code et le sauvegarder dans un fichier sur votre ordinateur. Ensuite, importer les paramètres dans l'IDE JetBrains (« Importer le schéma » depuis l'icône d'engrenage à côté de Paramètres > Éditeur > Style de code > Schéma).

Expand to see XML
<code_scheme name="MediaWiki" version="173">
  <option name="LINE_SEPARATOR" value="&#10;" />
  <PHPCodeStyleSettings>
    <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="SPACE_AROUND_ASSIGNMENT_IN_DECLARE" value="true" />
  </PHPCodeStyleSettings>
  <codeStyleSettings language="JSON">
    <indentOptions>
      <option name="INDENT_SIZE" value="4" />
      <option name="USE_TAB_CHARACTER" value="true" />
    </indentOptions>
  </codeStyleSettings>
  <codeStyleSettings language="JavaScript">
    <indentOptions>
      <option name="USE_TAB_CHARACTER" value="true" />
      <option name="SMART_TABS" value="true" />
    </indentOptions>
  </codeStyleSettings>
  <codeStyleSettings language="LESS">
    <indentOptions>
      <option name="USE_TAB_CHARACTER" value="true" />
    </indentOptions>
  </codeStyleSettings>
  <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" />
    <indentOptions>
      <option name="USE_TAB_CHARACTER" value="true" />
    </indentOptions>
  </codeStyleSettings>
</code_scheme>

Avec cela, vous pouvez formater automatiquement votre code pour qu'il soit conforme aux normes. Pour faire cela, sélectionnez « Reformater le code » dans le menu Code.

Intégration du Code sniffer

Vous pouvez également intégrer PHP Codesniffer (PHPCS) dans PhpStorm et d'autres produits similaires, de sorte que les erreurs phpcs soient affichées en temps réel. En supposant que vous travailliez à la racine du projet MediaWiki noyau (à partir duquel vous pouvez également travailler sur les extensions) :

  1. Aller dans Settings > PHP > Quality Tools → Code Sniffer.
  2. À côté de Configuration, cliquez sur le ... pour ouvrir le panneau Code Sniffer.
  3. Cliquez sur ..., et naviguez dans le répertoire vendor/bin et sélectionnez phpcs. Cliquez sur Validate pour valider et s'assurer que le binaire se charge correctement.
  4. Allez dans Settings > Inspections et recherchez PHP Code Sniffer validation sous PHP.
  5. Sélectionnez Custom pour le Coding standard, puis de ... choisir le fichier ruleset.xml situé dans vendor/mediawiki/mediawiki-codesniffer/MediaWiki.

Utilisateurs particuliers de MediaWiki-Vagrant

Ceci remplace l'étape 3 de la section ci-dessus.

  1. Créez une configuration du sniffer de code en cliquant sur + dans le panneau du Sniffer de code.
  2. Sélectionner l'interpréteur Remote PHP comme paramètre MediaWiki-Vagrant, voir Comment déboguer avec MediaWiki-Vagrant et PHPStorm et PhpStorm : utilisation avancée de MediaWiki-Vagrant si vous ne l'avez pas déjà fait.
  3. Choisir /vagrant/mediawiki/vendor/bin/phpcs comme chemin pour Code Sniffer PHP.

Utiliser PHPStorm avec un serveur de tests

Exécuter les tests unitaires

  1. Aller sur Settings > Languages & Frameworks > PHP > Test frameworks
  2. Définir le fichier de configuration par défaut mediawiki/phpunit.xml (un exemple phpunit.xml.dist se trouve sur l'hôte —, créer votre phpunit.xml en le copiant si vous ne l'avez pas déjà fait).

Configurer l'IHM de la base de données

  1. Si vous utilisez une installation Docker ou Vagrant, assurez-vous que votre base de données a son port visible pour l'hôte (non applicable si vous utilisez SQLite)
  2. Ouvrir la barre d'outils Database de la base de données dans IntelliJ.
  3. Créer une source de données du projet en remplissant les informations d'identification (hôte, port, nom d'utilisateur et mot de passe) pour se connecter à la base de données.

Maintenant vous devez être capable de voir le contenu de la base de données en utilisant l'interface graphique.

Greffon Gerrit

Il existe un greffon tiers pour télécharger et relire les modifications Gerrit, https://plugins.jetbrains.com/plugin/7272-gerrit. Pour configurer, aller sur Settings -> Version control -> Gerrit et déclarer :

  • Web-URL : https://gerrit.wikimedia.org/r/
  • Login : votre nom d'utilisateur Gerrit, par exemple awight
  • Password : votre mot de passe HTTPS de Gerrit
  • Assurez-vous de cocher Liste de toutes les modifications Gerrit, sinon vous rencontrerez une erreur 414 lorsque le greffon tentera en une seule passe de télécharger tous les projets disponibles.

Lier Phab et gerrit

Les références aux tickets Phabricator et aux corrections Gerrit (dans le code ou les messages de validation commit de l'IHM git de IntelliJ) peuvent être rendues cliquables :

  • Aller sur Preferences > Version Control > Issue Navigation
  • Ajouter les paramètres suivants :
    1. (T\d+)https://phabricator.wikimedia.org/$1
    2. (I[0-9a-f]{6,})https://gerrit.wikimedia.org/r/q/$1

Voir aussi

Références