/** @page qa Quality Assurance There is a wide scale effort in progress to improve the quality of the ISC DHCP implementation. The following section describes the major aspects of quality assurance that are being implemented. As this is a work in progress, expect radical changes in this area. @section qaTests ATF Unit-tests See @ref tests Section for details description of ATF-based unit-tests. @section cppcheck cppcheck tool cppcheck is a static analysis tool for C/C++ code. Unlike C/C++ compilers and many other analysis tools it does not detect syntax errors in the code. Cppcheck primarily detects the types of bugs that the compilers normally do not detect. To generate cppcheck report, you must have cppcheck installed in your system. Generation is simple: @verbatim cd doc/ make cppcheck @endverbatim The log files will be stored in doc/html/cppcheck.log and doc/html/cppcheck-error.log. While the former is useful for verifying that all sources were checked, the latter is much more useful. It contains a list of problems that were detected by cppcheck. The goal is to correct all problems and make this an empty file. In the unlikely event of cppcheck finding false positives it is possible to add special comments formatted to instruct cppcheck to not report what it thinks is an issue. make cppcheck target is configured to make cppcheck print out a specific issue type reported. For example to disable the following error report: @verbatim bind/bind-9.8.1/bin/dnssec/dnssec-keygen.c:522: check_fail: Memory leak: algname (error,memleak) @endverbatim the following line could be added before line 522 in dnssec-keygen.c: @verbatim // cppcheck-suppress memleak @endverbatim Please consult cppcheck manual for details. It is section 6.2 "Inline suppressions" in cppcheck 1.54 manual. Section number may change in later versions. @section doxygen Doxygen checks ISC DHCP Developer's Guide (the documentation you are reading now) is generated with doxygen. Doxygen is an open source tool for generating source code documentation. It is available from www.doxygen.org website. Once Doxygen is installed, ISC DHCP documentation can be generated with: @verbatim cd doc make devel @endverbatim Note that cppcheck (see @ref cppcheck Section) reports are linked from Developer's Guide. It is useful to generate both. @section systemTests System level tests ISC is developing a comprehensive set of system level tests. They are described by a separate document called DHCP Test Plan. @section perfdhcp Performance tests using perfdhcp ISC is also developing a performance measurement tool, called perfdhcp. Its main purpose is to measure performance of DHCPv4 and DHCPv6 servers. It is being developed as part of the BIND10 project. See tests/tools/perfdhcp directory in BIND10 source code. @section tahiTests Conformance tests using TAHI TAHI project developed an extensive suite of DHCPv6 conformance tests. ISC plans to deploy and run them periodically in the near future. @section valgrind Memory correctness using valgrind Valgrind is a powerful tool for dynamic code analysis. It allows running existing code (often even without recompiling) in a special environment that tracks memory operations. In particular, it is able to detect: memory leaks, buffer overflows, usage of uninitialized memory, double frees and similar errors. We currently do not use valgrind in ISC DHCP testing, but there are plans for starting to use it. */