Remove building with NOCRYPTO option
[minix.git] / external / bsd / dhcp / dist / doc / devel / qa.dox
blob81a9e83b616565e069cdbbed8fba1c274c2c09b0
1 /**
2  @page qa Quality Assurance
4 There is a wide scale effort in progress to improve the quality of the ISC
5 DHCP implementation. The following section describes the major aspects of
6 quality assurance that are being implemented. As this is a work in progress,
7 expect radical changes in this area.
9  @section qaTests ATF Unit-tests
11  See @ref tests Section for details description of ATF-based unit-tests.
13  @section cppcheck cppcheck tool
15 <a href="http://cppcheck.sourceforge.net/">cppcheck</a> is a static analysis tool
16 for C/C++ code. Unlike C/C++ compilers and many other analysis tools it does not
17 detect syntax errors in the code. Cppcheck primarily detects the types of bugs
18 that the compilers normally do not detect. To generate cppcheck report, you
19 must have cppcheck installed in your system. Generation is simple:
21 @verbatim
22 cd doc/
23 make cppcheck
24 @endverbatim
26 The log files will be stored in doc/html/cppcheck.log and
27 doc/html/cppcheck-error.log. While the former is useful for verifying that all
28 sources were checked, the latter is much more useful. It contains a list of
29 problems that were detected by cppcheck. The goal is to correct all problems
30 and make this an empty file.
32 In the unlikely event of cppcheck finding false positives it is possible to add
33 special comments formatted to instruct cppcheck to not report what it thinks is
34 an issue. make cppcheck target is configured to make cppcheck print out a
35 specific issue type reported. For example to disable the following error report:
37 @verbatim
38 bind/bind-9.8.1/bin/dnssec/dnssec-keygen.c:522: check_fail: Memory leak: algname (error,memleak)
39 @endverbatim
41 the following line could be added before line 522 in dnssec-keygen.c:
42 @verbatim
43 // cppcheck-suppress memleak
44 @endverbatim
46 Please consult cppcheck manual for details. It is section 6.2 "Inline
47 suppressions" in cppcheck 1.54 manual. Section number may change in later
48 versions.
50  @section doxygen Doxygen checks
52 ISC DHCP Developer's Guide (the documentation you are reading now) is
53 generated with doxygen. Doxygen is an open source tool for generating
54 source code documentation. It is available from
55 <a href="http://www.doxygen.org">www.doxygen.org</a> website. Once Doxygen
56 is installed, ISC DHCP documentation can be generated with:
58 @verbatim
59 cd doc
60 make devel
61 @endverbatim
63 Note that cppcheck (see @ref cppcheck Section) reports are linked from
64 Developer's Guide. It is useful to generate both.
66  @section systemTests System level tests
68 ISC is developing a comprehensive set of system level tests.
69 They are described by a separate document called DHCP Test Plan.
71  @section perfdhcp Performance tests using perfdhcp
73 ISC is also developing a performance measurement tool, called
74 perfdhcp. Its main purpose is to measure performance of DHCPv4 and
75 DHCPv6 servers. It is being developed as part of the BIND10 project.
76 See tests/tools/perfdhcp directory in BIND10 source code.
78  @section tahiTests Conformance tests using TAHI
80 <a href="http://tahi.org">TAHI project</a> developed an extensive suite of <a
81 href="http://tahi.org/logo/dhcpv6/">DHCPv6 conformance tests</a>. ISC plans to
82 deploy and run them periodically in the near future.
84  @section valgrind Memory correctness using valgrind
86 <a href="http://valgrind.org/">Valgrind</a> is a powerful tool for dynamic code
87 analysis. It allows running existing code (often even without recompiling) in a
88 special environment that tracks memory operations. In particular, it is able to
89 detect: memory leaks, buffer overflows, usage of uninitialized memory, double
90 frees and similar errors. We currently do not use valgrind in ISC DHCP testing,
91 but there are plans for starting to use it.