List of requirements for task execution for the correction and finishing products platform Flexberry

Check-list for CodeReview - a wonderful tool, allowing to check that reviewer do not forget to verify the absence of any potential problems with the test code.

Aspects which need to check

Code

  • The efficiency of the code.
  • Code works and performs its duties, the logic is correct, etc.
  • Cycles there is a set length and correct termination conditions.
  • Code comprehension.
  • Code simple to understand.
  • The method names are not too long.
  • The code conforms to the accepted style.
  • Properly named namespaces / classes / methods / variables.
  • Followed the rules of naming files according to classes.
  • Corresponds to the namespace of the class and the physical location of the files.
  • In each file, only one class.
  • The redundancy of the code.
  • There are no duplicate parts which can finest a separate function.
  • There are no methods which can be in the code to replace the library functions.
  • There is no commented out code.
  • There is no change of the code, intended for debugging.
  • No global / static variables from which you can delete or move them.
  • Code independence.
  • Code is as independent as possible.
  • Upgrade configuration.
  • If necessary, changes in the configuration.
  • There is a description of the changes to the release.
  • Modified installation tools / deployment (for example, in a NuGet package).
  • Correct handling of exceptions.
  • Exceptions are used as intended.
  • Stores information about the error (e.g., log)
  • There are no empty catch blocks.
  • Presents a clear explanation of what the error is.
  • Messages are localized.
  • Provided security.
  • All input data are checked (for correct type, length, format, range).
  • Used to check CodeContracts (.NET >= 4.0).
  • All output is checked and, if necessary, coded (e.g., XSS).

Source Control

  • The correct comments to the commit (check-in TFS).
  • Comment on the commit (check-in TFS) reflects updated accordingly.
  • Version control system is used for its intended purpose (for example, does not have prompts of the form “not to forget to update …”, “TODO”)?
  • Relevant comments adopted by the requirements.
  • Comments conform to requirements and rules (Russian) language.
  • Atomic commit.
  • NB: normally a commit is not atomic if in the description there is the word “and”.

Documentation

  • There are comments in the code.
  • Comments reflect the meaning of the code.
  • All functions and their parameters are commented out.
  • Relevant comments adopted by the requirements.
  • Comments conform to requirements and rules (Russian) language.
  • Made appropriate notes in the WIKI.
  • Some unusual behavior or description of the edge cases are documented.
  • The use and operation of third-party libraries is documented.
  • All data structures and units described.

Testing

  • Have tests for the code.
  • Tests have, and they are sufficient.
  • Unit tests check that the code provides the functionality you require.
  • Created test script and a special page on the corresponding test stand.
  • Test script attached to the desired test plan.
  • Test script complies with the requirements.