Merge pull request #2841 from Hypolite/issue/#2103-alt

Issue/#2103 alt - define coding standards for Friendica
This commit is contained in:
Michael Vogel 2017-02-24 07:46:29 +01:00 committed by GitHub
commit 4d591c4a07

View file

@ -29,7 +29,7 @@ Welcome them, answer their questions, point them to documentation or ping other
Translation Translation
--- ---
The documentation contains help on how to translate Friendica in the [at Transifex](/help/translations) where the UI is translated. The documentation contains help on how to translate Friendica [at Transifex](/help/translations) where the UI is translated.
If you don't want to translate the UI, or it is already done to your satisfaction, you might want to work on the translation of the /help files? If you don't want to translate the UI, or it is already done to your satisfaction, you might want to work on the translation of the /help files?
Design Design
@ -42,29 +42,64 @@ If you have seen Friendica you probably have ideas to improve it, haven't you?
* Make plans for a better Friendica interface design and share them with us. * Make plans for a better Friendica interface design and share them with us.
* Tell us if you are able to realize your ideas or what kind of help you need. * Tell us if you are able to realize your ideas or what kind of help you need.
We can't promise we have the right skills in the group but we'll try. We can't promise we have the right skills in the group but we'll try.
* Choose a thing to start with, e.g. work on the icon set of your favourite theme * Choose a thing to start with, e.g. work on the icon set of your favorite theme
Programming Programming
--- ---
###Coding standards
For the sake of consistency between contribution and general code readability, Friendica follows the widespread [PSR-2 coding standards](http://www.php-fig.org/psr/psr-2/) to the exception of a few rules.
Here's a few primers if you are new to Friendica or to the PSR-2 coding standards:
* Indentation is tabs, period (not PSR-2).
* By default, strings are enclosed in single quotes, but feel free to use double quotes if it makes more sense (SQL queries, adding tabs and line feeds).
* Operators are wrapped by spaces, e.g. `$var === true`, `$var = 1 + 2` and `'string' . $concat . 'enation'`
* Braces are mandatory in conditions
* No closing PHP tag
* No trailing spaces
Don't worry, you don't have to know by heart the PSR-2 coding standards to start contributing to Friendica.
There are a few tools you can use to check or fix your files before you commit.
####Check with [PHP Code Sniffer](https://github.com/squizlabs/PHP_CodeSniffer)
This tool checks your files against a variety of coding standards, including PSR-2, and ouputs a report of all the standard violations.
You can simply install it through PEAR: `pear install PHP_CodeSniffer`
Once it is installed and available in your PATH, here's the command to run before committing your work:
$> phpcs --standard=PSR2 <file or directory>
The output is a list of all the coding standards violations that you should fix before committing your work.
Additionally, `phpcs` integrates with a few IDEs (Eclipse, Netbeans, PHPStorm...) so that you don't have to fiddle with the command line.
####Fix with PHP Code Beautifier and Fixer (phpbcf) included in PHP Code Sniffer
If you're getting a massive list of standards violations when running `phpcs`, it can be annoying to fix all the violations by hand.
Thankfully, PHP Code Sniffer is shipped with an automatic code fixer that can take care of the tedious task for you.
Here's the command to automatically fix the files you created/modified:
$> phpcbf --standard=PSR2 <file or directory>
If the command-line tools `diff` and `patch` are unavailabe for you, `phpcbf` can use slightly slower PHP equivalents by using the `--no-patch` argument.
###Code documentation ###Code documentation
If you are interested in having the documentation of the Friendica code outside of the code files, you can use [Doxygen](http://doxygen.org) to generate it. If you are interested in having the documentation of the Friendica code outside of the code files, you can use [Doxygen](http://doxygen.org) to generate it.
The configuration file for Doxygen is located in the ```util``` directory of the project sources. The configuration file for Doxygen is located in the `util` directory of the project sources.
Run Run
$> doxygen util/Doxyfile $> doxygen util/Doxyfile
to generate the files which will be located in the ```doc/html``` subdirectory in the Friendica directory. to generate the files which will be located in the `doc/html` subdirectory in the Friendica directory.
You can browse these files with any browser. You can browse these files with any browser.
If you find missing documentation, don't hestitate to contact us and write it down to enhance the code documentation. If you find missing documentation, don't hesitate to contact us and write it down to enhance the code documentation.
###Issues ###Issues
Have a look at our [issue tracker](https://github.com/friendica/friendica) on github! Have a look at our [issue tracker](https://github.com/friendica/friendica) on github!
* Try to reproduce a bug that needs more inquries and write down what you find out. * Try to reproduce a bug that needs more inquiries and write down what you find out.
* If a bug looks fixed, ask the bug reporters for feedback to find out if the bug can be closed. * If a bug looks fixed, ask the bug reporters for feedback to find out if the bug can be closed.
* Fix a bug if you can. Please make the pull request against the *develop* branch of the repository. * Fix a bug if you can. Please make the pull request against the *develop* branch of the repository.
* There is a *Junior Job* label for issues we think might be a good point to start with. * There is a *Junior Job* label for issues we think might be a good point to start with.