diff --git a/.clang-tidy b/.clang-tidy
index e210319..be00837 100644
--- a/.clang-tidy
+++ b/.clang-tidy
@@ -49,6 +49,7 @@
   -readability-isolate-declaration,
   -readability-magic-numbers,
   -readability-make-member-function-const,
+  -readability-math-missing-parentheses,
   -readability-named-parameter,
   -readability-qualified-auto,
   -readability-redundant-access-specifiers,
diff --git a/verible/common/formatting/layout-optimizer-internal.h b/verible/common/formatting/layout-optimizer-internal.h
index cd489f7..ed59fe7 100644
--- a/verible/common/formatting/layout-optimizer-internal.h
+++ b/verible/common/formatting/layout-optimizer-internal.h
@@ -617,7 +617,7 @@
   //
   // Iterator: iterator type that dereferences to LayoutFunction.
   template <class Iterator>
-  LayoutFunction Choice(const Iterator begin, const Iterator end) const {
+  LayoutFunction Choice(const Iterator &begin, const Iterator &end) const {
     static_assert(IsIteratorDereferencingTo<Iterator, LayoutFunction>,
                   "Iterator's value type must be LayoutFunction.");
     const auto lfs = make_container_range(begin, end);
diff --git a/verible/common/lsp/message-stream-splitter.cc b/verible/common/lsp/message-stream-splitter.cc
index 3daf864..a3c07d9 100644
--- a/verible/common/lsp/message-stream-splitter.cc
+++ b/verible/common/lsp/message-stream-splitter.cc
@@ -48,12 +48,12 @@
   static constexpr std::string_view kEndHeaderMarker = "\r\n\r\n";
   static constexpr std::string_view kContentLengthHeader = "Content-Length: ";
 
-  int header_marker_len = kEndHeaderMarker.length();
-  auto end_of_header = data.find(kEndHeaderMarker);
+  const size_t header_marker_len = kEndHeaderMarker.length();
+  const size_t end_of_header = data.find(kEndHeaderMarker);
   if (end_of_header == std::string_view::npos) return kIncompleteHeader;
 
   // Very dirty search for header - we don't check if starts with line.
-  const std::string_view header_content(data.data(), end_of_header);
+  const std::string_view header_content = data.substr(0, end_of_header);
   auto found_ContentLength_header = header_content.find(kContentLengthHeader);
   if (found_ContentLength_header == std::string_view::npos) {
     return kGarbledHeader;
@@ -80,8 +80,8 @@
     int body_size = 0;
     const int body_offset = ParseHeaderGetBodyOffset(*data, &body_size);
     if (body_offset == kGarbledHeader) {
-      std::string_view limited_view(
-          data->data(), std::min(data->size(), static_cast<size_t>(256)));
+      const std::string_view limited_view =
+          data->substr(0, std::min(data->size(), static_cast<size_t>(256)));
       return absl::InvalidArgumentError(
           absl::StrCat("No `Content-Length:` header. '",
                        absl::CEscape(limited_view), "...'"));
@@ -93,8 +93,8 @@
       return absl::OkStatus();  // Only insufficient partial buffer available.
     }
 
-    std::string_view header(data->data(), body_offset);
-    std::string_view body(data->data() + body_offset, body_size);
+    const std::string_view header = data->substr(0, body_offset);
+    const std::string_view body = data->substr(body_offset, body_size);
     message_processor_(header, body);
 
     stats_largest_body_ = std::max(stats_largest_body_, body.size());
diff --git a/verible/common/text/macro-definition.cc b/verible/common/text/macro-definition.cc
index d1a32aa..7f795f0 100644
--- a/verible/common/text/macro-definition.cc
+++ b/verible/common/text/macro-definition.cc
@@ -104,7 +104,7 @@
     }
   }
   // Didn't match enum type nor find map entry, so don't substitute.
-  return token_info;
+  return token_info;  // NOLINT(bugprone-return-const-ref-from-parameter)
 }
 
 }  // namespace verible
diff --git a/verible/common/text/tree-utils.h b/verible/common/text/tree-utils.h
index a69cfaa..8a18924 100644
--- a/verible/common/text/tree-utils.h
+++ b/verible/common/text/tree-utils.h
@@ -54,11 +54,9 @@
 // The following no-op overloads allow SymbolCastToNode() to work with zero
 // overhead when the argument type is statically known to be the same.
 inline const SyntaxTreeNode &SymbolCastToNode(const SyntaxTreeNode &node) {
-  return node;
+  return node;  // NOLINT(bugprone-return-const-ref-from-parameter)
 }
