EDI JetBrains
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). 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, réfléchissez à nous soumettre une demande pour une clé de licence à l'un des administrateurs.
Comment recevoir une licence ?
For staff, see https://office.wikimedia.org/wiki/JetBrains.
Pour demander une licence, écrivez simplement un courriel ou contactez l'un de nos administrateurs via IRC :
- Sam Reed (reedy in #wikimedia-dev connecter, sreed [AT] wikimedia [DOT] org)
- Florian Schmidt (FlorianSW in #wikimedia-dev connecter, florian.schmidt.stargatewissen [AT] gmail [DOT] 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 plus d'un an), nous pourrions vous demander 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, 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'utilise PhpStorm. Même si ce n'est pas faux, et que PhpStorm est un bon produit, nous vous encourage à choisir IntelliJ IDEA Ultimate, qui inclut certaines fonctionnalités en plus et la prise en charge de langues comparé à PhpStorm. Si vous prévoyez de contribuer aux projets plutôt que ceux utilisant PHP dans MediaWiki, il est probablement avantageux que vous utilisiez déjà un 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 ses avantagages.
Style de code MediaWiki
MediaWiki has its own and specific code style for PHP, JavaScript, JSON and some other languages. Les produits JetBrains vous permettent de définir toutes les conventions de codage dans les paramètres du projet, de cette manière, l'EDI vous aide du mieux qu'il peut, par exemple avec l'autoformattage 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 manquer certains autres langages. Donc si vous souhaitez l'agrandir, 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. Maintenant, importer les paramètres dans l'EDI 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=" " />
<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 se conforme aux normes. Pour ce faire, sélectionnez « Reformater le code » dans le menu Code.
Intégration du Code sniffer
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):
- Go to Settings > PHP > Quality Tools -> Code Sniffer.
- Next to "Configuration" click on the "...", opening up the Code Sniffer panel.
- Click on "...", and browse to the vendor/bin directory and select phpcs. Click on "Validate" to ensure the binary loads properly.
- Go to Settings > Inspections and look for "PHP Code Sniffer validation" under PHP.
- 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.
- Create a code sniffer configuration by clicking on "+" in the Code Sniffer panel.
- 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.
- Select /vagrant/mediawiki/vendor/bin/phpcs as the PHP Code Sniffer path.
Using PHPStorm with a test server
-
Connect with [WinScp]
-
Set up port forwarding (for instance port 2224)
-
Test the connection using putty
-
The authentification requires your public key
-
Now you can connect to your new instance using the forwarded port (i.e. localhost:2224)
-
Open your PhpStorm settings
-
Search for the deployment option
-
Test
-
should return success
-
check the mappings
-
configure upload on Ctrl+S
-
Test creating a new file
-
Specificy the filename
-
... and type ...
-
... no need to add the file to git ...
-
hitting Ctrl+S uploads the instance
-
locate the created file on the instance
-
and check the content (optinal)
Running unit tests
- Go to Settings > Languages & Frameworks > PHP > Test frameworks
- 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).
Set up database GUI
- If you're using a Docker or Vagrant installation, ensure that your database has its port exposed to the host (not applicable if SQLite is used)
- Open the "Database" toolbar in IntelliJ.
- Create a project data source, by filling in the credentials (host, port, username and password) to connect to the database.
Now, you should be able to browse database contents using the GUI.
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:
(T\d+)
→https://phabricator.wikimedia.org/$1
(I[0-9a-f]{6,})
→https://gerrit.wikimedia.org/r/q/$1