wip
diff --git a/src/base/commandlineflags.h b/src/base/commandlineflags.h
index 3d31a86..88e2dde 100644
--- a/src/base/commandlineflags.h
+++ b/src/base/commandlineflags.h
@@ -45,69 +45,69 @@
 // We also put the type of the variable in the namespace, so that
 // people can't DECLARE_int32 something that they DEFINE_bool'd
 // elsewhere.
-#ifndef BASE_COMMANDLINEFLAGS_H__
-#define BASE_COMMANDLINEFLAGS_H__
+#ifndef BASE_COMMANDLINEFLAGS_H_
+#  define BASE_COMMANDLINEFLAGS_H_
 
-#include <cstdlib>  // for getenv
-#include <cstring>  // for memchr
-#include <string>
+#  include <cstdlib>  // for getenv
+#  include <cstring>  // for memchr
+#  include <string>
 
-#include "config.h"
+#  include "config.h"
 
-#ifdef GLOG_USE_GFLAGS
+#  ifdef GLOG_USE_GFLAGS
 
-#  include <gflags/gflags.h>
+#    include <gflags/gflags.h>
 
-#else
+#  else
 
-#  include "glog/logging.h"
+#    include "glog/logging.h"
 
-#  define DECLARE_VARIABLE(type, shorttype, name, tn) \
-    namespace fL##shorttype {                         \
-      extern GLOG_EXPORT type FLAGS_##name;           \
-    }                                                 \
-    using fL##shorttype::FLAGS_##name
-#  define DEFINE_VARIABLE(type, shorttype, name, value, meaning, tn) \
-    namespace fL##shorttype {                                        \
-      GLOG_EXPORT type FLAGS_##name(value);                          \
-      char FLAGS_no##name;                                           \
-    }                                                                \
-    using fL##shorttype::FLAGS_##name
+#    define DECLARE_VARIABLE(type, shorttype, name, tn) \
+      namespace fL##shorttype {                         \
+        extern GLOG_EXPORT type FLAGS_##name;           \
+      }                                                 \
+      using fL##shorttype::FLAGS_##name
+#    define DEFINE_VARIABLE(type, shorttype, name, value, meaning, tn) \
+      namespace fL##shorttype {                                        \
+        GLOG_EXPORT type FLAGS_##name(value);                          \
+        char FLAGS_no##name;                                           \
+      }                                                                \
+      using fL##shorttype::FLAGS_##name
 
 // bool specialization
-#  define DECLARE_bool(name) DECLARE_VARIABLE(bool, B, name, bool)
-#  define DEFINE_bool(name, value, meaning) \
-    DEFINE_VARIABLE(bool, B, name, value, meaning, bool)
+#    define DECLARE_bool(name) DECLARE_VARIABLE(bool, B, name, bool)
+#    define DEFINE_bool(name, value, meaning) \
+      DEFINE_VARIABLE(bool, B, name, value, meaning, bool)
 
 // int32 specialization
-#  define DECLARE_int32(name) DECLARE_VARIABLE(google::int32, I, name, int32)
-#  define DEFINE_int32(name, value, meaning) \
-    DEFINE_VARIABLE(google::int32, I, name, value, meaning, int32)
+#    define DECLARE_int32(name) DECLARE_VARIABLE(google::int32, I, name, int32)
+#    define DEFINE_int32(name, value, meaning) \
+      DEFINE_VARIABLE(google::int32, I, name, value, meaning, int32)
 
 // uint32 specialization
-#  ifndef DECLARE_uint32
-#    define DECLARE_uint32(name) \
-      DECLARE_VARIABLE(google::uint32, U, name, uint32)
-#  endif  // DECLARE_uint64
-#  define DEFINE_uint32(name, value, meaning) \
-    DEFINE_VARIABLE(google::uint32, U, name, value, meaning, uint32)
+#    ifndef DECLARE_uint32
+#      define DECLARE_uint32(name) \
+        DECLARE_VARIABLE(google::uint32, U, name, uint32)
+#    endif  // DECLARE_uint64
+#    define DEFINE_uint32(name, value, meaning) \
+      DEFINE_VARIABLE(google::uint32, U, name, value, meaning, uint32)
 
 // Special case for string, because we have to specify the namespace
 // std::string, which doesn't play nicely with our FLAG__namespace hackery.
-#  define DECLARE_string(name)                    \
-    namespace fLS {                               \
-    extern GLOG_EXPORT std::string& FLAGS_##name; \
-    }                                             \
-    using fLS::FLAGS_##name
-#  define DEFINE_string(name, value, meaning)                   \
-    namespace fLS {                                             \
-    std::string FLAGS_##name##_buf(value);                      \
-    GLOG_EXPORT std::string& FLAGS_##name = FLAGS_##name##_buf; \
-    char FLAGS_no##name;                                        \
-    }                                                           \
-    using fLS::FLAGS_##name
+#    define DECLARE_string(name)                    \
+      namespace fLS {                               \
+      extern GLOG_EXPORT std::string& FLAGS_##name; \
+      }                                             \
+      using fLS::FLAGS_##name
+#    define DEFINE_string(name, value, meaning)                   \
+      namespace fLS {                                             \
+      std::string FLAGS_##name##_buf(value);                      \
+      GLOG_EXPORT std::string& FLAGS_##name = FLAGS_##name##_buf; \
+      char FLAGS_no##name;                                        \
+      }                                                           \
+      using fLS::FLAGS_##name
 
-#endif  // GLOG_USE_GFLAGS
+#  endif  // GLOG_USE_GFLAGS
 
 // Define GLOG_DEFINE_* using DEFINE_* . By using these macros, we
 // have GLOG_* environ variables even if we have gflags installed.
@@ -146,4 +146,4 @@
        ? (dflt)                  \
        : static_cast<unsigned>(strtoul(getenv(envname), nullptr, 10)))
 
-#endif  // BASE_COMMANDLINEFLAGS_H__
+#endif  // BASE_COMMANDLINEFLAGS_H_
diff --git a/src/base/googleinit.h b/src/base/googleinit.h
index bf569b8..5dcba36 100644
--- a/src/base/googleinit.h
+++ b/src/base/googleinit.h
@@ -30,13 +30,13 @@
 // ---
 // Author: Jacob Hoffman-Andrews
 
-#ifndef _GOOGLEINIT_H
-#define _GOOGLEINIT_H
+#ifndef GOOGLEINIT_H
+#  define GOOGLEINIT_H
 
 class GoogleInitializer {
  public:
   using void_function = void (*)();
-  GoogleInitializer(const char*, void_function f) { f(); }
+  GoogleInitializer(const char* /*unused*/, void_function f) { f(); }
 };
 
 #define REGISTER_MODULE_INITIALIZER(name, body)       \
@@ -46,4 +46,4 @@
       #name, google_init_module_##name);              \
   }
 
-#endif /* _GOOGLEINIT_H */
+#endif /* GOOGLEINIT_H */
diff --git a/src/base/mutex.h b/src/base/mutex.h
index bb74246..b063811 100644
--- a/src/base/mutex.h
+++ b/src/base/mutex.h
@@ -136,7 +136,7 @@
 #  ifdef __linux__
 #    ifndef _XOPEN_SOURCE  // Some other header might have already set it for
                            // us.
-#      define _XOPEN_SOURCE 500  // may be needed to get the rwlock calls
+#      define XOPEN_SOURCE 500  // may be needed to get the rwlock calls
 #    endif
 #  endif
 #  include <pthread.h>
@@ -258,7 +258,9 @@
 
 Mutex::Mutex() {
   SetIsSafe();
-  if (is_safe_ && pthread_rwlock_init(&mutex_, nullptr) != 0) abort();
+  if (is_safe_ && pthread_rwlock_init(&mutex_, nullptr) != 0) {
+    abort();
+  }
 }
 Mutex::~Mutex() { SAFE_PTHREAD(pthread_rwlock_destroy); }
 void Mutex::Lock() { SAFE_PTHREAD(pthread_rwlock_wrlock); }
diff --git a/src/demangle.cc b/src/demangle.cc
index 2a6126b..0a1ee0e 100644
--- a/src/demangle.cc
+++ b/src/demangle.cc
@@ -199,7 +199,7 @@
 }
 
 // This function is used for handling an optional non-terminal.
-static bool Optional(bool) { return true; }
+static bool Optional(bool /*unused*/) { return true; }
 
 // This function is used for handling <non-terminal>+ syntax.
 using ParseFunc = bool (*)(State*);
@@ -450,10 +450,7 @@
   }
   *state = copy;
 
-  if (ParseName(state) || ParseSpecialName(state)) {
-    return true;
-  }
-  return false;
+  return ParseName(state) || ParseSpecialName(state);
 }
 
 // <name> ::= <nested-name>
@@ -472,10 +469,7 @@
   *state = copy;
 
   // Less greedy than <unscoped-template-name> <template-args>.
-  if (ParseUnscopedName(state)) {
-    return true;
-  }
-  return false;
+  return ParseUnscopedName(state);
 }
 
 // <unscoped-name> ::= <unqualified-name>
@@ -538,9 +532,8 @@
     MaybeCancelLastSeparator(state);
     if (has_something && ParseTemplateArgs(state)) {
       return ParsePrefix(state);
-    } else {
-      break;
     }
+    break;
   }
   return true;
 }
@@ -627,7 +620,7 @@
 static bool ParseFloatNumber(State* state) {
   const char* p = state->mangled_cur;
   for (; *p != '\0'; ++p) {
-    if (!IsDigit(*p) && !(*p >= 'a' && *p <= 'f')) {
+    if (!IsDigit(*p) && (*p < 'a' || *p > 'f')) {
       break;
     }
   }
@@ -643,7 +636,7 @@
 static bool ParseSeqId(State* state) {
   const char* p = state->mangled_cur;
   for (; *p != '\0'; ++p) {
-    if (!IsDigit(*p) && !(*p >= 'A' && *p <= 'Z')) {
+    if (!IsDigit(*p) && (*p < 'A' || *p > 'Z')) {
       break;
     }
   }
@@ -928,11 +921,7 @@
   *state = copy;
 
   // Less greedy than <template-template-param> <template-args>.
-  if (ParseTemplateParam(state)) {
-    return true;
-  }
-
-  return false;
+  return ParseTemplateParam(state);
 }
 
 // <CV-qualifiers> ::= [r] [V] [K]
@@ -940,9 +929,9 @@
 // ParseType().
 static bool ParseCVQualifiers(State* state) {
   int num_cv_qualifiers = 0;
-  num_cv_qualifiers += ParseOneCharToken(state, 'r');
-  num_cv_qualifiers += ParseOneCharToken(state, 'V');
-  num_cv_qualifiers += ParseOneCharToken(state, 'K');
+  num_cv_qualifiers += static_cast<int>(ParseOneCharToken(state, 'r'));
+  num_cv_qualifiers += static_cast<int>(ParseOneCharToken(state, 'V'));
+  num_cv_qualifiers += static_cast<int>(ParseOneCharToken(state, 'K'));
   return num_cv_qualifiers > 0;
 }
 
diff --git a/src/demangle_unittest.cc b/src/demangle_unittest.cc
index 6df41fe..d1a0f79 100644
--- a/src/demangle_unittest.cc
+++ b/src/demangle_unittest.cc
@@ -58,9 +58,8 @@
   static char demangled[4096];
   if (Demangle(mangled, demangled, sizeof(demangled))) {
     return demangled;
-  } else {
-    return mangled;
   }
+  return mangled;
 }
 
 #if defined(GLOG_OS_WINDOWS)
@@ -159,10 +158,10 @@
       cout << DemangleIt(line.c_str()) << endl;
     }
     return 0;
-  } else if (argc > 1) {
+  }
+  if (argc > 1) {
     cout << DemangleIt(argv[1]) << endl;
     return 0;
-  } else {
-    return RUN_ALL_TESTS();
   }
