Документ взят из кэша поисковой машины. Адрес оригинального документа : http://www.eso.org/projects/dfs/team/QA-code-review-form.doc
Дата изменения: Mon Sep 29 18:09:14 2003
Дата индексирования: Sun Apr 13 22:49:03 2008
Кодировка:

Поисковые слова: п п п п п п п п п п п п п п п п п п п п

Code Review Form


|Application: |Release: |
|Reviewer: |Begin date: |
| |End date : |
|Module name: |


Readability

|Check number: 1 |
|Description: Header existence for each |Evaluation (always/often/sometimes/|
|source file and for each method, class, |never) : |
|interface, routine, function, ... | |
|Comments: |



|Check number: 2 |
|Description: Header completeness : |Evaluation (perfect/high/low/ null)|
|* author name, |: |
|* current version, | |
|* last modification date, | |
|* who/ when/ why (SPR)/ where (version) | |
|modified | |
|* detailed and comprehensive description for| |
|method/class/interface/ role | |
|* method arguments role | |
|* method arguments type (in/out) | |
|Comments: |



|Check number: 3 |
|Description: Naming conventions existence |Evaluation (always/often/sometimes/|
|(variables start with lowercase, then |never) : |
|Uppercase; naming conventions for file; | |
|class=noun+adjective; method=verb meaning | |
|operation/action; function name expresses | |
|returned value (square-root); | |
|boolean=expression meaning yes; avoid | |
|similar names and abbreviations; ; prefer | |
|quite long names; ...): | |
|Comments: |




|Check number: 4 |
|Description: Naming conventions application|Evaluation (perfect/high/low/ null)|
|: |: |
|Comments: |

|Check number: 5 |
|Description: Significance and relevance of |Evaluation (perfect/high/low/ null)|
|comments (should explain not repeat: not |: |
|necessary to duplicate in words the meaning | |
|of a variable/type/argument name).): | |
|Comments: |


|Check number: 6 |
|Description: Percentage of comments |Evaluation (more than 70%/up|
| |to 50%/up to 20%/less than |
| |20%) : |
|Comments: |


|Check number: 7 |
|Description: Indentation existence (basic |Evaluation |
|instructions blocks with indented {...}) |(always/often/sometimes/ |
| |never) : |
|Comments: |


|Check number: 8 |
|Description: One instruction per line |Evaluation |
| |(always/often/sometimes/ |
| |never) : |
|Comments: |


|Check number: 9 |
|Description: type of all objects is explicitly |Evaluation |
|declared (e.g. declare all function arguments; |(always/often/sometimes/ |
|function return type, ...) |never) : |
|Comments: |






Maintainability

|Check number: 10 |
|Description: Large classes /modules existence |Evaluation |
|("long length") |(always/often/sometimes/ |
| |never) : |
|Comments: |



|Check number: 11 |
|Description: Large methods/routines existence |Evaluation |
|("long length") |(always/often/sometimes/ |
| |never) : |
|Comments: |


|Check number: 12 |
|Description: Use of global variables is strongly |Evaluation |
|limited and commented |(always/often/sometimes/ |
| |never) : |
|Comments: |


|Check number: 13 |
|Description: Use of local variables is promoted |Evaluation |
|(add "intermediate" variables to reduce complexity|(always/often/sometimes/ |
|of long instruction line) |never) : |
|Comments: |


|Check number: 14 |
|Description: number of function arguments |Evaluation |
|(input/output parameters) is limited. |(always/often/sometimes/ |
| |never) : |
|Comments: |


|Check number: 15 |
|Description: Boolean type defined once at highest|Evaluation |
|level (C++) (and then not re-defined several |(always/often/sometimes/ |
|times) |never) : |
|Comments: |


|Check number: 16 |
|Description: Pseudocode existence (pseudocode is |Evaluation |
|a structured summary of the algorithm, using both |(always/often/sometimes/ |
|usual control structures and natural language). |never) : |
|Normally not required for very simpel algorithm. | |
|See "webcheck" script for example: | |
|Comments: |


|Check number: 17 |
|Description: Error message are formated : when an|Evaluation |
|error or an exception is raised, report the |(always/often/sometimes/ |
|corresponding method/function. For system error, |never) : |
|include corresponding system call name and error | |
|text in every error message . | |
|Comments: |




|Check number: 18 |
|Description: use C ANSI for function declaration:|Evaluation |
| |(always/often/sometimes/ |
|int my_function (int arg1, int arg2) |never) : |
|instead of: | |
|my_function (arg1, arg2) | |
|int arg1, arg2; | |
|Comments: |





