Both sides previous revisionPrevious revisionNext revision | Previous revisionNext revisionBoth sides next revision |
development:recommended_tools [2015/12/11 20:09] – ↷ Links adapted because of a move operation demiankatz | development:recommended_tools [2021/04/13 05:50] – [Tests] emaijala |
---|
Some developers prefer to use a simple text editor to quickly and easily edit individual files. Others prefer a full-fledged IDE (Integrated Development Environment) which imposes a "whole project" view of the code and includes a built-in understanding of the code which enables it to detect errors, make suggestions and offer navigational shortcuts during programming. As a general rule, an IDE has a steeper learning curve than a basic editor and consumes more resources; however, it offers great advantages when undertaking more complex programming tasks. Basic text editors can offer more speed, and some also include plug-ins to enable certain IDE-like functionality. | Some developers prefer to use a simple text editor to quickly and easily edit individual files. Others prefer a full-fledged IDE (Integrated Development Environment) which imposes a "whole project" view of the code and includes a built-in understanding of the code which enables it to detect errors, make suggestions and offer navigational shortcuts during programming. As a general rule, an IDE has a steeper learning curve than a basic editor and consumes more resources; however, it offers great advantages when undertaking more complex programming tasks. Basic text editors can offer more speed, and some also include plug-ins to enable certain IDE-like functionality. |
| |
At Villanova, Demian uses the [[https://netbeans.org/|Netbeans IDE]] for most of his work, while Chris uses the [[https://notepad-plus-plus.org/|Notepad++]] text editor. | At Villanova, Demian uses the free, open source [[https://code.visualstudio.com/|Visual Studio Code]] IDE for most of his work (and has previously been successful using [[https://netbeans.org/|Netbeans]]), while Chris uses the [[https://notepad-plus-plus.org/|Notepad++]] text editor. |
| |
===== Version Control ===== | ===== Version Control ===== |
| |
It is strongly recommended that you use some sort of version control software to keep track of revisions while programming. This provides a valuable safety net for reverting bad changes, remembering why particular adjustments were made, etc. In the case of [[development:recommended_tools:git]], the tool used by VuFind, it also offers powerful collaboration and sharing capabilities. Whether you plan to work locally or share with the local community, [[development:recommended_tools:git]] is a tool worth learning more about, as is the [[http://github.com|GitHub]] platform, which enhances Git's native sharing capabilities with web-based collaboration tools. | It is strongly recommended that you use some sort of version control software to keep track of revisions while programming. This provides a valuable safety net for reverting bad changes, remembering why particular adjustments were made, etc. In the case of [[development:recommended_tools:git|Git]], the tool used by VuFind, it also offers powerful collaboration and sharing capabilities. Whether you plan to work locally or share with the local community, [[development:recommended_tools:git|Git]] is a tool worth learning more about, as is the [[http://github.com|GitHub]] platform, which enhances Git's native sharing capabilities with web-based collaboration tools. |
| |
| ===== Dependency Management ===== |
| |
| VuFind loads its external dependencies using [[development:recommended_tools:composer|Composer]]. An understanding of Composer is important when running VuFind from a source checkout or when adding new third-party libraries. |
| |
| ===== Grunt ===== |
| |
| VuFind, as of version 3.1, ships with a Gruntfile to help manage front end tasks like compiling less/scss, compressing js, and checking coding standards. [[development:grunt|See the documentation]] to get started. |
===== Meeting Project Standards ===== | ===== Meeting Project Standards ===== |
| |
| |
The [[development:testing:unit_tests|unit tests]] page talks about how to run tests locally. | The [[development:testing:unit_tests|unit tests]] page talks about how to run tests locally. |
| |
| To quickly check the tests that are run e.g. when a pull request is submitted, try the following command: |
| |
| <code> |
| vendor/bin/phing eslint jshint phpunitfast phpcs-console php-cs-fixer-dryrun checkLessToSass phpstan-console |
| </code> |
| |
==== Style ==== | ==== Style ==== |
| |
For style compliance, it is recommended that you install [[https://github.com/squizlabs/PHP_CodeSniffer|PHP_CodeSniffer]] and [[https://github.com/FriendsOfPHP/PHP-CS-Fixer|PHP-CS-fixer]], each of which is capable of detecting (and sometimes automatically fixing) different issues. | For style compliance, VuFind uses [[https://github.com/squizlabs/PHP_CodeSniffer|PHP_CodeSniffer]] and [[https://github.com/FriendsOfPHP/PHP-CS-Fixer|PHP-CS-fixer]], each of which is capable of detecting (and sometimes automatically fixing) different issues. In recent versions of VuFind, these tools will be installed automatically by Composer. |
| |
To test style compliance with PHP_CodeSniffer, you can run: | To test style compliance with PHP_CodeSniffer while in your VuFind directory, you can test a single file with: |
| |
<code> | <code> |
phpcs --standard=PEAR [file] | vendor/bin/phpcs --standard=PEAR [file] |
</code> | </code> |
| |
To automatically fix certain PHP_CodeSniffer issues, you can run: | Or, through [[https://www.phing.info/|Phing]], you can check the whole project: |
| |
<code> | <code> |
phpcbf --standard=PEAR [file] | vendor/bin/phing phpcs-console |
</code> | </code> |
| |
To automatically fix additional issues with php-cs-fixer, you can install [[https://www.phing.info/|Phing]] and then, from the base of your VuFind directory, run: | To automatically fix certain PHP_CodeSniffer issues, you can run: |
| |
<code> | <code> |
phing php-cs-fixer | vendor/bin/phing phpcbf |
</code> | </code> |
| |
(Note that this assumes that the php-cs-fixer command is accessible on your search path). | To automatically fix additional issues with php-cs-fixer, from the base of your VuFind directory, run: |
| |
| <code> |
| vendor/bin/phing php-cs-fixer |
| </code> |
| |
If you are unwilling or unable to run these tools locally, note that if you open a pull request against the [[https://github.com/vufind-org/vufind|main VuFind repo]], they will be automatically run by [[development:testing:continuous_integration|continuous integration]] and you can view a list of issues in the resulting Travis report. Before you spend time manually fixing anything, you can post a comment on the pull request to ask for assistance with running the automatic processes. | If you are unwilling or unable to run these tools locally, note that if you open a pull request against the [[https://github.com/vufind-org/vufind|main VuFind repo]], they will be automatically run by [[development:testing:continuous_integration|continuous integration]] and you can view a list of issues in the resulting Travis report. Before you spend time manually fixing anything, you can post a comment on the pull request to ask for assistance with running the automatic processes. |