910e62b5创建于 1月15日历史提交
#!/bin/bash

# Copyright 2025 The Chromium Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

# An example script to apply successful Spanifier rewrites.
#
# Prerequisites:
# --------------
# Populate ~/scratch/patch_{}.{out,diff,pass,fail} files by running:
# //tools/clang/scripts/evaluate_patches.py
# with patch_limit = 9999

echo "" > output.txt
for f in ~/scratch/patch_*.pass
do
    # Extract index from patch_{index}.pass
    index=$(echo $f | sed 's/.*patch_\(.*\).pass/\1/')
    echo "Processing patch_$index"

    # Aggregate the replacements.
    cat ${f/.pass/.txt} >> output.txt

    # A new line to deal with the missing '\n' at the end of the file.
    echo "" >> output.txt
done

# The output contains lines with the format:
# r:::{0}:::{1}:::{2}:::{3}
# We need to sort numerically by {1}
# {0} is the file path
# {1} is the file offset
# {2} is the replacement length
# {3} is the replacement text

# We must sort by {1} numerically in descending order to avoid conflict when
# applying replacements.

# Use perl
perl -ane '
    $line = $_;
    @fields = split(/:::/, $line);
    print $fields[1] . " " . $line;
' output.txt \
  | sort -rn \
  | cut -d ' ' -f 2- \
  | ./tools/clang/scripts/apply_edits.py -p ./out/linux