mirror of
https://github.com/Z3Prover/z3
synced 2025-08-14 14:55:25 +00:00
rename a Python file
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
This commit is contained in:
parent
f5016b4433
commit
30830aae75
1 changed files with 0 additions and 0 deletions
41
scripts/find_non_defined_param_eval_patterns.py
Normal file
41
scripts/find_non_defined_param_eval_patterns.py
Normal file
|
@ -0,0 +1,41 @@
|
|||
#!/usr/bin/env python3
|
||||
"""
|
||||
sus.py: Search for function calls with three function-call arguments (ambiguous parameter evaluation order)
|
||||
and print matches in grep-like format: file:line:match
|
||||
"""
|
||||
import os
|
||||
import re
|
||||
# skip chain calls like obj.method(...)
|
||||
chain_pattern = re.compile(r"\.\s*[A-Za-z_]\w*\s*\(")
|
||||
|
||||
# pattern: identifier(... foo(...), ... bar(...)) with two function-call args
|
||||
pattern = re.compile(
|
||||
r"\b[A-Za-z_]\w*" # function name
|
||||
r"\s*\(\s*" # '('
|
||||
r"[^)]*?[A-Za-z_]\w*\([^)]*\)" # first func-call arg anywhere
|
||||
r"[^)]*?,[^)]*?[A-Za-z_]\w*\([^)]*\)" # second func-call arg
|
||||
r"[^)]*?\)" # up to closing ')'
|
||||
)
|
||||
|
||||
# file extensions to include
|
||||
excl = ('TRACE', 'ASSERT', 'VERIFY', )
|
||||
|
||||
for root, dirs, files in os.walk('src/smt'):
|
||||
# skip hidden dirs
|
||||
dirs[:] = [d for d in dirs if not d.startswith('.')]
|
||||
for file in files:
|
||||
path = os.path.join(root, file)
|
||||
try:
|
||||
with open(path, 'r', encoding='utf-8', errors='ignore') as f:
|
||||
for i, line in enumerate(f, 1):
|
||||
if pattern.search(line):
|
||||
# skip lines with TRACE or ASSERT in all caps
|
||||
if 'TRACE' in line or 'ASSERT' in line or 'VERIFY' in line:
|
||||
continue
|
||||
# skip chain calls (method-style chaining)
|
||||
if chain_pattern.search(line):
|
||||
continue
|
||||
full_path = os.path.abspath(path)
|
||||
print(f"{full_path}:{i}:{line.rstrip()}")
|
||||
except OSError:
|
||||
pass
|
Loading…
Add table
Add a link
Reference in a new issue