With -dataflow-log=/dir we will write /dir/0.html etc for each
function analyzed.
These files show the function's code and CFG, and the path through
the CFG taken by the analysis. At each analysis point we can see the
lattice state.
Currently the lattice state dump is not terribly useful but we can
improve this: showing values associated with the current Expr,
simplifying flow condition, highlighting changes etc.
(Trying not to let this patch scope-creep too much, so I ripped out the
half-finished features)
Demo: 9718fdd484/analysis.html
Differential Revision: https://reviews.llvm.org/D146591
30 lines
1.0 KiB
Python
30 lines
1.0 KiB
Python
#!/usr/bin/env python3
|
|
|
|
#===- bundle_resources.py - Generate string constants with file contents. ===
|
|
#
|
|
# 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
|
|
#
|
|
#===----------------------------------------------------------------------===
|
|
|
|
# Usage: bundle-resources.py foo.inc a.js path/b.css ...
|
|
# Produces foo.inc containing:
|
|
# const char a_js[] = "...";
|
|
# const char b_css[] = "...";
|
|
import os
|
|
import sys
|
|
|
|
outfile = sys.argv[1]
|
|
infiles = sys.argv[2:]
|
|
|
|
with open(outfile, 'w') as out:
|
|
for filename in infiles:
|
|
varname = os.path.basename(filename).replace('.', '_')
|
|
out.write("const char " + varname + "[] = \n");
|
|
# MSVC limits each chunk of string to 2k, so split by lines.
|
|
# The overall limit is 64k, which ought to be enough for anyone.
|
|
for line in open(filename).read().split('\n'):
|
|
out.write(' R"x(' + line + ')x" "\\n"\n' )
|
|
out.write(' ;\n');
|