+  return RUN_ALL_TESTS();
 }
diff --git a/src/glog/log_severity.h b/src/glog/log_severity.h
index 99f4b52..8586852 100644
--- a/src/glog/log_severity.h
+++ b/src/glog/log_severity.h
@@ -27,8 +27,12 @@
 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
-#ifndef BASE_LOG_SEVERITY_H__
-#define BASE_LOG_SEVERITY_H__
+#ifndef BASE_LOG_SEVERITY_H_
+#define BASE_LOG_SEVERITY_H_
+
+#if defined(GLOG_USE_GLOG_EXPORT)
+#  include "glog/export.h"
+#endif
 
 // The recommended semantics of the log levels are as follows:
 //
@@ -95,4 +99,4 @@
 #  define IF_DEBUG_MODE(x) x
 #endif
 
-#endif  // BASE_LOG_SEVERITY_H__
+#endif  // BASE_LOG_SEVERITY_H_
diff --git a/src/glog/logging.h b/src/glog/logging.h
index b69fc50..e93e4ac 100644
--- a/src/glog/logging.h
+++ b/src/glog/logging.h
@@ -90,16 +90,16 @@
 
 namespace google {
 
-typedef std::int32_t int32;
-typedef std::uint32_t uint32;
-typedef std::int64_t int64;
-typedef std::uint64_t uint64;
+using int32 = std::int32_t;
+using uint32 = std::uint32_t;
+using int64 = std::int64_t;
+using uint64 = std::uint64_t;
 
-typedef double WallTime;
+using WallTime = double;
 
 struct GLOG_EXPORT LogMessageTime {
   LogMessageTime();
-  LogMessageTime(std::tm t);
+  explicit LogMessageTime(std::tm t);
   LogMessageTime(std::time_t timestamp, WallTime now);
 
   const time_t& timestamp() const { return timestamp_; }
@@ -143,8 +143,8 @@
   const LogMessageTime& time;
 };
 
-typedef void (*CustomPrefixCallback)(std::ostream& s, const LogMessageInfo& l,
-                                     void* data);
+using CustomPrefixCallback = void (*)(std::ostream&, const LogMessageInfo&,
+                                      void*);
 
 }  // namespace google
 
@@ -632,9 +632,10 @@
 GLOG_EXPORT void ShutdownGoogleLogging();
 
 #if defined(__GNUC__)
-typedef void (*logging_fail_func_t)() __attribute__((noreturn));
+typedef void (*logging_fail_func_t)()
+    __attribute__((noreturn));  // NOLINT(modernize-use-using)
 #else
-typedef void (*logging_fail_func_t)();
+using logging_fail_func_t = void (*)();
 #endif
 
 // Install a function which will be called after LOG(FATAL).
@@ -711,10 +712,11 @@
 // A container for a string pointer which can be evaluated to a bool -
 // true iff the pointer is nullptr.
 struct CheckOpString {
+  // NOLINTNEXTLINE(google-explicit-constructor)
   CheckOpString(std::string* str) : str_(str) {}
   // No destructor: if str_ is non-nullptr, we're about to LOG(FATAL),
   // so there's no point in cleaning up str_.
-  operator bool() const {
+  explicit operator bool() const noexcept {
     return GOOGLE_PREDICT_BRANCH_NOT_TAKEN(str_ != nullptr);
   }
   std::string* str_;
@@ -749,8 +751,8 @@
 // Define global operator<< to declare using ::operator<<.
 // This declaration will allow use to use CHECK macros for user
 // defined classes which have operator<< (e.g., stl_logging.h).
-inline std::ostream& operator<<(std::ostream& out,
-                                const google::DummyClassToDefineOperator&) {
+inline std::ostream& operator<<(
+    std::ostream& out, const google::DummyClassToDefineOperator& /*unused*/) {
   return out;
 }
 
@@ -964,8 +966,8 @@
 #define CHECK_STRCASEEQ(s1, s2) CHECK_STROP(strcasecmp, ==, true, s1, s2)
 #define CHECK_STRCASENE(s1, s2) CHECK_STROP(strcasecmp, !=, false, s1, s2)
 
-#define CHECK_INDEX(I, A) CHECK(I < (sizeof(A) / sizeof(A[0])))
-#define CHECK_BOUND(B, A) CHECK(B <= (sizeof(A) / sizeof(A[0])))
+#define CHECK_INDEX(I, A) CHECK((I) < (sizeof(A) / sizeof((A)[0])))
+#define CHECK_BOUND(B, A) CHECK((B) <= (sizeof(A) / sizeof((A)[0])))
 
 #define CHECK_DOUBLE_EQ(val1, val2)                \
   do {                                             \
@@ -1088,23 +1090,23 @@
   GLOG_IFDEF_THREAD_SANITIZER(AnnotateBenignRaceSized(                  \
       __FILE__, __LINE__, &LOG_OCCURRENCES_MOD_N, sizeof(int), ""));    \
   ++LOG_OCCURRENCES;                                                    \
-  if (++LOG_OCCURRENCES_MOD_N > n) LOG_OCCURRENCES_MOD_N -= n;          \
+  if (++LOG_OCCURRENCES_MOD_N > (n)) LOG_OCCURRENCES_MOD_N -= (n);      \
   if (LOG_OCCURRENCES_MOD_N == 1)                                       \
   google::LogMessage(__FILE__, __LINE__, google::GLOG_##severity,       \
-                     LOG_OCCURRENCES, &what_to_do)                      \
+                     LOG_OCCURRENCES, (what_to_do))                     \
       .stream()
 
-#define SOME_KIND_OF_LOG_IF_EVERY_N(severity, condition, n, what_to_do)       \
-  static std::atomic<int> LOG_OCCURRENCES(0), LOG_OCCURRENCES_MOD_N(0);       \
-  GLOG_IFDEF_THREAD_SANITIZER(AnnotateBenignRaceSized(                        \
-      __FILE__, __LINE__, &LOG_OCCURRENCES, sizeof(int), ""));                \
-  GLOG_IFDEF_THREAD_SANITIZER(AnnotateBenignRaceSized(                        \
-      __FILE__, __LINE__, &LOG_OCCURRENCES_MOD_N, sizeof(int), ""));          \
-  ++LOG_OCCURRENCES;                                                          \
-  if ((condition) &&                                                          \
-      ((LOG_OCCURRENCES_MOD_N = (LOG_OCCURRENCES_MOD_N + 1) % n) == (1 % n))) \
-  google::LogMessage(__FILE__, __LINE__, google::GLOG_##severity,             \
-                     LOG_OCCURRENCES, &what_to_do)                            \
+#define SOME_KIND_OF_LOG_IF_EVERY_N(severity, condition, n, what_to_do)      \
+  static std::atomic<int> LOG_OCCURRENCES(0), LOG_OCCURRENCES_MOD_N(0);      \
+  GLOG_IFDEF_THREAD_SANITIZER(AnnotateBenignRaceSized(                       \
+      __FILE__, __LINE__, &LOG_OCCURRENCES, sizeof(int), ""));               \
+  GLOG_IFDEF_THREAD_SANITIZER(AnnotateBenignRaceSized(                       \
+      __FILE__, __LINE__, &LOG_OCCURRENCES_MOD_N, sizeof(int), ""));         \
+  ++LOG_OCCURRENCES;                                                         \
+  if ((condition) && ((LOG_OCCURRENCES_MOD_N =                               \
+                           (LOG_OCCURRENCES_MOD_N + 1) % (n)) == (1 % (n)))) \
+  google::LogMessage(__FILE__, __LINE__, google::GLOG_##severity,            \
+                     LOG_OCCURRENCES, (what_to_do))                          \
       .stream()
 
 #define SOME_KIND_OF_PLOG_EVERY_N(severity, n, what_to_do)              \
@@ -1114,20 +1116,20 @@
   GLOG_IFDEF_THREAD_SANITIZER(AnnotateBenignRaceSized(                  \
       __FILE__, __LINE__, &LOG_OCCURRENCES_MOD_N, sizeof(int), ""));    \
   ++LOG_OCCURRENCES;                                                    \
-  if (++LOG_OCCURRENCES_MOD_N > n) LOG_OCCURRENCES_MOD_N -= n;          \
+  if (++LOG_OCCURRENCES_MOD_N > (n)) LOG_OCCURRENCES_MOD_N -= (n);      \
   if (LOG_OCCURRENCES_MOD_N == 1)                                       \
   google::ErrnoLogMessage(__FILE__, __LINE__, google::GLOG_##severity,  \
-                          LOG_OCCURRENCES, &what_to_do)                 \
+                          LOG_OCCURRENCES, (what_to_do))                \
       .stream()
 
 #define SOME_KIND_OF_LOG_FIRST_N(severity, n, what_to_do)         \
   static std::atomic<int> LOG_OCCURRENCES(0);                     \
   GLOG_IFDEF_THREAD_SANITIZER(AnnotateBenignRaceSized(            \
       __FILE__, __LINE__, &LOG_OCCURRENCES, sizeof(int), ""));    \
-  if (LOG_OCCURRENCES <= n) ++LOG_OCCURRENCES;                    \
-  if (LOG_OCCURRENCES <= n)                                       \
+  if (LOG_OCCURRENCES <= (n)) ++LOG_OCCURRENCES;                  \
+  if (LOG_OCCURRENCES <= (n))                                     \
   google::LogMessage(__FILE__, __LINE__, google::GLOG_##severity, \
-                     LOG_OCCURRENCES, &what_to_do)                \
+                     LOG_OCCURRENCES, (what_to_do))               \
       .stream()
 
 namespace glog_internal_namespace_ {
@@ -1141,23 +1143,23 @@
 }  // namespace glog_internal_namespace_
 
 #define LOG_EVERY_N(severity, n) \
-  SOME_KIND_OF_LOG_EVERY_N(severity, (n), google::LogMessage::SendToLog)
+  SOME_KIND_OF_LOG_EVERY_N(severity, (n), &google::LogMessage::SendToLog)
 
 #define LOG_EVERY_T(severity, T) SOME_KIND_OF_LOG_EVERY_T(severity, (T))
 
 #define SYSLOG_EVERY_N(severity, n)       \
   SOME_KIND_OF_LOG_EVERY_N(severity, (n), \
-                           google::LogMessage::SendToSyslogAndLog)
+                           &google::LogMessage::SendToSyslogAndLog)
 
 #define PLOG_EVERY_N(severity, n) \
