Skip to content

Send data about the default branch to DataDog. #678

Send data about the default branch to DataDog.

Send data about the default branch to DataDog. #678

name: Send data about the default branch to DataDog.
on:
schedule:
- cron: '45 3 * * *'
workflow_dispatch:
jobs:
custom_metrics:
name: Custom Metrics
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
- uses: ./.github/actions/post-checkout
- name: Find occurrences of "Implements hook" in *.module files.
id: hook_implementations
run: |
output=$(grep -rHino 'Implements hook[^\s]*' ./docroot/modules/custom/**/*.module)
count=$(printf "%s" "${output}" | wc -l)
echo "${output}"
echo "count=${count}" >> $GITHUB_OUTPUT
- name: Record .module file line counts.
id: module_file_line_counts
run: |
output=$(find ./docroot/modules/custom/ -name '*.module' -exec wc -l {} \; | sort -k 2)
raw_metrics_output=""
repository="${GITHUB_REPOSITORY}"
while IFS= read -r line; do
lines="$(echo "${line}" | awk '{ print $1; }')"
filepath="$(printf "%s" "${line}" | awk '{ print $2; }')"
filename="$(basename "${filepath}" .module)"
echo "${filename}=${lines}" >> $GITHUB_OUTPUT
# `read` normally stops at a newline. Since we'll be reading a multiline "chunk", we
# want to skip newlines, so we use `-d ''`. That means `read` will stop when it hits
# the EOF. But in that case, it'll exit with a status code of 1. GitHub has `set -e`
# prepended to scripts, so this will cause the script to fail if we don't ensure a
# success exit code for the command.
#
read -r -d '' raw_metrics_output2 <<-EOF || true
- type: "gauge"
name: "cms.qa.custom_metrics.module_file_line_counts.${filename}"
value: ${lines}
host: "${repository}"
EOF
raw_metrics_output="${raw_metrics_output}
${raw_metrics_output2}"
done <<< "${output}"
# Set raw output, finally.
echo 'raw_config<<EOF' >> $GITHUB_OUTPUT
echo "${raw_metrics_output}" >> $GITHUB_OUTPUT
echo 'EOF' >> $GITHUB_OUTPUT
env:
GITHUB_REPOSITORY: "${{ github.repository }}"
- name: Send Metrics to DataDog.
uses: masci/datadog@68f124e429317cc02e17965df6d08c75056cb45d # v1.6.0
with:
api-key: ${{ secrets.DATADOG_API_KEY }}
api-url: https://api.ddog-gov.com
metrics: |
# Magic comment. Remove this and metrics will break.
${{ steps.module_file_line_counts.outputs.raw_config }}
- type: "gauge"
name: "cms.qa.custom_metrics.hook_implementations"
value: ${{ steps.hook_implementations.outputs.count }}
host: "${{ github.repository }}"
phpunit_code_coverage:
name: PHPUnit Code Coverage
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
- uses: ./.github/actions/post-checkout
- name: Run PHPUnit (Unit Tests only)
run: bin/phpunit \
--group unit \
--exclude-group disabled \
--coverage-text=./coverage.txt \
tests/phpunit
- name: Parse coverage file for metrics
id: code_coverage_metrics
run: |
# Class Coverage Metrics
classes="$(cat coverage.txt | grep 'Summary:' -A 3 | grep 'Classes')";
# Given a string like this:
#
# Classes: 3.88% (8/206)
#
# Regex matches:
# \d+ digit(s)
# \.? with an optional decimal separator
# \d+ digit(s)
# (?=%) followed by (but don't include) percent sign
#
classes_percentage="$(echo "${classes}" | grep -oP '\d+\.?\d+(?=%)')";
# Regex matches:
# (?<=\() preceded by (but don't include) open parenthesis
# \d+ digit(s)
# (?=\/) followed by (but don't include) forward slash
#
classes_numerator="$(echo "${classes}" | grep -oP '(?<=\()\d+(?=\/)')";
# Regex matches:
# (?<=\/) preceded by (but don't include) forward slash
# \d+ digit(s)
# (?=\)) followed by (but don't include) closing parenthesis
#
classes_denominator="$(echo "${classes}" | grep -oP '(?<=\/)\d+(?=\))')";
# Set the outputs.
echo "classes_percentage=${classes_percentage}" >> $GITHUB_OUTPUT;
echo "classes_numerator=${classes_numerator}" >> $GITHUB_OUTPUT;
echo "classes_denominator=${classes_denominator}" >> $GITHUB_OUTPUT;
# Method Coverage Metrics
methods="$(cat coverage.txt | grep 'Summary:' -A 3 | grep 'Methods')";
methods_percentage="$(echo "${methods}" | grep -oP '\d+\.?\d+(?=%)')";
methods_numerator="$(echo "${methods}" | grep -oP '(?<=\()\d+(?=\/)')";
methods_denominator="$(echo "${methods}" | grep -oP '(?<=\/)\d+(?=\))')";
echo "methods_percentage=${methods_percentage}" >> $GITHUB_OUTPUT;
echo "methods_numerator=${methods_numerator}" >> $GITHUB_OUTPUT;
echo "methods_denominator=${methods_denominator}" >> $GITHUB_OUTPUT;
# Line Coverage Metrics
lines="$(cat coverage.txt | grep 'Summary:' -A 3 | grep 'Lines')";
lines_percentage="$(echo "${lines}" | grep -oP '\d+\.?\d+(?=%)')";
lines_numerator="$(echo "${lines}" | grep -oP '(?<=\()\d+(?=\/)')";
lines_denominator="$(echo "${lines}" | grep -oP '(?<=\/)\d+(?=\))')";
echo "lines_percentage=${lines_percentage}" >> $GITHUB_OUTPUT;
echo "lines_numerator=${lines_numerator}" >> $GITHUB_OUTPUT;
echo "lines_denominator=${lines_denominator}" >> $GITHUB_OUTPUT;
# Class Coverage Metrics
echo "Classes Percentage: ${classes_percentage}";
echo "Classes Numerator: ${classes_numerator}";
echo "Classes Denominator: ${classes_denominator}";
echo "Methods Percentage: ${methods_percentage}";
echo "Methods Numerator: ${methods_numerator}";
echo "Methods Denominator: ${methods_denominator}";
echo "Lines Percentage: ${lines_percentage}";
echo "Lines Numerator: ${lines_numerator}";
echo "Lines Denominator: ${lines_denominator}";
- name: Send Metrics to DataDog.
uses: masci/datadog@68f124e429317cc02e17965df6d08c75056cb45d # v1.6.0
with:
api-key: ${{ secrets.DATADOG_API_KEY }}
api-url: https://api.ddog-gov.com
metrics: |
- type: "gauge"
name: "cms.qa.phpunit_code_coverage.classes_percentage"
value: ${{ steps.code_coverage_metrics.outputs.classes_percentage }}
host: "${{ github.repository }}"
- type: "gauge"
name: "cms.qa.phpunit_code_coverage.classes_numerator"
value: ${{ steps.code_coverage_metrics.outputs.classes_numerator }}
host: "${{ github.repository }}"
- type: "gauge"
name: "cms.qa.phpunit_code_coverage.classes_denominator"
value: ${{ steps.code_coverage_metrics.outputs.classes_denominator }}
host: "${{ github.repository }}"
- type: "gauge"
name: "cms.qa.phpunit_code_coverage.methods_percentage"
value: ${{ steps.code_coverage_metrics.outputs.methods_percentage }}
host: "${{ github.repository }}"
- type: "gauge"
name: "cms.qa.phpunit_code_coverage.methods_numerator"
value: ${{ steps.code_coverage_metrics.outputs.methods_numerator }}
host: "${{ github.repository }}"
- type: "gauge"
name: "cms.qa.phpunit_code_coverage.methods_denominator"
value: ${{ steps.code_coverage_metrics.outputs.methods_denominator }}
host: "${{ github.repository }}"
- type: "gauge"
name: "cms.qa.phpunit_code_coverage.lines_percentage"
value: ${{ steps.code_coverage_metrics.outputs.lines_percentage }}
host: "${{ github.repository }}"
- type: "gauge"
name: "cms.qa.phpunit_code_coverage.lines_numerator"
value: ${{ steps.code_coverage_metrics.outputs.lines_numerator }}
host: "${{ github.repository }}"
- type: "gauge"
name: "cms.qa.phpunit_code_coverage.lines_denominator"
value: ${{ steps.code_coverage_metrics.outputs.lines_denominator }}
host: "${{ github.repository }}"
phploc:
name: PHPLOC Analysis
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
- uses: ./.github/actions/post-checkout
- name: Run PHPLOC and parse output for metrics.
id: phploc_code_quality
run: |
output=$(php phploc.phar --suffix .php --suffix .inc --suffix .module docroot/modules/custom/ --log-json phploc.json)
# Size metrics.
echo "directory_count=$(jq '.directories' phploc.json)" >> $GITHUB_OUTPUT
echo "file_count=$(jq '.files' phploc.json)" >> $GITHUB_OUTPUT
echo "all_lines_of_code=$(jq '.loc' phploc.json)" >> $GITHUB_OUTPUT
echo "comment_lines_of_code=$(jq '.cloc' phploc.json)" >> $GITHUB_OUTPUT
echo "noncomment_lines_of_code=$(jq '.ncloc' phploc.json)" >> $GITHUB_OUTPUT
echo "logical_lines_of_code=$(jq '.lloc' phploc.json)" >> $GITHUB_OUTPUT
echo "logical_lines_of_code_classes=$(jq '.llocClasses' phploc.json)" >> $GITHUB_OUTPUT
echo "logical_lines_of_code_classes_average_class_length=$(jq '.classLlocAvg' phploc.json)" >> $GITHUB_OUTPUT
echo "logical_lines_of_code_classes_minimum_class_length=$(jq '.classLlocMin' phploc.json)" >> $GITHUB_OUTPUT
echo "logical_lines_of_code_classes_maximum_class_length=$(jq '.classLlocMax' phploc.json)" >> $GITHUB_OUTPUT
echo "logical_lines_of_code_classes_average_method_length=$(jq '.methodLlocAvg' phploc.json)" >> $GITHUB_OUTPUT
echo "logical_lines_of_code_classes_minimum_method_length=$(jq '.methodLlocMin' phploc.json)" >> $GITHUB_OUTPUT
echo "logical_lines_of_code_classes_maximum_method_length=$(jq '.methodLlocMax' phploc.json)" >> $GITHUB_OUTPUT
echo "logical_lines_of_code_classes_average_methods_per_class=$(jq '.averageMethodsPerClass' phploc.json)" >> $GITHUB_OUTPUT
echo "logical_lines_of_code_classes_minimum_methods_per_class=$(jq '.minimumMethodsPerClass' phploc.json)" >> $GITHUB_OUTPUT
echo "logical_lines_of_code_classes_maximum_methods_per_class=$(jq '.maximumMethodsPerClass' phploc.json)" >> $GITHUB_OUTPUT
echo "logical_lines_of_code_functions=$(jq '.llocFunctions' phploc.json)" >> $GITHUB_OUTPUT
echo "logical_lines_of_code_functions_average_function_length=$(jq '.llocByNof' phploc.json)" >> $GITHUB_OUTPUT
echo "logical_lines_of_code_not_in_classes_or_functions=$(jq '.llocGlobal' phploc.json)" >> $GITHUB_OUTPUT
# Cyclomatic complexity.
echo "average_complexity_per_lloc=$(jq '.ccnByLloc' phploc.json)" >> $GITHUB_OUTPUT
echo "average_complexity_per_class=$(jq '.classCcnAvg' phploc.json)" >> $GITHUB_OUTPUT
echo "minimum_complexity_per_class=$(jq '.classCcnMin' phploc.json)" >> $GITHUB_OUTPUT
echo "maximum_complexity_per_class=$(jq '.classCcnMax' phploc.json)" >> $GITHUB_OUTPUT
echo "average_complexity_per_method=$(jq '.methodCcnAvg' phploc.json)" >> $GITHUB_OUTPUT
echo "minimum_complexity_per_method=$(jq '.methodCcnMin' phploc.json)" >> $GITHUB_OUTPUT
echo "maximum_complexity_per_method=$(jq '.methodCcnMax' phploc.json)" >> $GITHUB_OUTPUT
# Dependencies.
echo "global_accesses=$(jq '.globalAccesses' phploc.json)" >> $GITHUB_OUTPUT
echo "global_constant_accesses=$(jq '.globalConstantAccesses' phploc.json)" >> $GITHUB_OUTPUT
echo "global_variable_accesses=$(jq '.globalVariableAccesses' phploc.json)" >> $GITHUB_OUTPUT
echo "super_global_variables=$(jq '.superGlobalVariableAccesses' phploc.json)" >> $GITHUB_OUTPUT
echo "attribute_accesses=$(jq '.attributeAccesses' phploc.json)" >> $GITHUB_OUTPUT
echo "instance_attribute_accesses=$(jq '.instanceAttributeAccesses' phploc.json)" >> $GITHUB_OUTPUT
echo "static_attribute_accesses=$(jq '.staticAttributeAccesses' phploc.json)" >> $GITHUB_OUTPUT
echo "method_calls=$(jq '.methodCalls' phploc.json)" >> $GITHUB_OUTPUT
echo "instance_method_calls=$(jq '.instanceMethodCalls' phploc.json)" >> $GITHUB_OUTPUT
echo "static_method_calls=$(jq '.staticMethodCalls' phploc.json)" >> $GITHUB_OUTPUT
# Structure
echo "namespaces=$(jq '.namespaces' phploc.json)" >> $GITHUB_OUTPUT
echo "interfaces=$(jq '.interfaces' phploc.json)" >> $GITHUB_OUTPUT
echo "traits=$(jq '.traits' phploc.json)" >> $GITHUB_OUTPUT
echo "classes=$(jq '.classes' phploc.json)" >> $GITHUB_OUTPUT
echo "abstract_classes=$(jq '.abstractClasses' phploc.json)" >> $GITHUB_OUTPUT
echo "concrete_classes=$(jq '.concreteClasses' phploc.json)" >> $GITHUB_OUTPUT
echo "final_classes=$(jq '.finalClasses' phploc.json)" >> $GITHUB_OUTPUT
echo "nonfinal_classes=$(jq '.nonFinalClasses' phploc.json)" >> $GITHUB_OUTPUT
echo "methods=$(jq '.methods' phploc.json)" >> $GITHUB_OUTPUT
echo "nonstatic_methods=$(jq '.nonStaticMethods' phploc.json)" >> $GITHUB_OUTPUT
echo "static_methods=$(jq '.staticMethods' phploc.json)" >> $GITHUB_OUTPUT
echo "public_methods=$(jq '.publicMethods' phploc.json)" >> $GITHUB_OUTPUT
echo "protected_methods=$(jq '.protectedMethods' phploc.json)" >> $GITHUB_OUTPUT
echo "private_methods=$(jq '.privateMethods' phploc.json)" >> $GITHUB_OUTPUT
echo "functions=$(jq '.functions' phploc.json)" >> $GITHUB_OUTPUT
echo "named_functions=$(jq '.namedFunctions' phploc.json)" >> $GITHUB_OUTPUT
echo "anonymous_functions=$(jq '.anonymousFunctions' phploc.json)" >> $GITHUB_OUTPUT
echo "constants=$(jq '.constants' phploc.json)" >> $GITHUB_OUTPUT
echo "global_constants=$(jq '.globalConstants' phploc.json)" >> $GITHUB_OUTPUT
echo "class_constants=$(jq '.classConstants' phploc.json)" >> $GITHUB_OUTPUT
echo "public_class_constants=$(jq '.publicClassConstants' phploc.json)" >> $GITHUB_OUTPUT
echo "nonpublic_class_constants=$(jq '.nonPublicClassConstants' phploc.json)" >> $GITHUB_OUTPUT
- name: Send Metrics to DataDog.
uses: masci/datadog@68f124e429317cc02e17965df6d08c75056cb45d # v1.6.0
with:
api-key: ${{ secrets.DATADOG_API_KEY }}
api-url: https://api.ddog-gov.com
metrics: |
- type: "gauge"
name: "cms.qa.phploc_code_quality.directory_count"
value: ${{ steps.phploc_code_quality.outputs.directory_count }}
host: "${{ github.repository }}"
- type: "gauge"
name: "cms.qa.phploc_code_quality.file_count"
value: ${{ steps.phploc_code_quality.outputs.file_count }}
host: "${{ github.repository }}"
- type: "gauge"
name: "cms.qa.phploc_code_quality.all_lines_of_code"
value: ${{ steps.phploc_code_quality.outputs.all_lines_of_code }}
host: "${{ github.repository }}"
- type: "gauge"
name: "cms.qa.phploc_code_quality.comment_lines_of_code"
value: ${{ steps.phploc_code_quality.outputs.comment_lines_of_code }}
host: "${{ github.repository }}"
- type: "gauge"
name: "cms.qa.phploc_code_quality.noncomment_lines_of_code"
value: ${{ steps.phploc_code_quality.outputs.noncomment_lines_of_code }}
host: "${{ github.repository }}"
- type: "gauge"
name: "cms.qa.phploc_code_quality.logical_lines_of_code"
value: ${{ steps.phploc_code_quality.outputs.logical_lines_of_code }}
host: "${{ github.repository }}"
- type: "gauge"
name: "cms.qa.phploc_code_quality.logical_lines_of_code_classes"
value: ${{ steps.phploc_code_quality.outputs.logical_lines_of_code_classes }}
host: "${{ github.repository }}"
- type: "gauge"
name: "cms.qa.phploc_code_quality.logical_lines_of_code_classes_average_class_length"
value: ${{ steps.phploc_code_quality.outputs.logical_lines_of_code_classes_average_class_length }}
host: "${{ github.repository }}"
- type: "gauge"
name: "cms.qa.phploc_code_quality.logical_lines_of_code_classes_minimum_class_length"
value: ${{ steps.phploc_code_quality.outputs.logical_lines_of_code_classes_minimum_class_length }}
host: "${{ github.repository }}"
- type: "gauge"
name: "cms.qa.phploc_code_quality.logical_lines_of_code_classes_maximum_class_length"
value: ${{ steps.phploc_code_quality.outputs.logical_lines_of_code_classes_maximum_class_length }}
host: "${{ github.repository }}"
- type: "gauge"
name: "cms.qa.phploc_code_quality.logical_lines_of_code_classes_average_method_length"
value: ${{ steps.phploc_code_quality.outputs.logical_lines_of_code_classes_average_method_length }}
host: "${{ github.repository }}"
- type: "gauge"
name: "cms.qa.phploc_code_quality.logical_lines_of_code_classes_minimum_method_length"
value: ${{ steps.phploc_code_quality.outputs.logical_lines_of_code_classes_minimum_method_length }}
host: "${{ github.repository }}"
- type: "gauge"
name: "cms.qa.phploc_code_quality.logical_lines_of_code_classes_maximum_method_length"
value: ${{ steps.phploc_code_quality.outputs.logical_lines_of_code_classes_maximum_method_length }}
host: "${{ github.repository }}"
- type: "gauge"
name: "cms.qa.phploc_code_quality.logical_lines_of_code_classes_average_methods_per_class"
value: ${{ steps.phploc_code_quality.outputs.logical_lines_of_code_classes_average_methods_per_class }}
host: "${{ github.repository }}"
- type: "gauge"
name: "cms.qa.phploc_code_quality.logical_lines_of_code_classes_minimum_methods_per_class"
value: ${{ steps.phploc_code_quality.outputs.logical_lines_of_code_classes_minimum_methods_per_class }}
host: "${{ github.repository }}"
- type: "gauge"
name: "cms.qa.phploc_code_quality.logical_lines_of_code_classes_maximum_methods_per_class"
value: ${{ steps.phploc_code_quality.outputs.logical_lines_of_code_classes_maximum_methods_per_class }}
host: "${{ github.repository }}"
- type: "gauge"
name: "cms.qa.phploc_code_quality.logical_lines_of_code_functions"
value: ${{ steps.phploc_code_quality.outputs.logical_lines_of_code_functions }}
host: "${{ github.repository }}"
- type: "gauge"
name: "cms.qa.phploc_code_quality.logical_lines_of_code_functions_average_function_length"
value: ${{ steps.phploc_code_quality.outputs.logical_lines_of_code_functions_average_function_length }}
host: "${{ github.repository }}"
- type: "gauge"
name: "cms.qa.phploc_code_quality.logical_lines_of_code_not_in_classes_or_functions"
value: ${{ steps.phploc_code_quality.outputs.logical_lines_of_code_not_in_classes_or_functions }}
host: "${{ github.repository }}"
- type: "gauge"
name: "cms.qa.phploc_code_quality.average_complexity_per_lloc"
value: ${{ steps.phploc_code_quality.outputs.average_complexity_per_lloc }}
host: "${{ github.repository }}"
- type: "gauge"
name: "cms.qa.phploc_code_quality.average_complexity_per_class"
value: ${{ steps.phploc_code_quality.outputs.average_complexity_per_class }}
host: "${{ github.repository }}"
- type: "gauge"
name: "cms.qa.phploc_code_quality.minimum_complexity_per_class"
value: ${{ steps.phploc_code_quality.outputs.minimum_complexity_per_class }}
host: "${{ github.repository }}"
- type: "gauge"
name: "cms.qa.phploc_code_quality.maximum_complexity_per_class"
value: ${{ steps.phploc_code_quality.outputs.maximum_complexity_per_class }}
host: "${{ github.repository }}"
- type: "gauge"
name: "cms.qa.phploc_code_quality.average_complexity_per_method"
value: ${{ steps.phploc_code_quality.outputs.average_complexity_per_method }}
host: "${{ github.repository }}"
- type: "gauge"
name: "cms.qa.phploc_code_quality.minimum_complexity_per_method"
value: ${{ steps.phploc_code_quality.outputs.minimum_complexity_per_method }}
host: "${{ github.repository }}"
- type: "gauge"
name: "cms.qa.phploc_code_quality.maximum_complexity_per_method"
value: ${{ steps.phploc_code_quality.outputs.maximum_complexity_per_method }}
host: "${{ github.repository }}"
- type: "gauge"
name: "cms.qa.phploc_code_quality.global_accesses"
value: ${{ steps.phploc_code_quality.outputs.global_accesses }}
host: "${{ github.repository }}"
- type: "gauge"
name: "cms.qa.phploc_code_quality.global_constant_accesses"
value: ${{ steps.phploc_code_quality.outputs.global_constant_accesses }}
host: "${{ github.repository }}"
- type: "gauge"
name: "cms.qa.phploc_code_quality.global_variable_accesses"
value: ${{ steps.phploc_code_quality.outputs.global_variable_accesses }}
host: "${{ github.repository }}"
- type: "gauge"
name: "cms.qa.phploc_code_quality.super_global_variables"
value: ${{ steps.phploc_code_quality.outputs.super_global_variables }}
host: "${{ github.repository }}"
- type: "gauge"
name: "cms.qa.phploc_code_quality.attribute_accesses"
value: ${{ steps.phploc_code_quality.outputs.attribute_accesses }}
host: "${{ github.repository }}"
- type: "gauge"
name: "cms.qa.phploc_code_quality.instance_attribute_accesses"
value: ${{ steps.phploc_code_quality.outputs.instance_attribute_accesses }}
host: "${{ github.repository }}"
- type: "gauge"
name: "cms.qa.phploc_code_quality.static_attribute_accesses"
value: ${{ steps.phploc_code_quality.outputs.static_attribute_accesses }}
host: "${{ github.repository }}"
- type: "gauge"
name: "cms.qa.phploc_code_quality.method_calls"
value: ${{ steps.phploc_code_quality.outputs.method_calls }}
host: "${{ github.repository }}"
- type: "gauge"
name: "cms.qa.phploc_code_quality.instance_method_calls"
value: ${{ steps.phploc_code_quality.outputs.instance_method_calls }}
host: "${{ github.repository }}"
- type: "gauge"
name: "cms.qa.phploc_code_quality.static_method_calls"
value: ${{ steps.phploc_code_quality.outputs.static_method_calls }}
host: "${{ github.repository }}"
- type: "gauge"
name: "cms.qa.phploc_code_quality.namespaces"
value: ${{ steps.phploc_code_quality.outputs.namespaces }}
host: "${{ github.repository }}"
- type: "gauge"
name: "cms.qa.phploc_code_quality.interfaces"
value: ${{ steps.phploc_code_quality.outputs.interfaces }}
host: "${{ github.repository }}"
- type: "gauge"
name: "cms.qa.phploc_code_quality.traits"
value: ${{ steps.phploc_code_quality.outputs.traits }}
host: "${{ github.repository }}"
- type: "gauge"
name: "cms.qa.phploc_code_quality.classes"
value: ${{ steps.phploc_code_quality.outputs.classes }}
host: "${{ github.repository }}"
- type: "gauge"
name: "cms.qa.phploc_code_quality.abstract_classes"
value: ${{ steps.phploc_code_quality.outputs.abstract_classes }}
host: "${{ github.repository }}"
- type: "gauge"
name: "cms.qa.phploc_code_quality.concrete_classes"
value: ${{ steps.phploc_code_quality.outputs.concrete_classes }}
host: "${{ github.repository }}"
- type: "gauge"
name: "cms.qa.phploc_code_quality.final_classes"
value: ${{ steps.phploc_code_quality.outputs.final_classes }}
host: "${{ github.repository }}"
- type: "gauge"
name: "cms.qa.phploc_code_quality.nonfinal_classes"
value: ${{ steps.phploc_code_quality.outputs.nonfinal_classes }}
host: "${{ github.repository }}"
- type: "gauge"
name: "cms.qa.phploc_code_quality.methods"
value: ${{ steps.phploc_code_quality.outputs.methods }}
host: "${{ github.repository }}"
- type: "gauge"
name: "cms.qa.phploc_code_quality.nonstatic_methods"
value: ${{ steps.phploc_code_quality.outputs.nonstatic_methods }}
host: "${{ github.repository }}"
- type: "gauge"
name: "cms.qa.phploc_code_quality.static_methods"
value: ${{ steps.phploc_code_quality.outputs.static_methods }}
host: "${{ github.repository }}"
- type: "gauge"
name: "cms.qa.phploc_code_quality.public_methods"
value: ${{ steps.phploc_code_quality.outputs.public_methods }}
host: "${{ github.repository }}"
- type: "gauge"
name: "cms.qa.phploc_code_quality.protected_methods"
value: ${{ steps.phploc_code_quality.outputs.protected_methods }}
host: "${{ github.repository }}"
- type: "gauge"
name: "cms.qa.phploc_code_quality.private_methods"
value: ${{ steps.phploc_code_quality.outputs.private_methods }}
host: "${{ github.repository }}"
- type: "gauge"
name: "cms.qa.phploc_code_quality.functions"
value: ${{ steps.phploc_code_quality.outputs.functions }}
host: "${{ github.repository }}"
- type: "gauge"
name: "cms.qa.phploc_code_quality.named_functions"
value: ${{ steps.phploc_code_quality.outputs.named_functions }}
host: "${{ github.repository }}"
- type: "gauge"
name: "cms.qa.phploc_code_quality.anonymous_functions"
value: ${{ steps.phploc_code_quality.outputs.anonymous_functions }}
host: "${{ github.repository }}"
- type: "gauge"
name: "cms.qa.phploc_code_quality.constants"
value: ${{ steps.phploc_code_quality.outputs.constants }}
host: "${{ github.repository }}"
- type: "gauge"
name: "cms.qa.phploc_code_quality.global_constants"
value: ${{ steps.phploc_code_quality.outputs.global_constants }}
host: "${{ github.repository }}"
- type: "gauge"
name: "cms.qa.phploc_code_quality.class_constants"
value: ${{ steps.phploc_code_quality.outputs.class_constants }}
host: "${{ github.repository }}"
- type: "gauge"
name: "cms.qa.phploc_code_quality.public_class_constants"
value: ${{ steps.phploc_code_quality.outputs.public_class_constants }}
host: "${{ github.repository }}"
- type: "gauge"
name: "cms.qa.phploc_code_quality.nonpublic_class_constants"
value: ${{ steps.phploc_code_quality.outputs.nonpublic_class_constants }}
host: "${{ github.repository }}"