4669e0ae7d
Reviewers: teon.banek Reviewed By: teon.banek Subscribers: pullbot Differential Revision: https://phabricator.memgraph.io/D2666
62 lines
1.8 KiB
Bash
Executable File
62 lines
1.8 KiB
Bash
Executable File
#!/bin/bash -e
|
|
|
|
script_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
|
project_dir="$( dirname "$( dirname "$script_dir" )" )"
|
|
|
|
generated_dir="$script_dir/generated"
|
|
html_dir="$generated_dir/html"
|
|
data_file="$generated_dir/default.profdata"
|
|
json_file="$generated_dir/report.json"
|
|
coverage_file="$generated_dir/coverage.json"
|
|
summary_file="$generated_dir/.coverage_summary"
|
|
|
|
# cleanup output directory
|
|
if [ -d "$generated_dir" ]; then
|
|
rm -rf "$generated_dir"
|
|
fi
|
|
mkdir "$generated_dir"
|
|
|
|
# merge raw coverage info
|
|
raw_files="$( find "$HOME" -name "*.profraw" | tr '\n' ' ' )"
|
|
llvm-profdata merge -sparse $raw_files -o "$data_file"
|
|
|
|
# create list of binaries
|
|
cnt=0
|
|
obj_files=""
|
|
for prof_file in $raw_files; do
|
|
if [ $cnt -gt 0 ]; then
|
|
obj_files+=" -object "
|
|
fi
|
|
obj_files+="$( find "$( dirname "$prof_file" )" -executable -type f | head -n 1 )"
|
|
cnt=$((cnt + 1))
|
|
done
|
|
|
|
# create list of source files
|
|
src_files=$( find "$HOME" \( -name '*.cpp' -o -name '*.hpp' \) -print | sort | tr '\n' ' ' )
|
|
|
|
# generate html output
|
|
llvm-cov show $obj_files \
|
|
-format html \
|
|
-instr-profile "$data_file" \
|
|
-o "$html_dir" \
|
|
-show-line-counts-or-regions \
|
|
-Xdemangler c++filt -Xdemangler -n \
|
|
$src_files
|
|
|
|
# fix names in html output
|
|
coverage_dir="$html_dir/coverage"
|
|
mv $coverage_dir/workspace/memgraph/* $html_dir/coverage/
|
|
rm -r $coverage_dir/workspace
|
|
find $coverage_dir -name "*.html" -exec sed -i 's@/workspace/memgraph/@@g' {} \;
|
|
find $coverage_dir -name "*.html" -exec sed -i 's@../../style.css@style.css@g' {} \;
|
|
sed -i 's@/workspace/memgraph@@g' $html_dir/index.html
|
|
|
|
# generate json output
|
|
llvm-cov export $obj_files \
|
|
-instr-profile "$data_file" \
|
|
-Xdemangler c++filt -Xdemangler -n \
|
|
$src_files > "$json_file"
|
|
|
|
# process json output
|
|
$script_dir/coverage_parse_export "$json_file" "$coverage_file" "$summary_file" $src_files
|