-  SOME_KIND_OF_PLOG_EVERY_N(severity, (n), google::LogMessage::SendToLog)
+  SOME_KIND_OF_PLOG_EVERY_N(severity, (n), &google::LogMessage::SendToLog)
 
 #define LOG_FIRST_N(severity, n) \
-  SOME_KIND_OF_LOG_FIRST_N(severity, (n), google::LogMessage::SendToLog)
+  SOME_KIND_OF_LOG_FIRST_N(severity, (n), &google::LogMessage::SendToLog)
 
 #define LOG_IF_EVERY_N(severity, condition, n)            \
   SOME_KIND_OF_LOG_IF_EVERY_N(severity, (condition), (n), \
-                              google::LogMessage::SendToLog)
+                              &google::LogMessage::SendToLog)
 
 // We want the special COUNTER value available for LOG_EVERY_X()'ed messages
 enum PRIVATE_Counter { COUNTER };
@@ -1324,7 +1326,7 @@
   LogStreamBuf(char* buf, int len) { setp(buf, buf + len - 2); }
 
   // This effectively ignores overflow.
-  int_type overflow(int_type ch) { return ch; }
+  int_type overflow(int_type ch) override { return ch; }
 
   // Legacy public ostrstream method.
   size_t pcount() const { return static_cast<size_t>(pptr() - pbase()); }
@@ -1406,9 +1408,8 @@
     LogStream* self_;  // Consistency check hack
   };
 
- public:
   // icc 8 requires this typedef to avoid an internal compiler error.
-  typedef void (LogMessage::*SendMethod)();
+  using SendMethod = void (LogMessage::*)();
 
   LogMessage(const char* file, int line, LogSeverity severity, int64 ctr,
              SendMethod send_method);
@@ -1495,7 +1496,7 @@
             void (LogMessage::*send_method)());
 
   // Used to fill in crash information during LOG(FATAL) failures.
-  void RecordCrashReason(glog_internal_namespace_::CrashReason* reason);
+  static void RecordCrashReason(glog_internal_namespace_::CrashReason* reason);
 
   // Counts of messages sent at each priority:
   static int64 num_messages_[NUM_SEVERITIES];  // under log_mutex
@@ -1576,10 +1577,10 @@
 
 class GLOG_EXPORT LogMessageVoidify {
  public:
-  LogMessageVoidify() {}
+  LogMessageVoidify() = default;
   // This has to be an operator with a precedence lower than << but
   // higher than ?:
-  void operator&(std::ostream&) {}
+  void operator&(std::ostream& /*unused*/) {}
 };
 
 // Flushes all log files that contains messages that are at least of
@@ -1817,7 +1818,7 @@
 // converted to LogStream and the message will be computed and then
 // quietly discarded.
 template <class T>
-inline NullStream& operator<<(NullStream& str, const T&) {
+inline NullStream& operator<<(NullStream& str, const T& /*unused*/) {
   return str;
 }
 
@@ -1828,7 +1829,7 @@
   using NullStream::NullStream;
   [[noreturn]]
   // Prevent the linker from discarding the destructor.
-  GLOG_USED ~NullStreamFatal();
+  GLOG_USED ~NullStreamFatal() override;
 };
 
 // Install a signal handler that will dump signal information and a stack
diff --git a/src/glog/raw_logging.h b/src/glog/raw_logging.h
index b30e540..a3e877a 100644
--- a/src/glog/raw_logging.h
+++ b/src/glog/raw_logging.h
@@ -97,28 +97,28 @@
 
 #if !defined(STRIP_LOG) || STRIP_LOG == 0
 #  define RAW_LOG_INFO(...) \
-    google::RawLog__(google::GLOG_INFO, __FILE__, __LINE__, __VA_ARGS__)
+    google::RawLog_(google::GLOG_INFO, __FILE__, __LINE__, __VA_ARGS__)
 #else
 #  define RAW_LOG_INFO(...) google::RawLogStub__(0, __VA_ARGS__)
 #endif  // STRIP_LOG == 0
 
 #if !defined(STRIP_LOG) || STRIP_LOG <= 1
 #  define RAW_LOG_WARNING(...) \
-    google::RawLog__(google::GLOG_WARNING, __FILE__, __LINE__, __VA_ARGS__)
+    google::RawLog_(google::GLOG_WARNING, __FILE__, __LINE__, __VA_ARGS__)
 #else
 #  define RAW_LOG_WARNING(...) google::RawLogStub__(0, __VA_ARGS__)
 #endif  // STRIP_LOG <= 1
 
 #if !defined(STRIP_LOG) || STRIP_LOG <= 2
 #  define RAW_LOG_ERROR(...) \
-    google::RawLog__(google::GLOG_ERROR, __FILE__, __LINE__, __VA_ARGS__)
+    google::RawLog_(google::GLOG_ERROR, __FILE__, __LINE__, __VA_ARGS__)
 #else
 #  define RAW_LOG_ERROR(...) google::RawLogStub__(0, __VA_ARGS__)
 #endif  // STRIP_LOG <= 2
 
 #if !defined(STRIP_LOG) || STRIP_LOG <= 3
 #  define RAW_LOG_FATAL(...) \
-    google::RawLog__(google::GLOG_FATAL, __FILE__, __LINE__, __VA_ARGS__)
+    google::RawLog_(google::GLOG_FATAL, __FILE__, __LINE__, __VA_ARGS__)
 #else
 #  define RAW_LOG_FATAL(...)                \
     do {                                    \
@@ -160,14 +160,14 @@
 
 // Stub log function used to work around for unused variable warnings when
 // building with STRIP_LOG > 0.
-static inline void RawLogStub__(int /* ignored */, ...) {}
+static inline void RawLogStub_(int /* ignored */, ...) {}
 
 // Helper function to implement RAW_LOG and RAW_VLOG
 // Logs format... at "severity" level, reporting it
 // as called from file:line.
 // This does not allocate memory or acquire locks.
-GLOG_EXPORT void RawLog__(LogSeverity severity, const char* file, int line,
-                          const char* format, ...)
+GLOG_EXPORT void RawLog_(LogSeverity severity, const char* file, int line,
+                         const char* format, ...)
 #if defined(__has_attribute)
 #  if __has_attribute(used)
     __attribute__((__format__(__printf__, 4, 5)))
diff --git a/src/glog/stl_logging.h b/src/glog/stl_logging.h
index 3689df2..ee8399f 100644
--- a/src/glog/stl_logging.h
+++ b/src/glog/stl_logging.h
@@ -127,7 +127,9 @@
 inline void PrintSequence(std::ostream& out, Iter begin, Iter end) {
   // Output at most 100 elements -- appropriate if used for logging.
   for (int i = 0; begin != end && i < 100; ++i, ++begin) {
-    if (i > 0) out << ' ';
+    if (i > 0) {
+      out << ' ';
+    }
     out << *begin;
   }
   if (begin != end) {
diff --git a/src/glog/vlog_is_on.h b/src/glog/vlog_is_on.h
index 914a57d..e069b3e 100644
--- a/src/glog/vlog_is_on.h
+++ b/src/glog/vlog_is_on.h
@@ -79,8 +79,8 @@
           __FILE__, __LINE__, &vlocal__, sizeof(google::SiteFlag), "")); \
       google::int32 verbose_level__ = (verboselevel);                    \
       (vlocal__.level == nullptr                                         \
-           ? google::InitVLOG3__(&vlocal__, &FLAGS_v, __FILE__,          \
-                                 verbose_level__)                        \
+           ? google::InitVLOG3_(&vlocal__, &FLAGS_v, __FILE__,           \
+                                verbose_level__)                         \
            : *vlocal__.level >= verbose_level__);                        \
     })
 #else
@@ -116,9 +116,9 @@
 //   verbose_level is the argument to VLOG_IS_ON
 // We will return the return value for VLOG_IS_ON
 // and if possible set *site_flag appropriately.
-extern GLOG_EXPORT bool InitVLOG3__(google::SiteFlag* site_flag,
-                                    google::int32* site_default,
-                                    const char* fname,
-                                    google::int32 verbose_level);
+extern GLOG_EXPORT bool InitVLOG3_(google::SiteFlag* site_flag,
+                                   google::int32* site_default,
+                                   const char* fname,
+                                   google::int32 verbose_level);
 
 #endif  // BASE_VLOG_IS_ON_H_
diff --git a/src/googletest.h b/src/googletest.h
index 8a6e3eb..3d8b3c6 100644
--- a/src/googletest.h
+++ b/src/googletest.h
@@ -33,7 +33,7 @@
 #ifdef GOOGLETEST_H__
 #  error You must not include this file twice.
 #endif
-#define GOOGLETEST_H__
+#define GOOGLETEST_H_
 
 #include <fcntl.h>
 #include <sys/stat.h>
@@ -256,7 +256,7 @@
 
 // Benchmark tools.
 
-#define BENCHMARK(n) static BenchmarkRegisterer __benchmark_##n(#n, &n);
+#define BENCHMARK(n) static BenchmarkRegisterer __benchmark_##n(#n, &(n));
 
 map<string, void (*)(int)> g_benchlist;  // the benchmarks to run
 
@@ -330,7 +330,7 @@
   }
 
   // Remove output redirection
