diff --git a/.gitignore b/.gitignore
index 8157f1a9..35dc9b42 100644
--- a/.gitignore
+++ b/.gitignore
@@ -10,6 +10,7 @@ fuzz-testing
 
 build
 build_coverage
+clang_analyze_build
 
 doc/xml
 doc/html
diff --git a/Makefile b/Makefile
index 63c9cd78..a873292b 100644
--- a/Makefile
+++ b/Makefile
@@ -258,6 +258,12 @@ fuzzing-stop:
 cppcheck:
 	cppcheck --enable=warning --inconclusive --force --std=c++11 $(AMALGAMATED_FILE) --error-exitcode=1
 
+# compile and check with Clang Static Analyzer
+clang_analyze:
+	rm -fr clang_analyze_build
+	mkdir clang_analyze_build
+	cd clang_analyze_build ; CCC_CXX=/Users/niels/Documents/projects/llvm-clang/local/bin/clang++ /Users/niels/Documents/projects/llvm-clang/local/bin/scan-build cmake ..
+	/Users/niels/Documents/projects/llvm-clang/local/bin/scan-build -enable-checker alpha.core.DynamicTypeChecker,alpha.core.PointerArithm,alpha.core.PointerSub,alpha.cplusplus.DeleteWithNonVirtualDtor,alpha.cplusplus.IteratorRange,alpha.cplusplus.MisusedMovedObject,alpha.security.ArrayBoundV2,alpha.core.Conversion --use-c++=/Users/niels/Documents/projects/llvm-clang/local/bin/clang++ --view -analyze-headers -o clang_analyze_build/report.html make -j10 -C clang_analyze_build
 
 ##########################################################################
 # maintainer targets
diff --git a/test/src/unit-readme.cpp b/test/src/unit-readme.cpp
index bdcbd73e..05f356a8 100644
--- a/test/src/unit-readme.cpp
+++ b/test/src/unit-readme.cpp
@@ -168,6 +168,7 @@ TEST_CASE("README", "[hide]")
             const std::string tmp = j[0];
             j[1] = 42;
             bool foo = j.at(2);
+            CHECK(foo == true);
 
             // other stuff
             j.size();     // 3 entries
@@ -177,6 +178,7 @@ TEST_CASE("README", "[hide]")
 
             // comparison
             bool x = (j == "[\"foo\", 1, true]"_json);  // true
+            CHECK(x == true);
 
             // create an object
             json o;
@@ -257,17 +259,21 @@ TEST_CASE("README", "[hide]")
             bool b1 = true;
             json jb = b1;
             bool b2 = jb;
+            CHECK(b2 == true);
 
             // numbers
             int i = 42;
             json jn = i;
             double f = jn;
+            CHECK(f == 42);
 
             // etc.
 
             std::string vs = js.get<std::string>();
             bool vb = jb.get<bool>();
+            CHECK(vb == true);
             int vi = jn.get<int>();
+            CHECK(vi == 42);
 
             // etc.
         }