Project

General

Profile

Download (3.43 KB) Statistics
| Branch: | Tag: | Revision:
= Reviewing Pull Requests
:toc: right
:toclevels: 5

This document provide a guideance for the Github Pull Request review. It's not a complete list and can be little bit overhelming for smaller patches, however it sets the standard we should all aim for.

[[How]]
== How to use the list

It's a good idea to use https://help.github.com/en/articles/using-saved-replies[Saved reply Github] feature and use it for patches which require extra attention.

[[List]]
== Review list

- [ ] Ticket number, title and description is correct.
- [ ] Fixes the problem described in the issue.
- [ ] No unrelated changes present.
- [ ] Redmine opened for the correct project.
- [ ] No use of .to_sym, .send or other reflection on untrusted inputs.
- [ ] All strings extracted (use :mark_translated: true).
- [ ] All string extractions follow our rules.
- [ ] Appropriate permissions for non-admin users added.
- [ ] New code hasn't been copy-pasted from elsewhere.
- [ ] All new AR fields have appropriate validators.
- [ ] No exceptions are swallowed/squashed.
- [ ] New exceptions are type of Foreman::Exception or WrappedException.
- [ ] Covered with meaningful unit/functional/integration test(s).
- [ ] New view templates have .html.erb extensions, not just .erb.
- [ ] Mixins use ActiveSupport::Concern instead of class_eval etc.
- [ ] Concerns and new classes are added to app/ and not lib/.
- [ ] Apipie documentation is correct: HTTP methods, names of parameters, required true/false.
- [ ] Scoped_search definitions are added for new model attributes where appropriate.
- [ ] Scoped_search definitions for virtual fields (:ext_method) use :only_explicit.
- [ ] Rails logging is appropriately used. Enough debug log statements.
- [ ] Block used for logger.debug to lazily evaluate expensive debug statements.
- [ ] Deprecations use Foreman::Deprecation with a deadline of latest stable + three versions.
- [ ] New controllers/actions have API counterparts.
- [ ] New controllers/actions have Hammer CLI counterparts.
- [ ] Public HTTP API not changed in incompatible way.
- [ ] No memory or performance concerns.
- [ ] Necessary packaging done.
- [ ] Agreed who would provide user documentation.
- [ ] Agreed who would provide community demo.
- [ ] Agreed who would provide Upgrade Notes or New Mainline Features docs.

Feel free to edit this page and more items to the list.

[[Additionally]]
== Additional info

String extractions have http://projects.theforeman.org/projects/foreman/wiki/Translating#Translating-for-developers[several hard to remember rules].

Scoped_search definitions for virtual fields can stop free text search if the field definition added doesn't actually exist - i.e. it's a fake field that uses :ext_method to return results. In this case it should use :only_explicit => true too so it isn't searched in free text searches (see also #5777 for another instance of this).

For internal APIs etc that are changing, use Foreman::Deprecation.deprecation_warning to add a warning for plugins that are triggering old codepaths. We ship deprecated methods for two stable releases, giving plugin authors the chance to ship their plugin with compatibility for a couple of versions before forcing their hand. If our most recent stable release is say, 1.9-stable, then the deprecation first goes into develop which becomes 1.10, still in 1.11 and so the deadline would be 1.12. It would be removed after 1.11-stable's branched. Use the most recent stable number, plus three to work out the deadline.
(17-17/21)