#!/usr/bin/env python3 # # ===-----------------------------------------------------------------------===# # # Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. # See https://llvm.org/LICENSE.txt for license information. # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception # # ===-----------------------------------------------------------------------===# """ Clang-Tidy Alphabetical Order Checker ===================================== Normalize Clang-Tidy documentation with deterministic sorting for linting/tests. Behavior: - Sort entries in docs/clang-tidy/checks/list.rst csv-table. - Sort key sections in docs/ReleaseNotes.rst. - Detect duplicated entries in 'Changes in existing checks'. Flags: -o/--output Write normalized content to this path instead of updating docs. """ import argparse from collections import defaultdict import io from operator import itemgetter import os import re import sys from typing import ( DefaultDict, Final, Iterable, List, NamedTuple, Optional, Sequence, Tuple, ) # Matches a :doc:`label ` or :doc:`label` reference anywhere in text and # captures the label. Used to sort bullet items alphabetically in ReleaseNotes # items by their label. DOC_LABEL_RN_RE: Final = re.compile(r":doc:`(?P