Initial commit.

 - qa-tools public release which includes:
    - trace-based coverage tool
    - quality metrics measurement and tracking setup
    - associated in-source documentation.

Signed-off-by: Basil Eljuse <basil.eljuse@arm.com>
diff --git a/coverage-tool/coverage-reporting/branch_coverage.sh b/coverage-tool/coverage-reporting/branch_coverage.sh
new file mode 100755
index 0000000..3dc88f3
--- /dev/null
+++ b/coverage-tool/coverage-reporting/branch_coverage.sh
@@ -0,0 +1,140 @@
+#!/usr/bin/env bash
+
+##############################################################################
+# Copyright (c) 2020, ARM Limited and Contributors. All rights reserved.
+#
+# SPDX-License-Identifier: BSD-3-Clause
+##############################################################################
+
+#==============================================================================
+# FILE: branch_coverage.sh
+#
+# DESCRIPTION: Generates intermediate layer json file and then
+# code coverage HTML reports using LCOV report Open Source tool
+#==============================================================================
+
+set +x
+set -e
+
+ERROR_FILE=coverage_error.log
+
+###############################################################################
+# Prints error message to STDERR and log file.
+# Globals:
+# ERROR_FILE
+# Arguments:
+#   None
+# Outputs:
+#   Writes error to STDERR and log file with a timestamp
+###############################################################################
+err() {
+  echo "[$(date +'%Y-%m-%dT%H:%M:%S%z')]: $*" | tee -a ${ERROR_FILE} 1>&2
+}
+
+touch ${ERROR_FILE}
+if ! [ -x "$(command -v lcov)" ]; then
+  err 'Error: lcov is not installed. Install it with:\nsudo apt install lcov\n'
+  exit 1
+fi
+
+###############################################################################
+# Prints script usage.
+# Arguments:
+#   None
+# Outputs:
+#   Writes usage to stdout
+###############################################################################
+usage()
+{
+    # print the usage information
+    printf "Usage: $(basename $0) [options]\n"
+    printf "\t params:\n"
+    printf "\t --config Configuration json file. Required.\n"
+    printf "\t --workspace Local workspace folder where source codes reside. \
+            Required.\n"
+    printf "\t --json-path Intermediate json file name. Optional defaults to \
+            'output_file.json'\n"
+    printf "\t --outdir Report folder. Optional defaults to 'out'\n"
+    printf "\t -h|--help Display usage\n"
+    printf "Example of usage:\n"
+    printf "./branch_coverage.sh --config config_file.json \
+            --workspace /server_side/source/ --outdir html_report\n"
+    exit 1
+}
+
+# default values
+JSON_PATH=output_file.json
+OUTDIR=out
+
+###############################################################################
+# Parse arguments.
+# Globals:
+# CONFIG_JSON
+# LOCAL_WORKSPACE
+# JSON_PATH
+# OUTDIR
+# Arguments:
+#   Command line arguments
+# Outputs:
+#   Writes usage to stdout
+###############################################################################
+parse_arguments()
+{
+  while [ $# -gt 1 ]
+  do
+    key="$1"
+    case $key in
+      --config)
+        CONFIG_JSON="$2"
+        shift
+      ;;
+      --workspace)
+        LOCAL_WORKSPACE="$2"
+        shift
+      ;;
+      --json-path)
+        JSON_PATH="$2"
+        shift
+      ;;
+      --outdir)
+        OUTDIR="$2"
+        shift
+      ;;
+      -h|--help)
+        usage
+      ;;
+      *)
+        printf "Unknown argument $key\n"
+        usage
+      ;;
+    esac
+    shift
+  done
+}
+
+
+parse_arguments $@
+
+if [ -z "$LOCAL_WORKSPACE" ] || [ -z "$CONFIG_JSON" ]; then
+    usage
+fi
+
+if [ ! -d "$LOCAL_WORKSPACE" ]; then
+    err "$LOCAL_WORKSPACE doesn't exist\n"
+    exit 1
+fi
+
+if [ ! -f "$CONFIG_JSON" ]; then
+    err "$CONFIG_JSON doesn't exist\n"
+    exit 1
+fi
+
+clear
+echo "Generating intermediate layer file '$JSON_PATH'..."
+python3 intermediate_layer.py --config-json "$CONFIG_JSON" --local-workspace $LOCAL_WORKSPACE
+echo "Converting intermediate layer file to info file..."
+python3 generate_info_file.py --workspace $LOCAL_WORKSPACE --json $JSON_PATH
+echo "Generating LCOV report at '$OUTDIR'..."
+genhtml --branch-coverage coverage.info --output-directory $OUTDIR
+mv coverage.info $OUTDIR/coverage.info
+mv error_log.txt $OUTDIR/error_log.txt