Add include sorting configuration to .clang-format and reformat

Configure include sorting options in .clang-format based on
Chromium's settings to adhere to Google C++ Style Guide:
- IncludeBlocks: Regroup
- IncludeCategories (with special priorities for Windows headers)
- IncludeIsMainRegex (for recognizing main headers in tests and platform files)

This ensures that tools/run_formatter.sh automatically sorts headers
and groups them appropriately (e.g. separating main headers, C system headers,
and C++ standard library headers with blank lines).

Also reformat existing files with tools/run_formatter.sh.

Change-Id: I1a82e23a7e1ac117a5f13d43a611a13c475fe2d1
Reviewed-on: https://gn-review.googlesource.com/c/gn/+/27200
Reviewed-by: David Turner <digit@google.com>
Commit-Queue: Takuto Ikuta <tikuta@google.com>
diff --git a/.clang-format b/.clang-format
index e45f204..f1cb9b5 100644
--- a/.clang-format
+++ b/.clang-format
@@ -1,2 +1,37 @@
 BasedOnStyle: Chromium
 Standard: c++23
+
+# Sort #includes by following
+# https://google.github.io/styleguide/cppguide.html#Names_and_Order_of_Includes
+#
+# ref: https://clang.llvm.org/docs/ClangFormatStyleOptions.html#includeblocks
+IncludeBlocks: Regroup
+# ref: https://clang.llvm.org/docs/ClangFormatStyleOptions.html#includecategories
+IncludeCategories:
+  # The win32 api has all sorts of implicit include order dependencies :-/
+  # Give a few headers special priorities that make sure they appear before
+  # all other headers.
+  - Regex:           '^<objbase\.h>' # This has to be before initguid.h.
+    Priority:        1
+  - Regex:           '^<(atlbase|initguid|mmdeviceapi|ocidl|ole2|shobjidl|tchar|unknwn|windows|winsock2|winternl|ws2tcpip)\.h>'
+    Priority:        2
+  # UIAutomation*.h needs to be after base/win/atl.h.
+  # Note the low priority number.
+  - Regex:           '^<UIAutomation.*\.h>'
+    Priority:        6
+  # Other C system headers.
+  - Regex:           '^<.*\.h>'
+    Priority:        3
+  # C++ standard library headers.
+  - Regex:           '^<.*>'
+    Priority:        4
+  # windows_h_disallowed.h should appear last. Note the low priority number.
+  - Regex:           '"(.*/)?windows_h_disallowed\.h"'
+    Priority:        7
+  # Other libraries.
+  - Regex:           '.*'
+    Priority:        5
+# ref: https://clang.llvm.org/docs/ClangFormatStyleOptions.html#includeismainregex
+IncludeIsMainRegex: "\
+(_(32|64|android|apple|chromeos|freebsd|fuchsia|fuzzer|ios|linux|mac|openbsd|posix|stubs?|win))?\
+(_(unit|browser|perf|interactive_ui)?tests?)?$"
diff --git a/examples/ios/host/main.cc b/examples/ios/host/main.cc
index 1f244ef..e5de26f 100644
--- a/examples/ios/host/main.cc
+++ b/examples/ios/host/main.cc
@@ -3,6 +3,7 @@
 // found in the LICENSE file.
 
 #include <stdlib.h>
+
 #include <iostream>
 #include <string>
 
diff --git a/examples/simple_build/hello_shared.cc b/examples/simple_build/hello_shared.cc
index d777cbe..8e6edc4 100644
--- a/examples/simple_build/hello_shared.cc
+++ b/examples/simple_build/hello_shared.cc
@@ -3,6 +3,7 @@
 // found in the LICENSE file.
 
 #include "hello_shared.h"