Reliability/robustness

|Check number: 19 |
|Description: all variables are initialised just |Evaluation |
|when declared: |(always/often/sometimes/ |
| |never) : |
|Comments: |


|Check number: 20 |
|Description: default case defined in switch |Evaluation |
|structure: |(always/often/sometimes/ |
| |never) : |
|Comments: |


|Check number: 21 |
|Description: use of exceptions: |Evaluation |
| |(always/often/sometimes/ |
| |never) : |
|Comments: |

|Check number: 22 |
|Description: error types design existence (errors|Evaluation |
|clearly split into : internal error that can be |(always/often/sometimes/ |
|recovered by the application itself ; internal |never) : |
|error that can NOT be recovered by the application| |
|itself ; user inputs error. For each exception | |
|type, is the treatment level clear ? (clearly if | |
|the exception is propagated and why it should be; | |
|error panel displayed; logfile updated): | |
|Comments: |

|Check number: 23 |
|Description: exceptions/errors missing cases |Evaluation |
|(input method arguments checked before use; max |(always/often/sometimes/ |
|value of table index checked within the loop; |never) : |
|...) : | |
|Comments: |


| |
|Check number: 24 |
|Description: C++: every memory allocation failure|Evaluation |
|is treated (every call to malloc or realloc |(always/often/sometimes/ |
|checked to see if it returns zero or not). |never) : |
|Comments: |


|Check number: 25 |
|Description: the while variable is initialised |Evaluation |
|before entering the while loop; his initial value |(always/often/sometimes/ |
|is checked before entering the loop:. |never) : |
|Comments: |


|Check number: 26 |
|Description: C++: No expressions with |Evaluation |
|inter-dependencies (no assumption on evaluation |(always/often/sometimes/ |
|order) such as: |never) : |
|/* incorrect */ | |
|(void)printf("%d%d", x++, power(2,x)); | |
|/* correct */ x = x + 1; | |
|(void)printf("%d%d",x, power(2,x)); | |
|Comments: |


|Check number: 27 |
|Description: any output method/routine argument |Evaluation |
|has a value (initialisation required): |(always/often/sometimes/ |
| |never) : |
|Comments: |


|Check number: 28 |
|Description: Check every system call for an error|Evaluation |
|return, unless you know you wish to ignore errors.|(always/often/sometimes/ |
| |never) : |
|Comments: |

Portability

|Check number: 29 |
|Description: comparison between floats are |Evaluation |
|limited, commented and done with appropriate |(always/often/sometimes/ |
|precision. |never) : |
|Comments: |


|Check number: 30 |
|Description: Java: use of native methods |Evaluation |
|(external code written in C or other) is limited |(always/often/sometimes/ |
|and commented: |never) : |
|Comments: |


|Check number: 31 |
|Description: use of non-standard features is |Evaluation |
|limited and commented (not standard C, not POSIX |(always/often/sometimes/ |
|compliant, ...) |never) : |
|Comments: |


|Check number: 32 |
|Description: number of hard-coded values (file |Evaluation (very |
|path, plat-form dependant constants, widgets |high/high/low/ null) : |
|size/positions, font size/positions, table | |
|dimensions, ...): | |
|Comments: |


|Check number: 33 |
|Description: usage of cast operator is promoted |Evaluation |
|and commented (no implicit conversion): |always/often/sometimes/ |
| |never) : |
|Comments: |


|Check number: 34 |
|Description: C: #define not recommended (prefer |Evaluation |
|const or enum attributes since #define is cpp |always/often/sometimes/ |
|dependant): |never) : |
|Comments: |





Performances

|Check number: 35 |
|Description: "invariable instructions block" |Evaluation |
|existence within loops: to improve execution |(always/often/sometimes/ |
|performances, avoid putting some instructions in |never) : |
|loops which are running a lot of times, where they| |
|are not really necessary. For instance, a print | |
|command for log purposes and for each occurence of| |
|the loop (maybe possible to print only once before| |
|entering the loop or after the loop ?), or write a| |
|block of lines into a file instead of line by | |
|line, ... It's then a set of instructions that can| |
|be extracted from the loop, because in fact it's | |
|enough to run them only once. | |
|Comments: |


|Check number: 36 |
|Description: de-allocate large size objects |Evaluation |
|(large tables) as soon as not needed anymore |(always/often/sometimes/ |
| |never) : |
|Comments: |


|Check number: 37 |
|Description: algorithm to be improved |Evaluation |
| |(always/often/sometimes/ |
| |never) : |
|Comments: |