Skip to content

Commit 6d87ca1

Browse files
committed
chore: auto fetch include analysis output in more scripts if not provided
1 parent 36ec6c1 commit 6d87ca1

5 files changed

Lines changed: 38 additions & 9 deletions

File tree

include_analysis_diff.py

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
from extract_archived_include_analysis import extract_include_analysis
1313
from include_analysis import IncludeAnalysisOutput, ParseError, parse_raw_include_analysis_output
1414
from suggest_include_changes import filter_filenames
15+
from utils import get_latest_include_analysis
1516

1617
CHROMIUM_INCLUDE_ANALYSIS_BASE_URL = "https://commondatastorage.googleapis.com/chromium-browser-clang"
1718
HREF_REGEX = re.compile(r"<a href=\"(.*?)\">", re.DOTALL)
@@ -243,10 +244,7 @@ def main():
243244
if args.include_analysis_output:
244245
raw_include_analysis = args.include_analysis_output.read()
245246
else:
246-
include_analysis_response = urllib.request.urlopen(
247-
"https://commondatastorage.googleapis.com/chromium-browser-clang/include-analysis.js"
248-
)
249-
raw_include_analysis = include_analysis_response.read().decode("utf8")
247+
raw_include_analysis = get_latest_include_analysis()
250248

251249
try:
252250
include_analysis = parse_raw_include_analysis_output(raw_include_analysis)

list_includers.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
get_include_analysis_edge_includer_size,
1818
get_include_analysis_edge_prevalence,
1919
get_include_analysis_edge_sizes,
20+
get_latest_include_analysis,
2021
load_config,
2122
normalize_include_path,
2223
)
@@ -101,6 +102,7 @@ def main():
101102
parser.add_argument(
102103
"include_analysis_output",
103104
type=argparse.FileType("r"),
105+
nargs="?",
104106
help="The include analysis output to use.",
105107
)
106108
parser.add_argument("filename", help="File to list includers for.")
@@ -126,8 +128,14 @@ def main():
126128
parser.add_argument("--verbose", action="store_true", default=False, help="Enable verbose logging.")
127129
args = parser.parse_args()
128130

131+
# If the user specified an include analysis output file, use that instead of fetching it
132+
if args.include_analysis_output:
133+
raw_include_analysis = args.include_analysis_output.read()
134+
else:
135+
raw_include_analysis = get_latest_include_analysis()
136+
129137
try:
130-
include_analysis = parse_raw_include_analysis_output(args.include_analysis_output.read())
138+
include_analysis = parse_raw_include_analysis_output(raw_include_analysis)
131139
except ParseError as e:
132140
message = str(e)
133141
print("error: Could not parse include analysis output file")

list_transitive_includes.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
get_include_analysis_edge_prevalence,
2020
get_include_analysis_edge_sizes,
2121
get_include_file_size,
22+
get_latest_include_analysis,
2223
load_config,
2324
normalize_include_path,
2425
)
@@ -141,6 +142,7 @@ def main():
141142
parser.add_argument(
142143
"include_analysis_output",
143144
type=argparse.FileType("r"),
145+
nargs="?",
144146
help="The include analysis output to use.",
145147
)
146148
parser.add_argument("filename", help="File to list includes for.")
@@ -177,8 +179,14 @@ def main():
177179
print("error: --apply-changes option requires --include-changes")
178180
return 1
179181

182+
# If the user specified an include analysis output file, use that instead of fetching it
183+
if args.include_analysis_output:
184+
raw_include_analysis = args.include_analysis_output.read()
185+
else:
186+
raw_include_analysis = get_latest_include_analysis()
187+
180188
try:
181-
include_analysis = parse_raw_include_analysis_output(args.include_analysis_output.read())
189+
include_analysis = parse_raw_include_analysis_output(raw_include_analysis)
182190
except ParseError as e:
183191
message = str(e)
184192
print("error: Could not parse include analysis output file")

trace_transitive_include.py

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111

1212
from include_analysis import IncludeAnalysisOutput, ParseError, parse_raw_include_analysis_output
1313
from typing import Iterator, Tuple
14-
from utils import create_graph_from_include_analysis
14+
from utils import create_graph_from_include_analysis, get_latest_include_analysis
1515

1616

1717
def trace_transitive_include(
@@ -33,15 +33,22 @@ def main():
3333
parser.add_argument(
3434
"include_analysis_output",
3535
type=argparse.FileType("r"),
36+
nargs="?",
3637
help="The include analysis output to use.",
3738
)
3839
parser.add_argument("filename", help="File to start the trace from.")
3940
parser.add_argument("header", help="Target header to trace to.")
4041
parser.add_argument("--verbose", action="store_true", default=False, help="Enable verbose logging.")
4142
args = parser.parse_args()
4243

44+
# If the user specified an include analysis output file, use that instead of fetching it
45+
if args.include_analysis_output:
46+
raw_include_analysis = args.include_analysis_output.read()
47+
else:
48+
raw_include_analysis = get_latest_include_analysis()
49+
4350
try:
44-
include_analysis = parse_raw_include_analysis_output(args.include_analysis_output.read())
51+
include_analysis = parse_raw_include_analysis_output(raw_include_analysis)
4552
except ParseError as e:
4653
message = str(e)
4754
print("error: Could not parse include analysis output file")

utils.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import multiprocessing
44
import os
55
import pathlib
6-
import re
6+
import urllib.request
77
from collections import defaultdict
88
from typing import DefaultDict, Dict, List
99

@@ -297,3 +297,11 @@ def normalize_include_path(
297297
_normalized_include_paths[include] = normalized
298298

299299
return _normalized_include_paths[include]
300+
301+
302+
def get_latest_include_analysis():
303+
response = urllib.request.urlopen(
304+
"https://commondatastorage.googleapis.com/chromium-browser-clang/include-analysis.js"
305+
)
306+
307+
return response.read().decode("utf8")

0 commit comments

Comments
 (0)