+
 #include "hello_static.h"
 
 const char* GetSharedText() {
diff --git a/src/base/command_line.h b/src/base/command_line.h
index ba30749..2e0cb3b 100644
--- a/src/base/command_line.h
+++ b/src/base/command_line.h
@@ -16,6 +16,7 @@
 #define BASE_COMMAND_LINE_H_
 
 #include <stddef.h>
+
 #include <map>
 #include <string>
 #include <string_view>
diff --git a/src/base/files/file.cc b/src/base/files/file.cc
index 88cfecb..7909d26 100644
--- a/src/base/files/file.cc
+++ b/src/base/files/file.cc
@@ -3,6 +3,7 @@
 // found in the LICENSE file.
 
 #include "base/files/file.h"
+
 #include "base/files/file_path.h"
 #include "util/build_config.h"
 
diff --git a/src/base/files/file_win.cc b/src/base/files/file_win.cc
index c58e071..7260f00 100644
--- a/src/base/files/file_win.cc
+++ b/src/base/files/file_win.cc
@@ -4,14 +4,14 @@
 
 #include "base/files/file.h"
 
+#include <windows.h>
+
 #include <io.h>
 #include <stdint.h>
 
 #include "base/logging.h"
 #include "base/win/win_util.h"
 
-#include <windows.h>
-
 namespace base {
 
 // Make sure our Whence mappings match the system headers.
diff --git a/src/base/files/platform_file.h b/src/base/files/platform_file.h
index d3229a6..eb2889f 100644
--- a/src/base/files/platform_file.h
+++ b/src/base/files/platform_file.h
@@ -10,6 +10,7 @@
 
 #if defined(OS_WIN)
 #include <windows.h>
+
 #include "base/win/scoped_handle.h"
 #endif
 
diff --git a/src/base/logging.cc b/src/base/logging.cc
index 2e1dc6e..0fb393a 100644
--- a/src/base/logging.cc
+++ b/src/base/logging.cc
@@ -14,8 +14,9 @@
 #include "util/build_config.h"
 
 #if defined(OS_WIN)
-#include <io.h>
 #include <windows.h>
+
+#include <io.h>
 // Windows warns on using write().  It prefers _write().
 #define write(fd, buf, count) _write(fd, buf, static_cast<unsigned int>(count))
 // Windows doesn't define STDERR_FILENO.  Define it here.
diff --git a/src/base/posix/file_descriptor_shuffle.cc b/src/base/posix/file_descriptor_shuffle.cc
index f628bec..a9b8fad 100644
--- a/src/base/posix/file_descriptor_shuffle.cc
+++ b/src/base/posix/file_descriptor_shuffle.cc
@@ -6,6 +6,7 @@
 
 #include <stddef.h>
 #include <unistd.h>
+
 #include <ostream>
 
 #include "base/logging.h"
diff --git a/src/base/win/registry.h b/src/base/win/registry.h
index 6457d34..ffab832 100644
--- a/src/base/win/registry.h
+++ b/src/base/win/registry.h
@@ -5,8 +5,10 @@
 #ifndef BASE_WIN_REGISTRY_H_
 #define BASE_WIN_REGISTRY_H_
 
-#include <stdint.h>
 #include <windows.h>
+
+#include <stdint.h>
+
 #include <string>
 #include <vector>
 
diff --git a/src/base/win/scoped_handle.cc b/src/base/win/scoped_handle.cc
index cc034af..26a96a5 100644
--- a/src/base/win/scoped_handle.cc
+++ b/src/base/win/scoped_handle.cc
@@ -3,6 +3,7 @@
 // found in the LICENSE file.
 
 #include "base/win/scoped_handle.h"
+
 #include <windows.h>
 
 namespace base {
diff --git a/src/gn/binary_target_generator_unittest.cc b/src/gn/binary_target_generator_unittest.cc
index 2a1de74..1e027c1 100644
--- a/src/gn/binary_target_generator_unittest.cc
+++ b/src/gn/binary_target_generator_unittest.cc
@@ -3,6 +3,7 @@
 // found in the LICENSE file.
 
 #include "gn/binary_target_generator.h"
+
 #include "gn/err.h"
 #include "gn/label_pattern.h"
 #include "gn/scheduler.h"
diff --git a/src/gn/builder.cc b/src/gn/builder.cc
index aca80d7..cdcf422 100644
--- a/src/gn/builder.cc
+++ b/src/gn/builder.cc
@@ -5,6 +5,7 @@
 #include "gn/builder.h"
 
 #include <stddef.h>
+
 #include <algorithm>
 #include <utility>
 
diff --git a/src/gn/builder_record_map_unittest.cc b/src/gn/builder_record_map_unittest.cc
index b26ed5c..ddee920 100644
--- a/src/gn/builder_record_map_unittest.cc
+++ b/src/gn/builder_record_map_unittest.cc
@@ -2,6 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 
 #include "gn/builder_record_map.h"
+
 #include "gn/builder_record.h"
 #include "gn/label.h"
 #include "gn/source_dir.h"
diff --git a/src/gn/builder_unittest.cc b/src/gn/builder_unittest.cc
index 54d9f5e..1b38d0a 100644
--- a/src/gn/builder_unittest.cc
+++ b/src/gn/builder_unittest.cc
@@ -2,10 +2,11 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+#include "gn/builder.h"
+
 #include <algorithm>
 #include <memory>
 
-#include "gn/builder.h"
 #include "gn/config.h"
 #include "gn/loader.h"
 #include "gn/target.h"
diff --git a/src/gn/builtin_tool.cc b/src/gn/builtin_tool.cc
index e9f17ef..1159a3e 100644
--- a/src/gn/builtin_tool.cc
+++ b/src/gn/builtin_tool.cc
@@ -3,6 +3,7 @@
 // found in the LICENSE file.
 
 #include "gn/builtin_tool.h"
+
 #include "base/logging.h"
 #include "gn/target.h"
 
diff --git a/src/gn/bundle_data_unittest.cc b/src/gn/bundle_data_unittest.cc
index e642ef4..443a28c 100644
--- a/src/gn/bundle_data_unittest.cc
+++ b/src/gn/bundle_data_unittest.cc
@@ -3,6 +3,7 @@
 // found in the LICENSE file.
 
 #include "gn/bundle_data.h"
+
 #include "util/test/test.h"
 
 TEST(BundleDataTest, GetAssetsCatalogDirectory) {
diff --git a/src/gn/c_include_iterator_unittest.cc b/src/gn/c_include_iterator_unittest.cc
index f7b6c85..991f3f8 100644
--- a/src/gn/c_include_iterator_unittest.cc
+++ b/src/gn/c_include_iterator_unittest.cc
@@ -2,9 +2,10 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+#include "gn/c_include_iterator.h"
+
 #include <stddef.h>
 
-#include "gn/c_include_iterator.h"
 #include "gn/input_file.h"
 #include "gn/location.h"
 #include "util/test/test.h"
diff --git a/src/gn/commands_unittest.cc b/src/gn/commands_unittest.cc
index 6fbe9ab..5f241ba 100644
--- a/src/gn/commands_unittest.cc
+++ b/src/gn/commands_unittest.cc
@@ -2,11 +2,12 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+#include "gn/commands.h"
+
 #include <stddef.h>
 
 #include "base/command_line.h"
 #include "base/values.h"
-#include "gn/commands.h"
 #include "gn/label_pattern.h"
 #include "gn/standard_out.h"
 #include "gn/target.h"
diff --git a/src/gn/config_unittest.cc b/src/gn/config_unittest.cc
index ec7ef3c..5d48b1f 100644
--- a/src/gn/config_unittest.cc
+++ b/src/gn/config_unittest.cc
@@ -3,6 +3,7 @@
 // found in the LICENSE file.
 
 #include "gn/config.h"
+
 #include "gn/test_with_scope.h"
 #include "util/test/test.h"
 
diff --git a/src/gn/config_values_extractors_unittest.cc b/src/gn/config_values_extractors_unittest.cc
index 3b09076..aa75b84 100644
--- a/src/gn/config_values_extractors_unittest.cc
+++ b/src/gn/config_values_extractors_unittest.cc
@@ -2,10 +2,11 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+#include "gn/config_values_extractors.h"
+
 #include <sstream>
 
 #include "gn/config.h"
-#include "gn/config_values_extractors.h"
 #include "gn/config_values_generator.h"
 #include "gn/target.h"
 #include "gn/test_with_scope.h"
diff --git a/src/gn/desc_builder.cc b/src/gn/desc_builder.cc
index e04af12..4a4eebf 100644
--- a/src/gn/desc_builder.cc
+++ b/src/gn/desc_builder.cc
@@ -2,6 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+#include "gn/desc_builder.h"
+
 #include <memory>
 #include <set>
 
@@ -11,7 +13,6 @@
 #include "gn/config.h"
 #include "gn/config_values_extractors.h"
 #include "gn/deps_iterator.h"
-#include "gn/desc_builder.h"
 #include "gn/input_file.h"
 #include "gn/parse_tree.h"
 #include "gn/resolved_target_data.h"
diff --git a/src/gn/escape_unittest.cc b/src/gn/escape_unittest.cc
index 004498e..24c7795 100644
--- a/src/gn/escape_unittest.cc
+++ b/src/gn/escape_unittest.cc
@@ -3,6 +3,7 @@
 // found in the LICENSE file.
 
 #include "gn/escape.h"
+
 #include "gn/string_output_buffer.h"
 #include "util/test/test.h"
 
diff --git a/src/gn/ffi/scope.cc b/src/gn/ffi/scope.cc
index 1816803..dec4d52 100644
--- a/src/gn/ffi/scope.cc
+++ b/src/gn/ffi/scope.cc
@@ -2,11 +2,12 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+#include "gn/ffi/scope.h"
+
 #include <ranges>
 #include <vector>
 
 #include "gn/ffi/bridge.h"
-#include "gn/ffi/scope.h"
 #include "gn/ffi/slice.h"
 #include "gn/range_utils.h"
 #include "gn/scope.h"
diff --git a/src/gn/file_writer.cc b/src/gn/file_writer.cc
index 1733ae6..1185cbe 100644
--- a/src/gn/file_writer.cc
+++ b/src/gn/file_writer.cc
@@ -10,11 +10,13 @@
 
 #if defined(OS_WIN)
 #include <windows.h>
+
 #include "base/strings/utf_string_conversions.h"
 #include "util/sys_info.h"
 #else
 #include <fcntl.h>
 #include <unistd.h>
+
 #include "base/posix/eintr_wrapper.h"
 #endif
 
diff --git a/src/gn/file_writer_unittest.cc b/src/gn/file_writer_unittest.cc
index a7ddf75..3e03f14 100644
--- a/src/gn/file_writer_unittest.cc
+++ b/src/gn/file_writer_unittest.cc
@@ -7,7 +7,6 @@
 #include "base/files/file_path.h"
 #include "base/files/scoped_temp_dir.h"
 #include "gn/filesystem_utils.h"
-
 #include "util/build_config.h"
 #include "util/sys_info.h"
 #include "util/test/test.h"
diff --git a/src/gn/filesystem_utils.cc b/src/gn/filesystem_utils.cc
index b2772ed..a95a41a 100644
--- a/src/gn/filesystem_utils.cc
+++ b/src/gn/filesystem_utils.cc
@@ -17,8 +17,9 @@
 #include "util/build_config.h"
 
 #if defined(OS_WIN)
-#include <direct.h>
 #include <windows.h>
+
+#include <direct.h>
 #endif
 
 namespace {
diff --git a/src/gn/function_template.cc b/src/gn/function_template.cc
index 92d5419..70f25cb 100644
--- a/src/gn/function_template.cc
+++ b/src/gn/function_template.cc
@@ -3,7 +3,6 @@
 // found in the LICENSE file.
 
 #include "gn/functions.h"
-
 #include "gn/parse_tree.h"
 #include "gn/scope.h"
 #include "gn/template.h"
diff --git a/src/gn/functions.cc b/src/gn/functions.cc
index 4650362..60e293f 100644
--- a/src/gn/functions.cc
+++ b/src/gn/functions.cc
@@ -5,6 +5,7 @@
 #include "gn/functions.h"
 
 #include <stddef.h>
+
 #include <cctype>
 #include <memory>
 #include <utility>
diff --git a/src/gn/functions_target.cc b/src/gn/functions_target.cc
index d7edcbe..9700c65 100644
--- a/src/gn/functions_target.cc
+++ b/src/gn/functions_target.cc
@@ -2,10 +2,9 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "gn/functions.h"
-
 #include "gn/config_values_generator.h"
 #include "gn/err.h"
+#include "gn/functions.h"
 #include "gn/parse_tree.h"
 #include "gn/scope.h"
 #include "gn/target_generator.h"
diff --git a/src/gn/general_tool.cc b/src/gn/general_tool.cc
index fc8878d..b231592 100644
--- a/src/gn/general_tool.cc
+++ b/src/gn/general_tool.cc
@@ -3,6 +3,7 @@
 // found in the LICENSE file.
 
 #include "gn/general_tool.h"
+
 #include "gn/target.h"
 
 const char* GeneralTool::kGeneralToolStamp = "stamp";
diff --git a/src/gn/gn_main.cc b/src/gn/gn_main.cc
index 75441a6..d5066c7 100644
--- a/src/gn/gn_main.cc
+++ b/src/gn/gn_main.cc
@@ -12,12 +12,11 @@
 #include "gn/location.h"
 #include "gn/standard_out.h"
 #include "gn/switches.h"
+#include "last_commit_position.h"
 #include "util/build_config.h"
 #include "util/msg_loop.h"
 #include "util/sys_info.h"
 
-#include "last_commit_position.h"
-
 namespace {
 
 std::vector<std::string> GetArgs(const base::CommandLine& cmdline) {
diff --git a/src/gn/hash_table_base.h b/src/gn/hash_table_base.h
index cfe194d..951c3c4 100644
--- a/src/gn/hash_table_base.h
+++ b/src/gn/hash_table_base.h
@@ -5,12 +5,13 @@
 #ifndef TOOLS_GN_HASH_TABLE_BASE_H_
 #define TOOLS_GN_HASH_TABLE_BASE_H_
 
-#include "base/compiler_specific.h"
-
 #include <stdlib.h>
+
 #include <type_traits>
 #include <utility>
 
+#include "base/compiler_specific.h"
+
 // IMPORTANT DISCLAIMER:
 //
 // THIS IS *NOT* A GENERAL PURPOSE HASH TABLE TEMPLATE. INSTEAD, IT CAN
diff --git a/src/gn/hash_table_base_unittest.cc b/src/gn/hash_table_base_unittest.cc
index 17eaf98..8929e6c 100644
--- a/src/gn/hash_table_base_unittest.cc
+++ b/src/gn/hash_table_base_unittest.cc
@@ -4,11 +4,11 @@
 
 #include "hash_table_base.h"
 
-#include "util/test/test.h"
-
 #include <algorithm>
 #include <vector>
 
+#include "util/test/test.h"
+
 // This unit-test is also used to illustrate how to use HashTableBase<>
 // in a concrete way. Here, each node is a simple pointer to a Int class
 // that wraps a simple integer, but also keeps tracks of
diff --git a/src/gn/header_checker_unittest.cc b/src/gn/header_checker_unittest.cc
index a8ea4a0..21e8f8b 100644
--- a/src/gn/header_checker_unittest.cc
+++ b/src/gn/header_checker_unittest.cc
@@ -2,10 +2,11 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+#include "gn/header_checker.h"
+
 #include <ostream>
 #include <vector>
 
-#include "gn/header_checker.h"
 #include "gn/scheduler.h"
 #include "gn/target.h"
 #include "gn/test_with_scheduler.h"
diff --git a/src/gn/json_project_writer_unittest.cc b/src/gn/json_project_writer_unittest.cc
index b56c6f5..b1a3776 100644
--- a/src/gn/json_project_writer_unittest.cc
+++ b/src/gn/json_project_writer_unittest.cc
@@ -3,6 +3,7 @@
 // found in the LICENSE file.
 
 #include "gn/json_project_writer.h"
+
 #include "base/strings/string_util.h"
 #include "gn/substitution_list.h"
 #include "gn/target.h"
diff --git a/src/gn/label.h b/src/gn/label.h
index 7adca69..a831804 100644
--- a/src/gn/label.h
+++ b/src/gn/label.h
@@ -5,11 +5,11 @@
 #ifndef TOOLS_GN_LABEL_H_
 #define TOOLS_GN_LABEL_H_
 
+#include <stddef.h>
+
 #include <string_view>
 #include <tuple>
 
-#include <stddef.h>
-
 #include "gn/source_dir.h"
 #include "gn/string_atom.h"
 
diff --git a/src/gn/label_pattern_unittest.cc b/src/gn/label_pattern_unittest.cc
index a33b49f..d9ff5f3 100644
--- a/src/gn/label_pattern_unittest.cc
+++ b/src/gn/label_pattern_unittest.cc
@@ -2,12 +2,13 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+#include "gn/label_pattern.h"
+
 #include <stddef.h>
 
 #include <iterator>
 
 #include "gn/err.h"
-#include "gn/label_pattern.h"
 #include "gn/value.h"
 #include "util/test/test.h"
 
diff --git a/src/gn/label_unittest.cc b/src/gn/label_unittest.cc
index 3cfb85c..3cdad5f 100644
--- a/src/gn/label_unittest.cc
+++ b/src/gn/label_unittest.cc
@@ -2,12 +2,13 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+#include "gn/label.h"
+
 #include <stddef.h>
 
 #include <iterator>
 
 #include "gn/err.h"
-#include "gn/label.h"
 #include "gn/value.h"
 #include "util/build_config.h"
 #include "util/test/test.h"
diff --git a/src/gn/loader_unittest.cc b/src/gn/loader_unittest.cc
index 4189315..7c6a1b5 100644
--- a/src/gn/loader_unittest.cc
+++ b/src/gn/loader_unittest.cc
@@ -2,6 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+#include "gn/loader.h"
+
 #include <functional>
 #include <map>
 #include <memory>
@@ -10,7 +12,6 @@
 
 #include "gn/build_settings.h"
 #include "gn/err.h"
-#include "gn/loader.h"
 #include "gn/parse_tree.h"
 #include "gn/parser.h"
 #include "gn/scheduler.h"
diff --git a/src/gn/metadata_unittest.cc b/src/gn/metadata_unittest.cc
index ab14ba6..d9f2037 100644
--- a/src/gn/metadata_unittest.cc
+++ b/src/gn/metadata_unittest.cc
@@ -3,6 +3,7 @@
 // found in the LICENSE file.
 
 #include "gn/metadata.h"
+
 #include "gn/test_with_scope.h"
 #include "util/test/test.h"
 
diff --git a/src/gn/ninja_action_target_writer_unittest.cc b/src/gn/ninja_action_target_writer_unittest.cc
index e855582..f6aea9e 100644
--- a/src/gn/ninja_action_target_writer_unittest.cc
+++ b/src/gn/ninja_action_target_writer_unittest.cc
@@ -2,11 +2,12 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+#include "gn/ninja_action_target_writer.h"
+
 #include <algorithm>
 #include <sstream>
 
 #include "gn/config.h"
-#include "gn/ninja_action_target_writer.h"
 #include "gn/pool.h"
 #include "gn/substitution_list.h"
 #include "gn/target.h"
diff --git a/src/gn/ninja_build_writer_unittest.cc b/src/gn/ninja_build_writer_unittest.cc
index 493ba40..d8bd895 100644
--- a/src/gn/ninja_build_writer_unittest.cc
+++ b/src/gn/ninja_build_writer_unittest.cc
@@ -2,12 +2,13 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+#include "gn/ninja_build_writer.h"
+
 #include <fstream>
 #include <sstream>
 
 #include "base/command_line.h"
 #include "base/files/file_util.h"
-#include "gn/ninja_build_writer.h"
 #include "gn/pool.h"
 #include "gn/scheduler.h"
 #include "gn/switches.h"
diff --git a/src/gn/ninja_copy_target_writer_unittest.cc b/src/gn/ninja_copy_target_writer_unittest.cc
index c81fa0b..9aa2170 100644
--- a/src/gn/ninja_copy_target_writer_unittest.cc
+++ b/src/gn/ninja_copy_target_writer_unittest.cc
@@ -2,10 +2,11 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+#include "gn/ninja_copy_target_writer.h"
+
 #include <algorithm>
 #include <sstream>
 
-#include "gn/ninja_copy_target_writer.h"
 #include "gn/substitution_list.h"
 #include "gn/target.h"
 #include "gn/test_with_scope.h"
diff --git a/src/gn/ninja_group_target_writer_unittest.cc b/src/gn/ninja_group_target_writer_unittest.cc
index ec9f72d..5337f8a 100644
--- a/src/gn/ninja_group_target_writer_unittest.cc
+++ b/src/gn/ninja_group_target_writer_unittest.cc
@@ -3,6 +3,7 @@
 // found in the LICENSE file.
 
 #include "gn/ninja_group_target_writer.h"
+
 #include "gn/target.h"
 #include "gn/test_with_scope.h"
 #include "util/test/test.h"
diff --git a/src/gn/ninja_target_writer_unittest.cc b/src/gn/ninja_target_writer_unittest.cc
index a8662d7..2986903 100644
--- a/src/gn/ninja_target_writer_unittest.cc
+++ b/src/gn/ninja_target_writer_unittest.cc
@@ -2,11 +2,12 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+#include "gn/ninja_target_writer.h"
+
 #include <sstream>
 
 #include "gn/ninja_action_target_writer.h"
 #include "gn/ninja_group_target_writer.h"
-#include "gn/ninja_target_writer.h"
 #include "gn/target.h"
 #include "gn/test_with_scope.h"
 #include "util/test/test.h"
diff --git a/src/gn/ninja_toolchain_writer_unittest.cc b/src/gn/ninja_toolchain_writer_unittest.cc
index ba58326..7f1c535 100644
--- a/src/gn/ninja_toolchain_writer_unittest.cc
+++ b/src/gn/ninja_toolchain_writer_unittest.cc
@@ -2,9 +2,10 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+#include "gn/ninja_toolchain_writer.h"
+
 #include <sstream>
 
-#include "gn/ninja_toolchain_writer.h"
 #include "gn/test_with_scope.h"
 #include "util/test/test.h"
 
diff --git a/src/gn/operators.cc b/src/gn/operators.cc
index 93cbe72..c9f24a7 100644
--- a/src/gn/operators.cc
+++ b/src/gn/operators.cc
@@ -5,6 +5,7 @@
 #include "gn/operators.h"
 
 #include <stddef.h>
+
 #include <algorithm>
 #include <iterator>
 
diff --git a/src/gn/parser_unittest.cc b/src/gn/parser_unittest.cc
index 6f85589..7e3f0a6 100644
--- a/src/gn/parser_unittest.cc
+++ b/src/gn/parser_unittest.cc
@@ -2,10 +2,11 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+#include "gn/parser.h"
+
 #include <sstream>
 
 #include "gn/input_file.h"
-#include "gn/parser.h"
 #include "gn/tokenizer.h"
 #include "util/test/test.h"
 
diff --git a/src/gn/path_output_unittest.cc b/src/gn/path_output_unittest.cc
index 1debb64..c441191 100644
--- a/src/gn/path_output_unittest.cc
+++ b/src/gn/path_output_unittest.cc
@@ -2,11 +2,12 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+#include "gn/path_output.h"
+
 #include <sstream>
 
 #include "base/files/file_path.h"
 #include "gn/output_file.h"
-#include "gn/path_output.h"
 #include "gn/source_dir.h"
 #include "gn/source_file.h"
 #include "util/build_config.h"
diff --git a/src/gn/pattern_unittest.cc b/src/gn/pattern_unittest.cc
index 4774003..9c77f20 100644
--- a/src/gn/pattern_unittest.cc
+++ b/src/gn/pattern_unittest.cc
@@ -2,11 +2,12 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+#include "gn/pattern.h"
+
 #include <stddef.h>
 
 #include <iterator>
 
-#include "gn/pattern.h"
 #include "util/test/test.h"
 
 namespace {
diff --git a/src/gn/pointer_set_unittest.cc b/src/gn/pointer_set_unittest.cc
index e71a97d..d2fde61 100644
--- a/src/gn/pointer_set_unittest.cc
+++ b/src/gn/pointer_set_unittest.cc
@@ -3,10 +3,11 @@
 // found in the LICENSE file.
 
 #include "gn/pointer_set.h"
-#include "util/test/test.h"
 
 #include <algorithm>
 
+#include "util/test/test.h"
+
 struct Foo {
   int x;
 };
diff --git a/src/gn/qt_creator_writer.cc b/src/gn/qt_creator_writer.cc
index 94fed8f..6ea1af5 100644
--- a/src/gn/qt_creator_writer.cc
+++ b/src/gn/qt_creator_writer.cc
@@ -12,7 +12,6 @@
 #include "base/files/file_path.h"
 #include "base/files/file_util.h"
 #include "base/strings/utf_string_conversions.h"
-
 #include "gn/builder.h"
 #include "gn/config_values_extractors.h"
 #include "gn/deps_iterator.h"
diff --git a/src/gn/resolved_target_deps.h b/src/gn/resolved_target_deps.h
index 57e961f..069f36e 100644
--- a/src/gn/resolved_target_deps.h
+++ b/src/gn/resolved_target_deps.h
@@ -5,11 +5,11 @@
 #ifndef TOOLS_GN_RESOLVED_TARGET_DEPS_H_
 #define TOOLS_GN_RESOLVED_TARGET_DEPS_H_
 
+#include <memory>
+
 #include "base/containers/span.h"
 #include "gn/label_ptr.h"
 
-#include <memory>
-
 // A class used to record the dependencies of a given Target in
 // a way that is much more efficient to iterate over than having three
 // separate LabelTargetVector instances. Technically equivalent to
diff --git a/src/gn/resolved_target_deps_unittest.cc b/src/gn/resolved_target_deps_unittest.cc
index 74d623d..cdd137a 100644
--- a/src/gn/resolved_target_deps_unittest.cc
+++ b/src/gn/resolved_target_deps_unittest.cc
@@ -3,6 +3,7 @@
 // found in the LICENSE file.
 
 #include "gn/resolved_target_deps.h"
+
 #include "gn/test_with_scope.h"
 #include "util/test/test.h"
 
diff --git a/src/gn/runtime_deps_unittest.cc b/src/gn/runtime_deps_unittest.cc
index 5c1a281..675a223 100644
--- a/src/gn/runtime_deps_unittest.cc
+++ b/src/gn/runtime_deps_unittest.cc
@@ -2,10 +2,11 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+#include "gn/runtime_deps.h"
+
 #include <stddef.h>
 
 #include "base/stl_util.h"
-#include "gn/runtime_deps.h"
 #include "gn/scheduler.h"
 #include "gn/target.h"
 #include "gn/test_with_scheduler.h"
diff --git a/src/gn/rust_project_writer_unittest.cc b/src/gn/rust_project_writer_unittest.cc
index 5532a72..2123ebe 100644
--- a/src/gn/rust_project_writer_unittest.cc
+++ b/src/gn/rust_project_writer_unittest.cc
@@ -3,6 +3,7 @@
 // found in the LICENSE file.
 
 #include "gn/rust_project_writer.h"
+
 #include "base/files/file_path.h"
 #include "base/strings/string_util.h"
 #include "gn/filesystem_utils.h"
diff --git a/src/gn/rust_values.cc b/src/gn/rust_values.cc
index a6da4ee..5185465 100644
--- a/src/gn/rust_values.cc
+++ b/src/gn/rust_values.cc
@@ -3,6 +3,7 @@
 // found in the LICENSE file.
 
 #include "gn/rust_values.h"
+
 #include "gn/rust_tool.h"
 #include "gn/target.h"
 
diff --git a/src/gn/scope_per_file_provider.cc b/src/gn/scope_per_file_provider.cc
index 848c2a1..520ef0a 100644
--- a/src/gn/scope_per_file_provider.cc
+++ b/src/gn/scope_per_file_provider.cc
@@ -12,7 +12,6 @@
 #include "gn/source_file.h"
 #include "gn/value.h"
 #include "gn/variables.h"
-
 #include "last_commit_position.h"
 
 ScopePerFileProvider::ScopePerFileProvider(Scope* scope,
diff --git a/src/gn/scope_per_file_provider_unittest.cc b/src/gn/scope_per_file_provider_unittest.cc
index 18f610e..6c88d8d 100644
--- a/src/gn/scope_per_file_provider_unittest.cc
+++ b/src/gn/scope_per_file_provider_unittest.cc
@@ -3,6 +3,7 @@
 // found in the LICENSE file.
 
 #include "gn/scope_per_file_provider.h"
+
 #include "gn/args.h"
 #include "gn/build_settings.h"
 #include "gn/settings.h"
diff --git a/src/gn/source_dir.h b/src/gn/source_dir.h
index b01ef02..e986925 100644
--- a/src/gn/source_dir.h
+++ b/src/gn/source_dir.h
@@ -13,7 +13,6 @@
 
 #include "base/files/file_path.h"
 #include "base/logging.h"
-
 #include "gn/string_atom.h"
 
 class Err;
diff --git a/src/gn/source_dir_unittest.cc b/src/gn/source_dir_unittest.cc
index 3623e29..19d1b44 100644
--- a/src/gn/source_dir_unittest.cc
+++ b/src/gn/source_dir_unittest.cc
@@ -3,6 +3,7 @@
 // found in the LICENSE file.
 
 #include "gn/source_dir.h"
+
 #include "gn/err.h"
 #include "gn/source_file.h"
 #include "gn/value.h"
diff --git a/src/gn/source_file.cc b/src/gn/source_file.cc
index 195f0fb..803c28e 100644
--- a/src/gn/source_file.cc
+++ b/src/gn/source_file.cc
@@ -2,14 +2,14 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include <string.h>
-
-#include "gn/input_file.h"
-#include "gn/parse_tree.h"
 #include "gn/source_file.h"
 
+#include <string.h>
+
 #include "base/logging.h"
 #include "gn/filesystem_utils.h"
+#include "gn/input_file.h"
+#include "gn/parse_tree.h"
 #include "gn/source_dir.h"
 #include "util/build_config.h"
 
diff --git a/src/gn/source_file.h b/src/gn/source_file.h
index c7a6c80..b2068a2 100644
--- a/src/gn/source_file.h
+++ b/src/gn/source_file.h
@@ -14,7 +14,6 @@
 #include "base/containers/flat_set.h"
 #include "base/files/file_path.h"
 #include "base/logging.h"
-
 #include "gn/string_atom.h"
 
 class SourceDir;
diff --git a/src/gn/string_atom_unittest.cc b/src/gn/string_atom_unittest.cc
index ba151e3..0e820a6 100644
--- a/src/gn/string_atom_unittest.cc
+++ b/src/gn/string_atom_unittest.cc
@@ -4,14 +4,14 @@
 
 #include "gn/string_atom.h"
 
-#include "util/test/test.h"
-
 #include <algorithm>
 #include <array>
 #include <set>
 #include <string>
 #include <vector>
 
+#include "util/test/test.h"
+
 TEST(StringAtomTest, EmptyString) {
   StringAtom key1;
   StringAtom key2("");
diff --git a/src/gn/string_output_buffer.cc b/src/gn/string_output_buffer.cc
index c5d91ff..2435fa1 100644
--- a/src/gn/string_output_buffer.cc
+++ b/src/gn/string_output_buffer.cc
@@ -4,14 +4,14 @@
 
 #include "gn/string_output_buffer.h"
 
+#include <fstream>
+
 #include "base/files/file_path.h"
 #include "base/files/file_util.h"
 #include "gn/err.h"
 #include "gn/file_writer.h"
 #include "gn/filesystem_utils.h"
 
-#include <fstream>
-
 std::string StringOutputBuffer::str() const {
   std::string result;
   size_t data_size = size();
diff --git a/src/gn/string_utils.cc b/src/gn/string_utils.cc
index bf8f8ba..2c95709 100644
--- a/src/gn/string_utils.cc
+++ b/src/gn/string_utils.cc
@@ -5,6 +5,7 @@
 #include "gn/string_utils.h"
 
 #include <stddef.h>
+
 #include <cctype>
 
 #include "base/strings/string_number_conversions.h"
diff --git a/src/gn/substitution_writer_unittest.cc b/src/gn/substitution_writer_unittest.cc
index 5ea595e..42988de 100644
--- a/src/gn/substitution_writer_unittest.cc
+++ b/src/gn/substitution_writer_unittest.cc
@@ -2,6 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+#include "gn/substitution_writer.h"
+
 #include <sstream>
 
 #include "gn/c_substitution_type.h"
@@ -9,7 +11,6 @@
 #include "gn/escape.h"
 #include "gn/substitution_list.h"
 #include "gn/substitution_pattern.h"
-#include "gn/substitution_writer.h"
 #include "gn/target.h"
 #include "gn/test_with_scope.h"
 #include "util/build_config.h"
diff --git a/src/gn/target_public_pair_unittest.cc b/src/gn/target_public_pair_unittest.cc
index 43060c5..59e3ce4 100644
--- a/src/gn/target_public_pair_unittest.cc
+++ b/src/gn/target_public_pair_unittest.cc
@@ -3,6 +3,7 @@
 // found in the LICENSE file.
 
 #include "gn/target_public_pair.h"
+
 #include "gn/target.h"
 #include "util/test/test.h"
 
diff --git a/src/gn/tokenizer_unittest.cc b/src/gn/tokenizer_unittest.cc
index e7e9c4a..2cd5fd0 100644
--- a/src/gn/tokenizer_unittest.cc
+++ b/src/gn/tokenizer_unittest.cc
@@ -2,11 +2,12 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+#include "gn/tokenizer.h"
+
 #include <stddef.h>
 
 #include "gn/input_file.h"
 #include "gn/token.h"
-#include "gn/tokenizer.h"
 #include "util/test/test.h"
 
 namespace {
diff --git a/src/gn/toolchain.cc b/src/gn/toolchain.cc
index a656184..334277f 100644
--- a/src/gn/toolchain.cc
+++ b/src/gn/toolchain.cc
@@ -6,6 +6,7 @@
 
 #include <stddef.h>
 #include <string.h>
+
 #include <utility>
 
 #include "base/logging.h"
diff --git a/src/gn/value.cc b/src/gn/value.cc
index 2b7a673..5e71a9b 100644
--- a/src/gn/value.cc
+++ b/src/gn/value.cc
@@ -5,6 +5,7 @@
 #include "gn/value.h"
 
 #include <stddef.h>
+
 #include <utility>
 
 #include "base/strings/string_number_conversions.h"
diff --git a/src/gn/value_unittest.cc b/src/gn/value_unittest.cc
index 520ee7d..9b90467 100644
--- a/src/gn/value_unittest.cc
+++ b/src/gn/value_unittest.cc
@@ -2,10 +2,11 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+#include "gn/value.h"
+
 #include <stdint.h>
 
 #include "gn/test_with_scope.h"
-#include "gn/value.h"
 #include "util/test/test.h"
 
 TEST(Value, ToString) {
diff --git a/src/gn/vector_utils_unittest.cc b/src/gn/vector_utils_unittest.cc
index c7cee01..089111b 100644
--- a/src/gn/vector_utils_unittest.cc
+++ b/src/gn/vector_utils_unittest.cc
@@ -4,10 +4,10 @@
 
 #include "gn/vector_utils.h"
 
-#include "util/test/test.h"
-
 #include <string>
 
+#include "util/test/test.h"
+
 TEST(VectorSetSorter, AsVectorWithStrings) {
   VectorSetSorter<std::string> sorter;
 
diff --git a/src/gn/version.cc b/src/gn/version.cc
index 0ed25f2..57e1054 100644
--- a/src/gn/version.cc
+++ b/src/gn/version.cc
@@ -3,6 +3,7 @@
 // found in the LICENSE file.
 
 #include "gn/version.h"
+
 #include <iostream>
 #include <string_view>
 #include <tuple>
diff --git a/src/gn/visibility_unittest.cc b/src/gn/visibility_unittest.cc
index 0122119..6544bc4 100644
--- a/src/gn/visibility_unittest.cc
+++ b/src/gn/visibility_unittest.cc
@@ -3,6 +3,7 @@
 // found in the LICENSE file.
 
 #include "gn/visibility.h"
+
 #include "gn/err.h"
 #include "gn/label.h"
 #include "gn/scope.h"
diff --git a/src/util/sys_info.cc b/src/util/sys_info.cc
index 386ba8b..e6c5e86 100644
--- a/src/util/sys_info.cc
+++ b/src/util/sys_info.cc
@@ -19,6 +19,7 @@
 
 #if defined(OS_WIN)
 #include <windows.h>
+
 #include "base/win/registry.h"
 #endif