Note:

If you want to create a new page for developers, you should create it on the Moodle Developer Resource site.

Setting up PhpStorm: Difference between revisions

From MoodleDocs
No edit summary
mNo edit summary
Line 16: Line 16:


* Add tracker linking in "Preferences / Version control / Issue Navigation"
* Add tracker linking in "Preferences / Version control / Issue Navigation"
* Set Issue ID to "MDL-\d+" and Issue link to "https://tracker.moodle.org/browse/$0" or just click on 'add Jira pattern' and paste "https://tracker.moodle.org"
* Set Issue ID to "MDL-\d+|CONTRIB-\d+|MOBILE-\d+|MDLSITE-d+|MDLQA-\d+|UX-\d+|MDLNET-\d+|WPQA-\d+" and Issue link to "https://tracker.moodle.org/browse/$0" or just click on 'add Jira pattern' and paste "https://tracker.moodle.org"


==Code formatting==
==Code formatting==

Revision as of 07:51, 11 March 2021

PhpStorm is a commercial IDE, it is arguably the best IDE for PHP developers with features such as code completion, code inspection, phpunit support, Behat support, database editor, debugger, etc.

Installation

OS X

Do not install Java manually, download a PhpStorm package with bundled java instead.

General settings

  •  Disable missing @throws tag warning in "Preferences / Project Settings / Inspections / PHP / PHPDoc"
  • Strip trailing whitespace from "Modified Lines" in "Preferences / IDE Settings / Editor/ General"
  • Show line numbers in "Preferences / IDE Settings / Editor / Appearance"

Bug tracker integration

Code formatting

  • Setup coding style to use all rules from Coding style in "Preferences / Project Settings / Code Style / PHP" (or simply import from https://github.com/enovation/moodle-utils/blob/master/phpstorm-config/Moodle.xml) - this will allow you to use automatic code formatting and it does nice code formatting on copy/paste.
  • Set line separator to "Unix and OS X (\n)" in "Preferences / Project Settings / Code Style / General".
  • Set right margin to 132 or 180 in "Preferences / Project Settings / Code Style / General".

Tips & Tricks

  • Use /** @var admin_root $ADMIN */ to autofill $ADMIN->...
  • Remove SQL syntax inspection errors for Moodle tables surrounded by curly brackets (like: SELECT * FROM {user}) by adding \{(\w+)\} to Tools > Databases > user parameters

(more info: https://blog.jetbrains.com/phpstorm/2014/11/database-language-injection-configuration/ , and a "feature request" to improve it: https://youtrack.jetbrains.com/issue/WI-4123 )

  • You can deactivate warnings for specific exceptions (in particular the coding_exception, which is unlikely to be catched in your code) by going to Settings > PHP and add them to 'Unchecked Exceptions' under the 'Analysis' tab

Moodle code checker

Follow the instructions in the README

PHPUnit integration

  1. Install PHPUnit via Composer
  2. Tell PHPStorm where is composer - go to "Preferences / PHP / Composer", fill in "Path to PHP executable", "Path to composer.phar", "Path to composer.json" and make sure the option "Add packages as libraries" is enabled.
  3. Go to "Run / Edit configurations"
  4. Add PHPUnit configuration by clicking on "+"
  5. Click "Use alternative configuration file" and select your phpunit.xml file
  6. Go to "Run / Run ..." and select your new PHPUnit configuration to run

Database editor

  1. Click on the "Database" tab to see the database window
  2. Click "+" in the top left and add "Database source" for your database
  3. Note: click on the link to download the necessary drivers directly from IDE

Javascript Development

You can work on Javascript development by add Grunt configuration:

  1. Install Watchman - https://facebook.github.io/watchman/docs/install.html
  2. From the main Moodle directory open terminal and run:

npm install -g grunt-cli npm install

  1. Open "Edit configuration"
  2. Add new Grunt Task
    1. Verify that the node version is set with proper version for the current Moodle version
    2. In Tasks select watch
  3. Save the Grunt task
  4. Verify that in config.php the setting is not comment

$CFG->cachejs = false;

  1. Click on run icon
  2. happy Javascript development

Useful plugins

  1. Php Inspections ​(EA Extended) - https://plugins.jetbrains.com/plugin/7622-php-inspections-ea-extended-/
  2. SonarLint - https://plugins.jetbrains.com/plugin/7973-sonarlint/
  3. Diff / Patch File Support - https://plugins.jetbrains.com/plugin/11957-diff--patch-file-support/
  4. Handlebars/Mustache - https://plugins.jetbrains.com/plugin/6884-handlebars-mustache/
  5. Markdown Navigator - https://plugins.jetbrains.com/plugin/7896-markdown-navigator/
  6. PHP composer.json support - https://plugins.jetbrains.com/plugin/7631-php-composer-json-support/
  7. PHP Advanced AutoComplete - https://plugins.jetbrains.com/plugin/7276-php-advanced-autocomplete/