-  void StopCapture() {
+  void StopCapture() const {
     // Restore original stream
     if (uncaptured_fd_ != -1) {
       fflush(nullptr);
@@ -420,9 +420,13 @@
   if (s.size() != kLoggingPrefixLength) {
     return false;
   }
-  if (!strchr("IWEF", s[0])) return false;
+  if (strchr("IWEF", s[0]) == nullptr) {
+    return false;
+  }
   for (size_t i = 1; i <= 8; ++i) {
-    if (!isdigit(s[i]) && s[i] != "YEARDATE"[i - 1]) return false;
+    if ((isdigit(s[i]) == 0) && s[i] != "YEARDATE"[i - 1]) {
+      return false;
+    }
   }
   return true;
 }
@@ -433,7 +437,10 @@
 //     I20200102 030405 logging_unittest.cc:345] RAW: vlog -1
 //  => IYEARDATE TIME__ logging_unittest.cc:LINE] RAW: vlog -1
 static inline string MungeLine(const string& line) {
-  string before, logcode_date, time, thread_lineinfo;
+  string before;
+  string logcode_date;
+  string time;
+  string thread_lineinfo;
   std::size_t begin_of_logging_prefix = 0;
   for (; begin_of_logging_prefix + kLoggingPrefixLength < line.size();
        ++begin_of_logging_prefix) {
@@ -444,7 +451,8 @@
   }
   if (begin_of_logging_prefix + kLoggingPrefixLength >= line.size()) {
     return line;
-  } else if (begin_of_logging_prefix > 0) {
+  }
+  if (begin_of_logging_prefix > 0) {
     before = line.substr(0, begin_of_logging_prefix - 1);
   }
   std::istringstream iss(line.substr(begin_of_logging_prefix));
@@ -482,7 +490,7 @@
   CHECK(fp != nullptr) << filename << ": couldn't open";
   char buf[4096];
   string result;
-  while (fgets(buf, 4095, fp)) {
+  while (fgets(buf, 4095, fp) != nullptr) {
     string line = MungeLine(buf);
     const size_t str_size = 256;
     char null_str[str_size];
@@ -583,7 +591,7 @@
  public:
   virtual ~Thread() = default;
 
-  void SetJoinable(bool) {}
+  void SetJoinable(bool /*unused*/) {}
 #if defined(GLOG_OS_WINDOWS) && !defined(GLOG_OS_CYGWIN)
   void Start() {
     handle_ = CreateThread(nullptr, 0, &Thread::InvokeThreadW, this, 0, &th_);
@@ -592,7 +600,7 @@
   void Join() { WaitForSingleObject(handle_, INFINITE); }
 #elif defined(HAVE_PTHREAD)
   void Start() { pthread_create(&th_, nullptr, &Thread::InvokeThread, this); }
-  void Join() { pthread_join(th_, nullptr); }
+  void Join() const { pthread_join(th_, nullptr); }
 #else
   void Start() {}
   void Join() {}
@@ -638,8 +646,8 @@
 
 }  // namespace google
 
-void* operator new(size_t size, const std::nothrow_t&) noexcept {
-  if (google::g_new_hook) {
+void* operator new(size_t size, const std::nothrow_t& /*unused*/) noexcept {
+  if (google::g_new_hook != nullptr) {
     google::g_new_hook();
   }
   return malloc(size);
@@ -659,8 +667,12 @@
 
 void operator delete(void* p) noexcept { free(p); }
 
-void operator delete(void* p, size_t) noexcept { ::operator delete(p); }
+void operator delete(void* p, size_t /*unused*/) noexcept {
+  ::operator delete(p);
+}
 
 void operator delete[](void* p) noexcept { ::operator delete(p); }
 
-void operator delete[](void* p, size_t) noexcept { ::operator delete(p); }
+void operator delete[](void* p, size_t /*unused*/) noexcept {
+  ::operator delete(p);
+}
diff --git a/src/logging.cc b/src/logging.cc
index 4607402..82729fb 100644
--- a/src/logging.cc
+++ b/src/logging.cc
@@ -27,7 +27,9 @@
 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
-#define _GNU_SOURCE 1  // needed for O_NOFOLLOW and pread()/pwrite()
+enum {
+  GNU_SOURCE = 1  // needed for O_NOFOLLOW and pread()/pwrite()
+};
 
 #include "glog/logging.h"
 
@@ -127,10 +129,10 @@
 
 static bool BoolFromEnv(const char* varname, bool defval) {
   const char* const valstr = getenv(varname);
-  if (!valstr) {
+  if (valstr == nullptr) {
     return defval;
   }
-  return memchr("tTyY1\0", valstr[0], 6) != nullptr;
+  return strchr("tTyY1\0", valstr[0]) != nullptr;
 }
 
 GLOG_DEFINE_bool(timestamp_in_logfile_name,
@@ -289,11 +291,14 @@
   const char* const term = getenv("TERM");
   if (term != nullptr && term[0] != '\0') {
     term_supports_color =
-        !strcmp(term, "xterm") || !strcmp(term, "xterm-color") ||
-        !strcmp(term, "xterm-256color") || !strcmp(term, "screen-256color") ||
-        !strcmp(term, "konsole") || !strcmp(term, "konsole-16color") ||
-        !strcmp(term, "konsole-256color") || !strcmp(term, "screen") ||
-        !strcmp(term, "linux") || !strcmp(term, "cygwin");
+        (strcmp(term, "xterm") == 0) || (strcmp(term, "xterm-color") == 0) ||
+        (strcmp(term, "xterm-256color") == 0) ||
+        (strcmp(term, "screen-256color") == 0) ||
+        (strcmp(term, "konsole") == 0) ||
+        (strcmp(term, "konsole-16color") == 0) ||
+        (strcmp(term, "konsole-256color") == 0) ||
+        (strcmp(term, "screen") == 0) || (strcmp(term, "linux") == 0) ||
+        (strcmp(term, "cygwin") == 0);
   }
 #endif
   return term_supports_color;
@@ -507,15 +512,16 @@
   bool enabled() const { return enabled_; }
 
  private:
-  vector<string> GetOverdueLogNames(string log_directory, unsigned int days,
-                                    const string& base_filename,
-                                    const string& filename_extension) const;
+  static vector<string> GetOverdueLogNames(string log_directory,
+                                           unsigned int days,
+                                           const string& base_filename,
+                                           const string& filename_extension);
 
-  bool IsLogFromCurrentProject(const string& filepath,
-                               const string& base_filename,
-                               const string& filename_extension) const;
+  static bool IsLogFromCurrentProject(const string& filepath,
+                                      const string& base_filename,
+                                      const string& filename_extension);
 
-  bool IsLogLastModifiedOver(const string& filepath, unsigned int days) const;
+  static bool IsLogLastModifiedOver(const string& filepath, unsigned int days);
 
   bool enabled_{false};
   unsigned int overdue_days_{7};
@@ -530,8 +536,9 @@
  public:
   friend class LogMessage;
   friend void ReprintFatalMessage();
-  friend base::Logger* base::GetLogger(LogSeverity);
-  friend void base::SetLogger(LogSeverity, base::Logger*);
+  friend base::Logger* base::GetLogger(LogSeverity /*severity*/);
+  friend void base::SetLogger(LogSeverity /*severity*/,
+                              base::Logger* /*logger*/);
 
   // These methods are just forwarded to by their global versions.
   static void SetLogDestination(LogSeverity severity,
@@ -651,7 +658,7 @@
     return;
   }
 
-  if (logger_ && logger_ != &fileobject_) {
+  if ((logger_ != nullptr) && logger_ != &fileobject_) {
     // Delete user-specified logger set via SetLogger().
     delete logger_;
   }
@@ -704,7 +711,9 @@
   // Prevent any subtle race conditions by wrapping a mutex lock around
   // all this stuff.
   MutexLock l(&sink_mutex_);
-  if (!sinks_) sinks_ = new vector<LogSink*>;
+  if (sinks_ == nullptr) {
+    sinks_ = new vector<LogSink*>;
+  }
   sinks_->push_back(destination);
 }
 
@@ -713,7 +722,7 @@
   // all this stuff.
   MutexLock l(&sink_mutex_);
   // This doesn't keep the sinks in order, but who cares?
-  if (sinks_) {
+  if (sinks_ != nullptr) {
     sinks_->erase(std::remove(sinks_->begin(), sinks_->end(), destination),
                   sinks_->end());
   }
@@ -899,7 +908,7 @@
                                        const char* message,
                                        size_t message_len) {
   ReaderMutexLock l(&sink_mutex_);
-  if (sinks_) {
+  if (sinks_ != nullptr) {
     for (size_t i = sinks_->size(); i-- > 0;) {
       (*sinks_)[i]->send(severity, full_filename, base_filename, line,
                          logmsgtime, message, message_len);
@@ -909,7 +918,7 @@
 
 inline void LogDestination::WaitForSinks(LogMessage::LogMessageData* data) {
   ReaderMutexLock l(&sink_mutex_);
-  if (sinks_) {
+  if (sinks_ != nullptr) {
     for (size_t i = sinks_->size(); i-- > 0;) {
       (*sinks_)[i]->WaitTillSent();
     }
@@ -926,7 +935,7 @@
 
 inline LogDestination* LogDestination::log_destination(LogSeverity severity) {
   assert(severity >= 0 && severity < NUM_SEVERITIES);
-  if (!log_destinations_[severity]) {
+  if (log_destinations_[severity] == nullptr) {
     log_destinations_[severity] = new LogDestination(severity, nullptr);
   }
   return log_destinations_[severity];
@@ -976,7 +985,6 @@
     : base_filename_selected_(base_filename != nullptr),
       base_filename_((base_filename != nullptr) ? base_filename : ""),
       symlink_basename_(glog_internal_namespace_::ProgramInvocationShortName()),
-      filename_extension_(),
 
       severity_(severity),
 
@@ -1057,7 +1065,9 @@
     flags = flags | O_EXCL;
   }
   int fd = open(filename, flags, static_cast<mode_t>(FLAGS_logfile_mode));
-  if (fd == -1) return false;
+  if (fd == -1) {
+    return false;
+  }
 #ifdef HAVE_FCNTL
   // Mark the file close-on-exec. We don't really care if this fails
   fcntl(fd, F_SETFD, FD_CLOEXEC);
@@ -1116,9 +1126,10 @@
     const string linkname =
         symlink_basename_ + '.' + LogSeverityNames[severity_];
     string linkpath;
-    if (slash)
+    if (slash != nullptr) {
       linkpath = string(
           filename, static_cast<size_t>(slash - filename + 1));  // get dirname
+    }
     linkpath += linkname;
     unlink(linkpath.c_str());  // delete old one if it exists
 
@@ -1128,7 +1139,7 @@
     // We must have unistd.h.
     // Make the symlink be relative (in the same dir) so that if the
     // entire log directory gets relocated the link is still valid.
-    const char* linkdest = slash ? (slash + 1) : filename;
+    const char* linkdest = slash != nullptr ? (slash + 1) : filename;
     if (symlink(linkdest, linkpath.c_str()) != 0) {
       // silently ignore failures
     }
@@ -1158,7 +1169,9 @@
   }
 
   if (file_length_ >> 20U >= MaxLogSize() || PidHasChanged()) {
-    if (file_ != nullptr) fclose(file_);
+    if (file_ != nullptr) {
+      fclose(file_);
+    }
     file_ = nullptr;
     file_length_ = bytes_since_flush_ = dropped_mem_length_ = 0;
     rollover_attempt_ = kRolloverAttemptFrequency - 1;
@@ -1169,7 +1182,9 @@
     // Try to rollover the log file every 32 log messages.  The only time
     // this could matter would be when we have trouble creating the log
     // file.  If that happens, we'll lose lots of log messages, of course!
-    if (++rollover_attempt_ != kRolloverAttemptFrequency) return;
+    if (++rollover_attempt_ != kRolloverAttemptFrequency) {
+      return;
+    }
     rollover_attempt_ = 0;
 
     struct ::tm tm_time;
@@ -1217,7 +1232,9 @@
       // called after holding on to log_mutex. We don't want to
       // attempt to hold on to the same mutex, and get into a
       // deadlock. Simply use a name like invalid-user.
-      if (uidname.empty()) uidname = "invalid-user";
+      if (uidname.empty()) {
+        uidname = "invalid-user";
+      }
 
       stripped_filename = stripped_filename + '.' + hostname + '.' + uidname +
                           ".log." + LogSeverityNames[severity_] + '.';
@@ -1235,7 +1252,7 @@
         }
       }
       // If we never succeeded, we have to give up
-      if (success == false) {
+      if (!success) {
         perror("Could not create logging file");
         fprintf(stderr, "COULD NOT CREATE A LOGGINGFILE %s!",
                 time_pid_string.c_str());
@@ -1291,10 +1308,10 @@
         errno == ENOSPC) {  // disk full, stop writing to disk
       stop_writing = true;  // until the disk is
       return;
-    } else {
-      file_length_ += message_len;
-      bytes_since_flush_ += message_len;
     }
+    file_length_ += message_len;
+    bytes_since_flush_ += message_len;
+
   } else {
     if (CycleClock_Now() >= next_flush_time_) {
       stop_writing = false;  // check to see if disk has free space.
@@ -1389,7 +1406,7 @@
 
 vector<string> LogCleaner::GetOverdueLogNames(
     string log_directory, unsigned int days, const string& base_filename,
-    const string& filename_extension) const {
+    const string& filename_extension) {
   // The names of overdue logs.
   vector<string> overdue_log_names;
 
@@ -1397,8 +1414,8 @@
   DIR* dir;
   struct dirent* ent;
 
-  if ((dir = opendir(log_directory.c_str()))) {
-    while ((ent = readdir(dir))) {
+  if ((dir = opendir(log_directory.c_str())) != nullptr) {
+    while ((ent = readdir(dir)) != nullptr) {
       if (strcmp(ent->d_name, ".") == 0 || strcmp(ent->d_name, "..") == 0) {
         continue;
       }
@@ -1425,9 +1442,9 @@
   return overdue_log_names;
 }
 
-bool LogCleaner::IsLogFromCurrentProject(
-    const string& filepath, const string& base_filename,
-    const string& filename_extension) const {
+bool LogCleaner::IsLogFromCurrentProject(const string& filepath,
+                                         const string& base_filename,
+                                         const string& filename_extension) {
   // We should remove duplicated delimiters from `base_filename`, e.g.,
   // before: "/tmp//<base_filename>.<create_time>.<pid>"
   // after:  "/tmp/<base_filename>.<create_time>.<pid>"
@@ -1513,7 +1530,7 @@
 }
 
 bool LogCleaner::IsLogLastModifiedOver(const string& filepath,
-                                       unsigned int days) const {
+                                       unsigned int days) {
   // Try to get the last modified time of this file.
   struct stat file_stat;
 
@@ -1783,7 +1800,7 @@
 static char fatal_message[256];
 
 void ReprintFatalMessage() {
-  if (fatal_message[0]) {
+  if (fatal_message[0] != 0) {
     const size_t n = strlen(fatal_message);
     if (!FLAGS_logtostderr) {
       // Also write to stderr (don't color to avoid terminal checks)
@@ -1868,7 +1885,7 @@
 
     if (!FLAGS_logtostderr && !FLAGS_logtostdout) {
       for (auto& log_destination : LogDestination::log_destinations_) {
-        if (log_destination) {
+        if (log_destination != nullptr) {
           log_destination->logger_->Write(true, 0, "", 0);
         }
       }
@@ -2018,7 +2035,7 @@
 
 // Output the COUNTER value. This is only valid if ostream is a
 // LogStream.
-ostream& operator<<(ostream& os, const PRIVATE_Counter&) {
+ostream& operator<<(ostream& os, const PRIVATE_Counter& /*unused*/) {
 #ifdef DISABLE_RTTI
   LogMessage::LogStream* log = static_cast<LogMessage::LogStream*>(&os);
 #else
@@ -2218,7 +2235,7 @@
 static bool SendEmailInternal(const char* dest, const char* subject,
                               const char* body, bool use_logging) {
 #ifndef GLOG_OS_EMSCRIPTEN
-  if (dest && *dest) {
+  if ((dest != nullptr) && (*dest != 0)) {
     // Split the comma-separated list of email addresses, validate each one and
     // build a sanitized new comma-separated string without whitespace.
     std::istringstream ss(dest);
@@ -2286,7 +2303,7 @@
     FILE* pipe = popen(cmd.c_str(), "w");
     if (pipe != nullptr) {
       // Add the body if we have one
-      if (body) {
+      if (body != nullptr) {
         fwrite(body, sizeof(char), strlen(body), pipe);
       }
       bool ok = pclose(pipe) != -1;
@@ -2300,12 +2317,11 @@
         }
       }
       return ok;
+    }
+    if (use_logging) {
+      LOG(ERROR) << "Unable to send mail to " << dest;
     } else {
-      if (use_logging) {
-        LOG(ERROR) << "Unable to send mail to " << dest;
-      } else {
-        fprintf(stderr, "Unable to send mail to %s\n", dest);
-      }
+      fprintf(stderr, "Unable to send mail to %s\n", dest);
     }
   }
 #else
@@ -2350,8 +2366,10 @@
       "/tmp",
   };
 
-  for (auto d : candidates) {
-    if (!d) continue;  // Empty env var
+  for (const auto* d : candidates) {
+    if (d == nullptr) {
+      continue;  // Empty env var
+    }
 
     // Make sure we don't surprise anyone who's expecting a '/'
     string dstr = d;
@@ -2361,7 +2379,7 @@
     list->push_back(dstr);
 
     struct stat statbuf;
-    if (!stat(d, &statbuf) && S_ISDIR(statbuf.st_mode)) {
+    if ((stat(d, &statbuf) == 0) && S_ISDIR(statbuf.st_mode)) {
       // We found a dir that exists - we're done.
       return;
     }
@@ -2415,7 +2433,7 @@
   while (i_dir != list->end()) {
     // zero arg to access means test for existence; no constant
     // defined on windows
-    if (access(i_dir->c_str(), 0)) {
+    if (access(i_dir->c_str(), 0) != 0) {
       i_dir = list->erase(i_dir);
     } else {
       ++i_dir;
@@ -2428,13 +2446,17 @@
   struct stat statbuf;
   const int kCopyBlockSize = 8 << 10;
   char copybuf[kCopyBlockSize];
-  off_t read_offset, write_offset;
+  off_t read_offset;
+  off_t write_offset;
   // Don't follow symlinks unless they're our own fd symlinks in /proc
   int flags = O_RDWR;
   // TODO(hamaji): Support other environments.
 #  ifdef GLOG_OS_LINUX
   const char* procfd_prefix = "/proc/self/fd/";
-  if (strncmp(procfd_prefix, path, strlen(procfd_prefix))) flags |= O_NOFOLLOW;
+  if (static_cast<int>(strncmp(procfd_prefix, path, strlen(procfd_prefix)) !=
+                       0) != 0) {
+    flags |= O_NOFOLLOW;
+  }
 #  endif
 
   int fd = open(path, flags);
@@ -2467,9 +2489,15 @@
 
   // See if the path refers to a regular file bigger than the
   // specified limit
-  if (!S_ISREG(statbuf.st_mode)) goto out_close_fd;
-  if (statbuf.st_size <= static_cast<off_t>(limit)) goto out_close_fd;
-  if (statbuf.st_size <= static_cast<off_t>(keep)) goto out_close_fd;
+  if (!S_ISREG(statbuf.st_mode)) {
+    goto out_close_fd;
+  }
+  if (statbuf.st_size <= static_cast<off_t>(limit)) {
+    goto out_close_fd;
+  }
+  if (statbuf.st_size <= static_cast<off_t>(keep)) {
+    goto out_close_fd;
+  }
 
   // This log file is too large - we need to truncate it
   LOG(INFO) << "Truncating " << path << " to " << keep << " bytes";
@@ -2477,19 +2505,23 @@
   // Copy the last "keep" bytes of the file to the beginning of the file
   read_offset = statbuf.st_size - static_cast<off_t>(keep);
   write_offset = 0;
-  ssize_t bytesin, bytesout;
+  ssize_t bytesin;
+  ssize_t bytesout;
   while ((bytesin = pread(fd, copybuf, sizeof(copybuf), read_offset)) > 0) {
     bytesout = pwrite(fd, copybuf, static_cast<size_t>(bytesin), write_offset);
     if (bytesout == -1) {
       PLOG(ERROR) << "Unable to write to " << path;
       break;
-    } else if (bytesout != bytesin) {
+    }
+    if (bytesout != bytesin) {
       LOG(ERROR) << "Expected to write " << bytesin << ", wrote " << bytesout;
     }
     read_offset += bytesin;
     write_offset += bytesout;
   }
-  if (bytesin == -1) PLOG(ERROR) << "Unable to read from " << path;
+  if (bytesin == -1) {
+    PLOG(ERROR) << "Unable to read from " << path;
+  }
 
     // Truncate the remainder of the file. If someone else writes to the
     // end of the file after our last read() above, we lose their latest
@@ -2525,7 +2557,7 @@
   string* Check##func##expected##Impl(const char* s1, const char* s2,         \
                                       const char* names) {                    \
     bool equal = s1 == s2 || (s1 && s2 && !func(s1, s2));                     \
-    if (equal == expected)                                                    \
+    if (equal == (expected))                                                  \
       return nullptr;                                                         \
     else {                                                                    \
       ostringstream ss;                                                       \
@@ -2571,25 +2603,22 @@
 
   // If the function succeeded, we can use its exit code to determine the
   // semantics implemented by glibc
-  if (!rc) {
+  if (rc == nullptr) {
     return 0;
-  } else {
-    // GNU semantics detected
-    if (rc == buf) {
-      return 0;
-    } else {
-      buf[0] = '\000';
+  }  // GNU semantics detected
+  if (rc == buf) {
+    return 0;
+  }
+  buf[0] = '\000';
 #if defined(GLOG_OS_MACOSX) || defined(GLOG_OS_FREEBSD) || \
     defined(GLOG_OS_OPENBSD)
-      if (reinterpret_cast<intptr_t>(rc) < sys_nerr) {
-        // This means an error on MacOSX or FreeBSD.
-        return -1;
-      }
-#endif
-      strncat(buf, rc, len - 1);
-      return 0;
-    }
+  if (reinterpret_cast<intptr_t>(rc) < sys_nerr) {
+    // This means an error on MacOSX or FreeBSD.
+    return -1;
   }
+#endif
+  strncat(buf, rc, len - 1);
+  return 0;
 }
 
 string StrError(int err) {
@@ -2733,8 +2762,8 @@
   const long hour_secs = 3600;
   // If the Daylight Saving Time(isDst) is active subtract an hour from the
   // current timestamp.
-  gmtoffset_ =
-      static_cast<long int>(timestamp_ - gmt_sec + (isDst ? hour_secs : 0));
+  gmtoffset_ = static_cast<long int>(timestamp_ - gmt_sec +
+                                     (isDst != 0 ? hour_secs : 0));
 }
 
 }  // namespace google
diff --git a/src/logging_unittest.cc b/src/logging_unittest.cc
index 6c254f1..f9d70fb 100644
--- a/src/logging_unittest.cc
+++ b/src/logging_unittest.cc
@@ -137,14 +137,30 @@
                          const char* msg);
 static void BM_Check3(int n) {
   while (n-- > 0) {
-    if (n < x) CheckFailure(n, x, __FILE__, __LINE__, "n < x");
-    if (n < x) CheckFailure(n, x, __FILE__, __LINE__, "n < x");
-    if (n < x) CheckFailure(n, x, __FILE__, __LINE__, "n < x");
-    if (n < x) CheckFailure(n, x, __FILE__, __LINE__, "n < x");
-    if (n < x) CheckFailure(n, x, __FILE__, __LINE__, "n < x");
-    if (n < x) CheckFailure(n, x, __FILE__, __LINE__, "n < x");
-    if (n < x) CheckFailure(n, x, __FILE__, __LINE__, "n < x");
-    if (n < x) CheckFailure(n, x, __FILE__, __LINE__, "n < x");
+    if (n < x) {
+      CheckFailure(n, x, __FILE__, __LINE__, "n < x");
+    }
+    if (n < x) {
+      CheckFailure(n, x, __FILE__, __LINE__, "n < x");
+    }
+    if (n < x) {
+      CheckFailure(n, x, __FILE__, __LINE__, "n < x");
+    }
+    if (n < x) {
+      CheckFailure(n, x, __FILE__, __LINE__, "n < x");
+    }
+    if (n < x) {
+      CheckFailure(n, x, __FILE__, __LINE__, "n < x");
+    }
+    if (n < x) {
+      CheckFailure(n, x, __FILE__, __LINE__, "n < x");
+    }
+    if (n < x) {
+      CheckFailure(n, x, __FILE__, __LINE__, "n < x");
+    }
+    if (n < x) {
+      CheckFailure(n, x, __FILE__, __LINE__, "n < x");
+    }
   }
 }
 BENCHMARK(BM_Check3)
@@ -166,8 +182,8 @@
 }
 BENCHMARK(BM_Check2)
 
-static void CheckFailure(int, int, const char* /* file */, int /* line */,
-                         const char* /* msg */) {}
+static void CheckFailure(int /*unused*/, int /*unused*/, const char* /* file */,
+                         int /* line */, const char* /* msg */) {}
 
 static void BM_logspeed(int n) {
   while (n-- > 0) {
@@ -969,8 +985,10 @@
   int fd;
   CHECK_ERR(fd = open(path, O_RDWR | O_CREAT | O_TRUNC, 0600));
 
-  const char *discardstr = "DISCARDME!", *keepstr = "KEEPME!";
-  const size_t discard_size = strlen(discardstr), keep_size = strlen(keepstr);
+  const char* discardstr = "DISCARDME!";
+  const char* keepstr = "KEEPME!";
+  const size_t discard_size = strlen(discardstr);
+  const size_t keep_size = strlen(keepstr);
 
   // Fill the file with the requested data; first discard data, then kept data
   size_t written = 0;
@@ -1296,7 +1314,7 @@
     // Push it to Writer thread if we are the original logging thread.
     // Note: Something like ThreadLocalLogSink is a better choice
     //       to do thread-specific LogSink logic for real.
-    if (pthread_equal(tid_, pthread_self())) {
+    if (pthread_equal(tid_, pthread_self()) != 0) {
       writer_.Buffer(ToString(severity, base_filename, line, logmsgtime,
                               message, message_len));
     }
@@ -1304,7 +1322,9 @@
 
   void WaitTillSent() override {
     // Wait for Writer thread if we are the original logging thread.
-    if (pthread_equal(tid_, pthread_self())) writer_.Wait();
+    if (pthread_equal(tid_, pthread_self()) != 0) {
+      writer_.Wait();
+    }
   }
 
  private:
@@ -1495,10 +1515,10 @@
 #endif  // HAVE_LIB_GMOCK
 
 struct UserDefinedClass {
-  bool operator==(const UserDefinedClass&) const { return true; }
+  bool operator==(const UserDefinedClass& /*unused*/) const { return true; }
 };
 
-inline ostream& operator<<(ostream& out, const UserDefinedClass&) {
+inline ostream& operator<<(ostream& out, const UserDefinedClass& /*unused*/) {
   out << "OK";
   return out;
 }
diff --git a/src/raw_logging.cc b/src/raw_logging.cc
index b27e201..1d85368 100644
--- a/src/raw_logging.cc
+++ b/src/raw_logging.cc
@@ -58,7 +58,6 @@
 #  include <sys/syscall.h>  // for syscall()
 #endif
 #ifdef HAVE_UNISTD_H
-#  include <unistd.h>
 #endif
 
 #if (defined(HAVE_SYSCALL_H) || defined(HAVE_SYS_SYSCALL_H)) &&    \
@@ -96,7 +95,9 @@
   va_start(ap, format);
   int n = std::vsnprintf(*buf, *size, format, ap);
   va_end(ap);
-  if (n < 0 || static_cast<size_t>(n) > *size) return false;
+  if (n < 0 || static_cast<size_t>(n) > *size) {
+    return false;
+  }
   *size -= static_cast<size_t>(n);
   *buf += n;
   return true;
@@ -113,7 +114,9 @@
 #if defined(__GNUC__)
 #  pragma GCC diagnostic pop
 #endif
-  if (n < 0 || static_cast<size_t>(n) > *size) return false;
+  if (n < 0 || static_cast<size_t>(n) > *size) {
+    return false;
+  }
   *size -= static_cast<size_t>(n);
   *buf += n;
   return true;
@@ -125,11 +128,11 @@
 static char crash_buf[kLogBufSize + 1] = {0};  // Will end in '\0'
 
 GLOG_ATTRIBUTE_FORMAT(printf, 4, 5)
-void RawLog__(LogSeverity severity, const char* file, int line,
-              const char* format, ...) {
-  if (!(FLAGS_logtostdout || FLAGS_logtostderr ||
-        severity >= FLAGS_stderrthreshold || FLAGS_alsologtostderr ||
-        !IsGoogleLoggingInitialized())) {
+void RawLog_(LogSeverity severity, const char* file, int line,
+             const char* format, ...) {
+  if (!FLAGS_logtostdout && !FLAGS_logtostderr &&
+      severity < FLAGS_stderrthreshold && !FLAGS_alsologtostderr &&
+      IsGoogleLoggingInitialized()) {
     return;  // this stderr log message is suppressed
   }
   // can't call localtime_r here: it can allocate
diff --git a/src/signalhandler.cc b/src/signalhandler.cc
index 2c3ec6d..6c62070 100644
--- a/src/signalhandler.cc
+++ b/src/signalhandler.cc
@@ -71,7 +71,7 @@
     {SIGTERM, "SIGTERM"},
 };
 
-static bool kFailureSignalHandlerInstalled = false;
+bool kFailureSignalHandlerInstalled = false;
 
 #if !defined(GLOG_OS_WINDOWS)
 // Returns the program counter from signal context, nullptr if unknown.
@@ -79,7 +79,7 @@
 #  if (defined(HAVE_UCONTEXT_H) || defined(HAVE_SYS_UCONTEXT_H)) && \
       defined(PC_FROM_UCONTEXT)
   if (ucontext_in_void != nullptr) {
-    ucontext_t* context = reinterpret_cast<ucontext_t*>(ucontext_in_void);
+    auto* context = reinterpret_cast<ucontext_t*>(ucontext_in_void);
     return (void*)context->PC_FROM_UCONTEXT;
   }
 #  else
@@ -192,7 +192,7 @@
   MinimalFormatter formatter(buf, sizeof(buf));
 
   formatter.AppendString("*** ");
-  if (signal_name) {
+  if (signal_name != nullptr) {
     formatter.AppendString(signal_name);
   } else {
     // Use the signal number if the name is unknown.  The signal name
@@ -270,7 +270,7 @@
 // dumping stuff while another thread is doing it.  Our policy is to let
 // the first thread dump stuff and let other threads wait.
 // See also comments in FailureSignalHandler().
-static pthread_t* g_entered_thread_id_pointer = nullptr;
+pthread_t* g_entered_thread_id_pointer = nullptr;
 
 // Dumps signal and stack frame information, and invokes the default
 // signal handler once our job is done.
@@ -299,7 +299,7 @@
           &my_thread_id);
   if (old_thread_id_pointer != nullptr) {
     // We've already entered the signal handler.  What should we do?
-    if (pthread_equal(my_thread_id, *g_entered_thread_id_pointer)) {
+    if (pthread_equal(my_thread_id, *g_entered_thread_id_pointer) != 0) {
       // It looks the current thread is reentering the signal handler.
       // Something must be going wrong (maybe we are reentering by another
       // type of signal?).  Kill ourself by the default signal handler.
diff --git a/src/signalhandler_unittest.cc b/src/signalhandler_unittest.cc
index 06c169e..6184087 100644
--- a/src/signalhandler_unittest.cc
+++ b/src/signalhandler_unittest.cc
@@ -51,7 +51,7 @@
 
 using namespace google;
 
-static void* DieInThread(void*) {
+static void* DieInThread(void* /*unused*/) {
   // We assume pthread_t is an integral number or a pointer, rather
   // than a complex struct.  In some environments, pthread_self()
   // returns an uint64 but in some other environments pthread_self()
@@ -89,8 +89,9 @@
     *a = 0;
   } else if (command == "loop") {
     fprintf(stderr, "looping\n");
-    while (true)
+    while (true) {
       ;
+    }
   } else if (command == "die_in_thread") {
 #  if defined(HAVE_PTHREAD)
     pthread_t thread;
diff --git a/src/stacktrace_powerpc-inl.h b/src/stacktrace_powerpc-inl.h
index 168f472..be0d46a 100644
--- a/src/stacktrace_powerpc-inl.h
+++ b/src/stacktrace_powerpc-inl.h
@@ -55,20 +55,28 @@
   if (STRICT_UNWINDING) {
     // With the stack growing downwards, older stack frame must be
     // at a greater address that the current one.
-    if (new_sp <= old_sp) return nullptr;
+    if (new_sp <= old_sp) {
+      return nullptr;
+    }
     // Assume stack frames larger than 100,000 bytes are bogus.
-    if ((uintptr_t)new_sp - (uintptr_t)old_sp > 100000) return nullptr;
+    if ((uintptr_t)new_sp - (uintptr_t)old_sp > 100000) {
+      return nullptr;
+    }
   } else {
     // In the non-strict mode, allow discontiguous stack frames.
     // (alternate-signal-stacks for example).
-    if (new_sp == old_sp) return nullptr;
+    if (new_sp == old_sp) {
+      return nullptr;
+    }
     // And allow frames upto about 1MB.
     if ((new_sp > old_sp) &&
         ((uintptr_t)new_sp - (uintptr_t)old_sp > 1000000)) {
       return nullptr;
     }
   }
-  if ((uintptr_t)new_sp & (sizeof(void*) - 1)) return nullptr;
+  if ((uintptr_t)new_sp & (sizeof(void*) - 1)) {
+    return nullptr;
+  }
   return new_sp;
 }
 
@@ -102,7 +110,7 @@
   skip_count++;
 
   int n = 0;
-  while (sp && n < max_depth) {
+  while ((sp != nullptr) && n < max_depth) {
     if (skip_count > 0) {
       skip_count--;
     } else {
diff --git a/src/stacktrace_unittest.cc b/src/stacktrace_unittest.cc
index 9060a2a..c4eb475 100644
--- a/src/stacktrace_unittest.cc
+++ b/src/stacktrace_unittest.cc
@@ -123,7 +123,7 @@
 #    pragma clang diagnostic ignored "-Wgnu-label-as-value"
 #  endif
 
-void ATTRIBUTE_NOINLINE CheckStackTrace(int);
+void ATTRIBUTE_NOINLINE CheckStackTrace(int /*i*/);
 static void ATTRIBUTE_NOINLINE CheckStackTraceLeaf() {
   const int STACK_LEN = 10;
   void* stack[STACK_LEN];
@@ -229,7 +229,7 @@
 
 //-----------------------------------------------------------------------//
 
-int main(int, char** argv) {
+int main(int /*unused*/, char** argv) {
   FLAGS_logtostderr = true;
   InitGoogleLogging(argv[0]);
 
diff --git a/src/stacktrace_x86-inl.h b/src/stacktrace_x86-inl.h
index 3ca9f68..902e8a7 100644
--- a/src/stacktrace_x86-inl.h
+++ b/src/stacktrace_x86-inl.h
@@ -57,7 +57,9 @@
   if (STRICT_UNWINDING) {
     // With the stack growing downwards, older stack frame must be
     // at a greater address that the current one.
-    if (new_sp <= old_sp) return nullptr;
+    if (new_sp <= old_sp) {
+      return nullptr;
+    }
     // Assume stack frames larger than 100,000 bytes are bogus.
     if (reinterpret_cast<uintptr_t>(new_sp) -
             reinterpret_cast<uintptr_t>(old_sp) >
@@ -67,7 +69,9 @@
   } else {
     // In the non-strict mode, allow discontiguous stack frames.
     // (alternate-signal-stacks for example).
-    if (new_sp == old_sp) return nullptr;
+    if (new_sp == old_sp) {
+      return nullptr;
+    }
     // And allow frames upto about 1MB.
     if ((new_sp > old_sp) && (reinterpret_cast<uintptr_t>(new_sp) -
                                   reinterpret_cast<uintptr_t>(old_sp) >
@@ -139,7 +143,7 @@
 #endif
 
   int n = 0;
-  while (sp && n < max_depth) {
+  while ((sp != nullptr) && n < max_depth) {
     if (*(sp + 1) == nullptr) {
       // In 64-bit code, we often see a frame that
       // points to itself and has a return address of 0.
diff --git a/src/stl_logging_unittest.cc b/src/stl_logging_unittest.cc
index 5a8ae2a..ab49c2b 100644
--- a/src/stl_logging_unittest.cc
+++ b/src/stl_logging_unittest.cc
@@ -79,7 +79,9 @@
     string expected;
     for (int i = 0; i < 100; i++) {
       v.push_back(i);
-      if (i > 0) expected += ' ';
+      if (i > 0) {
+        expected += ' ';
+      }
       const size_t buf_size = 256;
       char buf[buf_size];
       std::snprintf(buf, buf_size, "%d", i);
@@ -107,7 +109,7 @@
   }
 }
 
-int main(int, char**) {
+int main(int /*unused*/, char** /*unused*/) {
   TestSTLLogging();
   std::cout << "PASS\n";
   return 0;
diff --git a/src/striplog_unittest.cc b/src/striplog_unittest.cc
index 086ea31..5f1eefb 100644
--- a/src/striplog_unittest.cc
+++ b/src/striplog_unittest.cc
@@ -51,19 +51,18 @@
   if (b) {
     LOG(FATAL) << "Fatal";
     return 0;  // Workaround for MSVC warning C4715
-  } else {
-    return 0;
   }
+  return 0;
 }
 
 struct A {};
-std::ostream& operator<<(std::ostream& str, const A&) { return str; }
+std::ostream& operator<<(std::ostream& str, const A& /*unused*/) { return str; }
 
 namespace {
 void handle_abort(int /*code*/) { std::exit(EXIT_FAILURE); }
 }  // namespace
 
-int main(int, char* argv[]) {
+int main(int /*unused*/, char* argv[]) {
 #if defined(_MSC_VER)
   // Avoid presenting an interactive dialog that will cause the test to time
   // out.
@@ -74,7 +73,7 @@
   FLAGS_logtostderr = true;
   InitGoogleLogging(argv[0]);
   if (FLAGS_check_mode) {
-    printf("%s\n", DEBUG_MODE ? "dbg" : "opt");
+    printf("%s\n", DEBUG_MODE != 0U ? "dbg" : "opt");
     return 0;
   }
   LOG(INFO) << "TESTMESSAGE INFO";
diff --git a/src/symbolize.cc b/src/symbolize.cc
index 4ef2926..2fddc77 100644
--- a/src/symbolize.cc
+++ b/src/symbolize.cc
@@ -264,7 +264,8 @@
     ssize_t n_read = ReadFromOffset(fd, &header_name, name_len, name_offset);
     if (n_read == -1) {
       return false;
-    } else if (static_cast<size_t>(n_read) != name_len) {
+    }
+    if (static_cast<size_t>(n_read) != name_len) {
       // Short read -- name could be at end of file.
       continue;
     }
@@ -386,7 +387,7 @@
       close(fd_);
     }
   }
-  int get() { return fd_; }
+  int get() const { return fd_; }
 
  private:
   FileDescriptor(const FileDescriptor&) = delete;
@@ -613,7 +614,7 @@
     }
 
     // Check start and end addresses.
-    if (!(start_address <= pc && pc < end_address)) {
+    if (start_address > pc || pc >= end_address) {
       continue;  // We skip this map.  PC isn't in this map.
     }
 
@@ -760,7 +761,7 @@
   out[0] = '\0';
   SafeAppendString("(", out, out_size);
 
-  if (g_symbolize_open_object_file_callback) {
+  if (g_symbolize_open_object_file_callback != nullptr) {
     object_fd = g_symbolize_open_object_file_callback(
         pc0, start_address, base_address, out + 1, out_size - 1);
   } else {
@@ -776,7 +777,7 @@
   // Check whether a file name was returned.
   if (object_fd < 0) {
 #    endif
-    if (out[1]) {
+    if (out[1] != 0) {
       // The object file containing PC was determined successfully however the
       // object file was not opened successfully.  This is still considered
       // success because the object file name and offset are known and tools
@@ -794,7 +795,7 @@
   if (elf_type == -1) {
     return false;
   }
-  if (g_symbolize_callback) {
+  if (g_symbolize_callback != nullptr) {
     // Run the call back if it's installed.
     // Note: relocation (and much of the rest of this code) will be
     // wrong for prelinked shared libraries and PIE executables.
@@ -808,7 +809,7 @@
   }
   if (!GetSymbolFromObjectFile(wrapped_object_fd.get(), pc0, out, out_size,
                                base_address)) {
-    if (out[1] && !g_symbolize_callback) {
+    if ((out[1] != 0) && (g_symbolize_callback == nullptr)) {
       // The object file containing PC was opened successfully however the
       // symbol was not found. The object may have been stripped. This is still
       // considered success because the object file name and offset are known
diff --git a/src/symbolize_unittest.cc b/src/symbolize_unittest.cc
index c6a03c9..ee3d35f 100644
--- a/src/symbolize_unittest.cc
+++ b/src/symbolize_unittest.cc
@@ -66,9 +66,8 @@
   static char symbol[4096];
   if (Symbolize(pc, symbol, sizeof(symbol))) {
     return symbol;
-  } else {
-    return nullptr;
   }
+  return nullptr;
 }
 #  endif
 
@@ -237,7 +236,8 @@
   // Set up SIGUSR1 and SIGUSR2 signal handlers (and save the older ones).
   struct sigaction sa;
   memset(&sa, 0, sizeof(struct sigaction));
-  struct sigaction old_sa1, old_sa2;
+  struct sigaction old_sa1;
+  struct sigaction old_sa2;
   sigemptyset(&sa.sa_mask);
   sa.sa_flags = SA_ONSTACK;
 
diff --git a/src/utilities.cc b/src/utilities.cc
index 20ee02d..3d6a945 100644
--- a/src/utilities.cc
+++ b/src/utilities.cc
@@ -90,7 +90,7 @@
 // For some environments, add two extra bytes for the leading "0x".
 static const int kPrintfPointerFieldWidth = 2 + 2 * sizeof(void*);
 
-static void DebugWriteToStderr(const char* data, void*) {
+static void DebugWriteToStderr(const char* data, void* /*unused*/) {
   // This one is signal-safe.
   if (write(STDERR_FILENO, data, strlen(data)) < 0) {
     // Ignore errors.
@@ -188,10 +188,8 @@
 const char* ProgramInvocationShortName() {
   if (g_program_invocation_short_name != nullptr) {
     return g_program_invocation_short_name;
-  } else {
-    // TODO(hamaji): Use /proc/self/cmdline and so?
-    return "UNKNOWN";
-  }
+  }  // TODO(hamaji): Use /proc/self/cmdline and so?
+  return "UNKNOWN";
 }
 
 #ifdef GLOG_OS_WINDOWS
@@ -304,7 +302,7 @@
 #ifdef GLOG_OS_WINDOWS  // Look for either path separator in Windows
   if (!base) base = strrchr(filepath, '\\');
 #endif
-  return base ? (base + 1) : filepath;
+  return base != nullptr ? (base + 1) : filepath;
 }
 
 static string g_my_user_name;
@@ -325,7 +323,7 @@
     char buffer[1024] = {'\0'};
     uid_t uid = geteuid();
     int pwuid_res = getpwuid_r(uid, &pwd, buffer, sizeof(buffer), &result);
-    if (pwuid_res == 0 && result) {
+    if (pwuid_res == 0 && (result != nullptr)) {
       g_my_user_name = pwd.pw_name;
     } else {
       std::snprintf(buffer, sizeof(buffer), "uid%d", uid);
@@ -361,7 +359,7 @@
 #ifdef GLOG_OS_WINDOWS
   if (!slash) slash = strrchr(argv0, '\\');
 #endif
-  g_program_invocation_short_name = slash ? slash + 1 : argv0;
+  g_program_invocation_short_name = slash != nullptr ? slash + 1 : argv0;
 
 #ifdef HAVE_STACKTRACE
   InstallFailureFunction(&DumpStackTraceAndExit);
diff --git a/src/utilities.h b/src/utilities.h
index f19c630..843da86 100644
--- a/src/utilities.h
+++ b/src/utilities.h
@@ -31,12 +31,12 @@
 //
 // Define utilities for glog internal usage.
 
-#ifndef UTILITIES_H__
-#define UTILITIES_H__
+#ifndef UTILITIES_H_
+#define UTILITIES_H_
 
 // printf macros for size_t, in the style of inttypes.h
 #ifdef _LP64
-#  define __PRIS_PREFIX "z"
+#  define PRIS_PREFIX "z"
 #else
 #  define __PRIS_PREFIX
 #endif
@@ -234,4 +234,4 @@
 
 using namespace google::glog_internal_namespace_;
 
-#endif  // UTILITIES_H__
+#endif  // UTILITIES_H_
diff --git a/src/vlog_is_on.cc b/src/vlog_is_on.cc
index b514acf..62c1cdb 100644
--- a/src/vlog_is_on.cc
+++ b/src/vlog_is_on.cc
@@ -78,16 +78,24 @@
   size_t p = 0;
   size_t s = 0;
   while (true) {
-    if (p == patt_len && s == str_len) return true;
-    if (p == patt_len) return false;
-    if (s == str_len) return p + 1 == patt_len && pattern[p] == '*';
+    if (p == patt_len && s == str_len) {
+      return true;
+    }
+    if (p == patt_len) {
+      return false;
+    }
+    if (s == str_len) {
+      return p + 1 == patt_len && pattern[p] == '*';
+    }
     if (pattern[p] == str[s] || pattern[p] == '?') {
       p += 1;
       s += 1;
       continue;
     }
     if (pattern[p] == '*') {
-      if (p + 1 == patt_len) return true;
+      if (p + 1 == patt_len) {
+        return true;
+      }
       do {
         if (SafeFNMatch_(pattern + (p + 1), patt_len - (p + 1), str + s,
                          str_len - s)) {
@@ -147,7 +155,7 @@
       auto* info = new VModuleInfo;
       info->module_pattern = pattern;
       info->vlog_level = module_level;
-      if (head) {
+      if (head != nullptr) {
         tail->next = info;
       } else {
         head = info;
@@ -156,10 +164,12 @@
     }
     // Skip past this entry
     vmodule = strchr(sep, ',');
-    if (vmodule == nullptr) break;
+    if (vmodule == nullptr) {
+      break;
+    }
     vmodule++;  // Skip past ","
   }
-  if (head) {  // Put them into the list at the head:
+  if (head != nullptr) {  // Put them into the list at the head:
     tail->next = vmodule_list;
     vmodule_list = head;
   }
@@ -200,7 +210,7 @@
 
       // We traverse the list fully because the pattern can match several items
       // from the list.
-      while (item) {
+      while (item != nullptr) {
         if (SafeFNMatch_(module_pattern, pattern_len, item->base_name,
                          item->base_len)) {
           // Redirect the cached value to its module override.
@@ -219,8 +229,8 @@
 
 // NOTE: Individual VLOG statements cache the integer log level pointers.
 // NOTE: This function must not allocate memory or require any locks.
-bool InitVLOG3__(SiteFlag* site_flag, int32* level_default, const char* fname,
-                 int32 verbose_level) {
+bool InitVLOG3_(SiteFlag* site_flag, int32* level_default, const char* fname,
+                int32 verbose_level) {
   MutexLock l(&vmodule_lock);
   bool read_vmodule_flag = inited_vmodule;
   if (!read_vmodule_flag) {
@@ -243,10 +253,10 @@
   }
 #endif
 
-  base = base ? (base + 1) : fname;
+  base = base != nullptr ? (base + 1) : fname;
   const char* base_end = strchr(base, '.');
   size_t base_length =
-      base_end ? static_cast<size_t>(base_end - base) : strlen(base);
+      base_end != nullptr ? static_cast<size_t>(base_end - base) : strlen(base);
 
   // Trim out trailing "-inl" if any
   if (base_length >= 4 && (memcmp(base + base_length - 4, "-inl", 4) == 0)) {
@@ -280,7 +290,7 @@
     // SetVModule is called afterwards with new modules.
     // The performance penalty here is neglible, because InitVLOG3__ is called
     // once per site.
-    if (site_flag_value == level_default && !site_flag->base_name) {
+    if (site_flag_value == level_default && (site_flag->base_name == nullptr)) {
       site_flag->base_name = base;
       site_flag->base_len = base_length;
       site_flag->next = cached_site_list;
diff --git a/src/windows/dirent.h b/src/windows/dirent.h
index 7e818ef..9441d0e 100644
--- a/src/windows/dirent.h
+++ b/src/windows/dirent.h
@@ -37,10 +37,10 @@
 #include <cwchar>
 
 /* Indicates that d_type field is available in dirent structure */
-#define _DIRENT_HAVE_D_TYPE
+#define DIRENT_HAVE_D_TYPE
 
 /* Indicates that d_namlen field is available in dirent structure */
-#define _DIRENT_HAVE_D_NAMLEN
+#define DIRENT_HAVE_D_NAMLEN
 
 /* Entries missing from MSVC 6.0 */
 #if !defined(FILE_ATTRIBUTE_DEVICE)
@@ -206,10 +206,10 @@
 #endif
 
 /* Return the exact length of the file name without zero terminator */
-#define _D_EXACT_NAMLEN(p) ((p)->d_namlen)
+#define D_EXACT_NAMLEN(p) ((p)->d_namlen)
 
 /* Return the maximum size of a file name */
-#define _D_ALLOC_NAMLEN(p) ((PATH_MAX) + 1)
+#define D_ALLOC_NAMLEN(p) ((PATH_MAX) + 1)
 
 #ifdef __cplusplus
 extern "C" {
@@ -345,7 +345,7 @@
 
   /* Allocate new _WDIR structure */
   dirp = (_WDIR*)malloc(sizeof(struct _WDIR));
-  if (!dirp) {
+  if (dirp == nullptr) {
     return nullptr;
   }
 
@@ -507,7 +507,7 @@
  */
 static int _wclosedir(_WDIR* dirp) {
   int ok;
-  if (dirp) {
+  if (dirp != nullptr) {
     /* Release search handle */
     if (dirp->handle != INVALID_HANDLE_VALUE) {
       FindClose(dirp->handle);
@@ -533,7 +533,7 @@
  * file name again.
  */
 static void _wrewinddir(_WDIR* dirp) {
-  if (dirp) {
+  if (dirp != nullptr) {
     /* Release existing search handle */
     if (dirp->handle != INVALID_HANDLE_VALUE) {
       FindClose(dirp->handle);
@@ -632,7 +632,7 @@
 
   /* Allocate memory for DIR structure */
   dirp = (DIR*)malloc(sizeof(struct DIR));
-  if (!dirp) {
+  if (dirp == nullptr) {
     return nullptr;
   }
   {
@@ -642,7 +642,7 @@
 
     /* Convert directory name to wide-character string */
     error = dirent_mbstowcs_s(&n, wname, PATH_MAX + 1, dirname, PATH_MAX + 1);
-    if (error) {
+    if (error != 0) {
       /*
        * Cannot convert file name to wide-character string.  This
        * occurs if the string contains invalid multi-byte sequences or
@@ -654,7 +654,7 @@
 
     /* Open directory stream using wide-character name */
     dirp->wdirp = _wopendir(wname);
-    if (!dirp->wdirp) {
+    if (dirp->wdirp == nullptr) {
       goto exit_free;
     }
   }
@@ -718,7 +718,7 @@
                                 datap->cAlternateFileName, PATH_MAX + 1);
     }
 
-    if (!error) {
+    if (error == 0) {
       DWORD attr;
 
       /* Length of file name excluding zero terminator */
@@ -771,7 +771,7 @@
  */
 static int closedir(DIR* dirp) {
   int ok;
-  if (dirp) {
+  if (dirp != nullptr) {
     /* Close wide-character directory stream */
     ok = _wclosedir(dirp->wdirp);
     dirp->wdirp = nullptr;
@@ -814,7 +814,7 @@
 
   /* Open directory stream */
   dir = opendir(dirname);
-  if (dir) {
+  if (dir != nullptr) {
     /* Read directory entries to memory */
     while (1) {
       /* Enlarge pointer table to make room for another pointer */
@@ -861,7 +861,7 @@
           int pass;
 
           /* Determine whether to include the entry in result */
-          if (filter) {
+          if (filter != nullptr) {
             /* Let the filter function decide */
             pass = filter(tmp);
           } else {
@@ -869,7 +869,7 @@
             pass = 1;
           }
 
-          if (pass) {
+          if (pass != 0) {
             /* Store the temporary entry to pointer table */
             files[size++] = tmp;
             tmp = nullptr;
@@ -913,12 +913,12 @@
   }
 
   /* Close directory stream */
-  if (dir) {
+  if (dir != nullptr) {
     closedir(dir);
   }
 
   /* Pass pointer table to caller */
-  if (namelist) {
+  if (namelist != nullptr) {
     *namelist = files;
   }
   return result;
@@ -953,9 +953,9 @@
 
   /* Convert to wide-character string (or count characters) */
   n = mbstowcs(wcstr, mbstr, sizeInWords);
-  if (!wcstr || n < count) {
+  if ((wcstr == nullptr) || n < count) {
     /* Zero-terminate output buffer */
-    if (wcstr && sizeInWords) {
+    if ((wcstr != nullptr) && (sizeInWords != 0U)) {
       if (n >= sizeInWords) {
         n = sizeInWords - 1;
       }
@@ -963,7 +963,7 @@
     }
 
     /* Length of resulting multi-byte string WITH zero terminator */
-    if (pReturnValue) {
+    if (pReturnValue != nullptr) {
       *pReturnValue = n + 1;
     }
 
@@ -997,9 +997,9 @@
 
   /* Convert to multi-byte string (or count the number of bytes needed) */
   n = wcstombs(mbstr, wcstr, sizeInBytes);
-  if (!mbstr || n < count) {
+  if ((mbstr == nullptr) || n < count) {
     /* Zero-terminate output buffer */
-    if (mbstr && sizeInBytes) {
+    if ((mbstr != nullptr) && (sizeInBytes != 0U)) {
       if (n >= sizeInBytes) {
         n = sizeInBytes - 1;
       }
@@ -1007,7 +1007,7 @@
     }
 
     /* Length of resulting multi-bytes string WITH zero-terminator */
-    if (pReturnValue) {
+    if (pReturnValue != nullptr) {
       *pReturnValue = n + 1;
     }