-
Notifications
You must be signed in to change notification settings - Fork 0
/
TODO
23 lines (12 loc) · 1.65 KB
/
TODO
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
0. Add comments to the source files identifying the exercises for which they are solutions. (Status: partial.)
1. Add a coverage tool, and write unit tests for earlier exercises which had none. (Status: done.)
2. Create a Makefile target that runs all the tests. (Status: done)
3. Analyze source with clang-tidy and/or "gcc -fanalyzer" (https://linuxplumbersconf.org/event/7/contributions/721/). As of 3/22, "gcc -fanalyzer" is unusably buggy with C++; see https://gcc.gnu.org/bugzilla/showdependencytree.cgi?id=97110. (clang-tidy status: done)
4. Try microbenchmarking tools (https://www.bfilipek.com/2016/01/micro-benchmarking-libraries-for-c.html)
5. Migrate ACCU- and BPF-related code to a new Github repo (Status: done).
6. Get rid of operator new in favor of RAII. (Status: done except for two exceptions. One is count_number_of_Aa.cc, which is someone else's code. The other is reference_count_string, where the whole point of the exercise was implement essentially std::shared_ptr behavior with std::shared_ptr.)
7. Replace raw pointers with smart pointers. (Status: done, except as noted in item 6.)
8. After getting rid of operator new, check all tests for memory leaks with valgrind. (Status: done.)
9. Make move() constructors standards-compliant; avoid undefined behavior. (Status: done.)
10. Add a makedeps facility to the Makefile so that any change to headers (notably gtest.h) will trigger recompilation.
11. Replace assertions in constructors with exceptions, and replace assertions in ordinary functions with return of a std::pair, one of whose members is a failure indicator. With this change, all the code is now valgrind-clean. (Status: done)