diff --git a/payload_generator/cycle_breaker_unittest.cc b/payload_generator/cycle_breaker_unittest.cc
index b2cd5d4..b58bb08 100644
--- a/payload_generator/cycle_breaker_unittest.cc
+++ b/payload_generator/cycle_breaker_unittest.cc
@@ -29,7 +29,7 @@
     it->op.set_type(DeltaArchiveManifest_InstallOperation_Type_MOVE);
   }
 }
-}  // namespace {}
+}  // namespace
 
 class CycleBreakerTest : public ::testing::Test {};
 
@@ -90,7 +90,7 @@
   props.extents[0].set_num_blocks(weight);
   return make_pair(dest, props);
 }
-}  // namespace {}
+}  // namespace
 
 
 // This creates a bunch of cycles like this:
diff --git a/payload_generator/delta_diff_generator.cc b/payload_generator/delta_diff_generator.cc
index 8fbbd0d..587892c 100644
--- a/payload_generator/delta_diff_generator.cc
+++ b/payload_generator/delta_diff_generator.cc
@@ -663,7 +663,7 @@
   return removed_bytes;
 }
 
-}  // namespace {}
+}  // namespace
 
 bool DeltaDiffGenerator::ReadFileToDiff(
     const string& old_filename,
@@ -893,7 +893,7 @@
   return new_extents;
 }
 
-}  // namespace {}
+}  // namespace
 
 void DeltaDiffGenerator::SubstituteBlocks(
     Vertex* vertex,
@@ -1047,7 +1047,7 @@
   vector<vector<Vertex::Index>::size_type>& table_;
 };
 
-}  // namespace {}
+}  // namespace
 
 void DeltaDiffGenerator::GenerateReverseTopoOrderMap(
     vector<Vertex::Index>& op_indexes,
@@ -1276,7 +1276,7 @@
   return true;
 }
 
-}  // namespace {}
+}  // namespace
 
 // Returns true if |op| is a no-op operation that doesn't do any useful work
 // (e.g., a move operation that copies blocks onto themselves).
diff --git a/payload_generator/delta_diff_generator_unittest.cc b/payload_generator/delta_diff_generator_unittest.cc
index 05b173c..c9ac8cf 100644
--- a/payload_generator/delta_diff_generator_unittest.cc
+++ b/payload_generator/delta_diff_generator_unittest.cc
@@ -54,7 +54,7 @@
   }
   return ret;
 }
-}  // namespace {}
+}  // namespace
 
 class DeltaDiffGeneratorTest : public ::testing::Test {
  protected:
@@ -660,7 +660,7 @@
   LOG(INFO) << "{" << ss.str() << "}";
 }
 
-}  // namespace {}
+}  // namespace
 
 TEST_F(DeltaDiffGeneratorTest, RunAsRootAssignTempBlocksTest) {
   Graph graph(9);
diff --git a/payload_generator/full_update_generator_unittest.cc b/payload_generator/full_update_generator_unittest.cc
index c3da115..689c5ce 100644
--- a/payload_generator/full_update_generator_unittest.cc
+++ b/payload_generator/full_update_generator_unittest.cc
@@ -17,7 +17,7 @@
 
 namespace {
   const size_t kBlockSize = 4096;
-}  // namespace {}
+}  // namespace
 
 
 class FullUpdateGeneratorTest : public ::testing::Test { };
diff --git a/payload_generator/generate_delta_main.cc b/payload_generator/generate_delta_main.cc
index acf4dcd..89bb2b9 100644
--- a/payload_generator/generate_delta_main.cc
+++ b/payload_generator/generate_delta_main.cc
@@ -386,7 +386,7 @@
   return 0;
 }
 
-}  // namespace {}
+}  // namespace
 
 }  // namespace chromeos_update_engine
 
diff --git a/payload_generator/graph_utils.cc b/payload_generator/graph_utils.cc
index 8b6535d..b3c4231 100644
--- a/payload_generator/graph_utils.cc
+++ b/payload_generator/graph_utils.cc
@@ -133,7 +133,7 @@
     DumpExtents(it->second.write_extents, 6);
   }
 }
-}  // namespace {}
+}  // namespace
 
 void DumpGraph(const Graph& graph) {
   LOG(INFO) << "Graph length: " << graph.size();
diff --git a/payload_generator/metadata.cc b/payload_generator/metadata.cc
index f0c9238..d0ab82c 100644
--- a/payload_generator/metadata.cc
+++ b/payload_generator/metadata.cc
@@ -425,7 +425,7 @@
   return true;
 }
 
-}  // namespace {}
+}  // namespace
 
 // Reads metadata from old image and new image and determines
 // the smallest way to encode the metadata for the diff.
diff --git a/payload_generator/metadata_unittest.cc b/payload_generator/metadata_unittest.cc
index 39a2476..14e21ae 100644
--- a/payload_generator/metadata_unittest.cc
+++ b/payload_generator/metadata_unittest.cc
@@ -112,8 +112,8 @@
   //   - test_file indirect block (inode 12)
   struct {
     string metadata_name;
-    off_t start_block; // Set to -1 to skip start block verification
-    off_t num_blocks; // Set to -1 to skip num blocks verification
+    off_t start_block;  // Set to -1 to skip start block verification
+    off_t num_blocks;   // Set to -1 to skip num blocks verification
   } exp_results[] =
       {{"<rootfs-bg-0-0-metadata>", 0, 104},
        {"<rootfs-bg-0-1-metadata>", 104, 104},
diff --git a/payload_generator/topological_sort.cc b/payload_generator/topological_sort.cc
index 3ee8c75..2a6e586 100644
--- a/payload_generator/topological_sort.cc
+++ b/payload_generator/topological_sort.cc
@@ -31,7 +31,7 @@
   // Visit this node.
   nodes->push_back(node);
 }
-}  // namespace {}
+}  // namespace
 
 void TopologicalSort(const Graph& graph, vector<Vertex::Index>* out) {
   set<Vertex::Index> visited_nodes;
diff --git a/payload_generator/topological_sort_unittest.cc b/payload_generator/topological_sort_unittest.cc
index 696fd5b..c1d19b7 100644
--- a/payload_generator/topological_sort_unittest.cc
+++ b/payload_generator/topological_sort_unittest.cc
@@ -34,7 +34,7 @@
   }
   return false;
 }
-}  // namespace {}
+}  // namespace
 
 TEST(TopologicalSortTest, SimpleTest) {
   int counter = 0;