-inline SyntaxTreeNode &SymbolCastToNode(SyntaxTreeNode &node) {  // NOLINT
-  return node;
-}
+inline SyntaxTreeNode &SymbolCastToNode(SyntaxTreeNode &node) { return node; }
 
 // Returns a SyntaxTreeLeaf down_casted from a Symbol.
 const SyntaxTreeLeaf &SymbolCastToLeaf(const Symbol &);
diff --git a/verible/common/util/container-proxy_test.cc b/verible/common/util/container-proxy_test.cc
index b5766fd..5e8220f 100644
--- a/verible/common/util/container-proxy_test.cc
+++ b/verible/common/util/container-proxy_test.cc
@@ -113,7 +113,7 @@
            std::equal(values.begin(), values.end(), other.values.begin());
   }
 
-  friend std::ostream &operator<<(std::ostream &s, TestTrace obj) {
+  friend std::ostream &operator<<(std::ostream &s, const TestTrace &obj) {
     switch (obj.triggered_method) {
       case ContainerProxyEvent::kUnknown:
         s << "UNKNOWN";
diff --git a/verible/common/util/container-util.h b/verible/common/util/container-util.h
index b27f12c..85bfa91 100644
--- a/verible/common/util/container-util.h
+++ b/verible/common/util/container-util.h
@@ -43,7 +43,8 @@
 template <class KeyType>
 struct ValueTypeFromKeyType<KeyType, KeyType> {
   const KeyType &operator()(const KeyType &k) const {
-    return k;  // just forward the key
+    // Just forward the key
+    return k;  // NOLINT(bugprone-return-const-ref-from-parameter)
   }
 };
 }  // namespace internal
diff --git a/verible/common/util/file-util.cc b/verible/common/util/file-util.cc
index bd94cf6..27a4c6f 100644
--- a/verible/common/util/file-util.cc
+++ b/verible/common/util/file-util.cc
@@ -179,10 +179,10 @@
   }
   char buffer[4096];
   int bytes_read;
-  do {
-    bytes_read = fread(buffer, 1, sizeof(buffer), stream);
+  while (!ferror(stream) && !feof(stream) &&
+         (bytes_read = fread(buffer, 1, sizeof(buffer), stream)) >= 0) {
     content.append(buffer, bytes_read);
-  } while (bytes_read > 0);
+  }
   fclose(stream);
 
   return content;
diff --git a/verible/common/util/forward.h b/verible/common/util/forward.h
index 9778108..56af125 100644
--- a/verible/common/util/forward.h
+++ b/verible/common/util/forward.h
@@ -31,7 +31,9 @@
   // Intentionally restricted to const reference to avoid the surprise
   // of modifying a temporary reference.
   // See also the two-parameter overload.
-  const T &operator()(const T &t) const { return t; }
+  const T &operator()(const T &t) const {
+    return t;  // NOLINT(bugprone-return-const-ref-from-parameter)
+  }
 
   // (overload) Constructs a temporary rvalue, when types are different.
   // This works with explicit-only constructors and implicit constructors.
diff --git a/verible/verilog/analysis/checkers/constraint-name-style-rule.cc b/verible/verilog/analysis/checkers/constraint-name-style-rule.cc
index c6be316..0c66ab9 100644
--- a/verible/verilog/analysis/checkers/constraint-name-style-rule.cc
+++ b/verible/verilog/analysis/checkers/constraint-name-style-rule.cc
@@ -51,7 +51,7 @@
       .desc =
           "Check that constraint names follow the required name style "
           "specified by a regular expression.",
-      .param = {{"pattern", kSuffix.data()}},
+      .param = {{"pattern", std::string(kSuffix)}},
   };
   return d;
 }
diff --git a/verible/verilog/analysis/verilog-linter-configuration.cc b/verible/verilog/analysis/verilog-linter-configuration.cc
index 489059a..07cbef4 100644
--- a/verible/verilog/analysis/verilog-linter-configuration.cc
+++ b/verible/verilog/analysis/verilog-linter-configuration.cc
@@ -281,7 +281,8 @@
 template <typename T>
 static absl::StatusOr<std::vector<std::unique_ptr<T>>> CreateRules(
     const std::map<analysis::LintRuleId, RuleSetting> &config,
-    std::function<std::unique_ptr<T>(const analysis::LintRuleId &)> factory) {
+    const std::function<std::unique_ptr<T>(const analysis::LintRuleId &)>
+        &factory) {
   std::vector<std::unique_ptr<T>> rule_instances;
   for (const auto &rule_pair : config) {
     const RuleSetting &setting = rule_pair.second;
