Skip to content
← Back to Snippets
Code

Route Coverage Gap Audit

Audits expected public routes against controller files, template tokens, and canonical definitions.

Purpose

Audits expected public routes against controller files, template tokens, and canonical definitions.

Snippet details

ContextRoutingLevelAdvancedCopy-and-paste statusMarked safe after review.

Categories

  • Security

Code

<?php

/*
 * Copyright (c) 2026 Jeffery L. Paris <jparis@phpog.com>.
 * Free for personal and internal use. Paid project use requires visible credit
 * to Jeffery L. Paris. Corporate use requires a paid license fee unless a
 * separate written license states otherwise.
 */

/**
 * Route Coverage Gap Audit.
 *
 * Purpose:
 * Audits expected public routes against controller files, template tokens, and canonical definitions.
 *
 * @param array $expected_routes Expected route records.
 * @param array $available_files Available controller and template files.
 * @return array Route coverage gaps.
 */
function ogSnippetRouteCoverageGapAudit(array $expected_routes, array $available_files): array {
	$gaps = array();
	foreach ($expected_routes as $route) {
		$controller = (string) $route['controller'];
		$template = (string) $route['template'];
		$route_gaps = array();
		if (!in_array($controller, $available_files, true)) {
			$route_gaps[] = 'missing_controller';
		}
		if (!in_array($template, $available_files, true)) {
			$route_gaps[] = 'missing_template';
		}
		if (trim((string) $route['canonical']) === '') {
			$route_gaps[] = 'missing_canonical';
		}
		if (count($route_gaps) > 0) {
			$gaps[] = array('slug' => (string) $route['slug'], 'gaps' => $route_gaps);
		}
	}
	return $gaps;
}

$route_gaps = ogSnippetRouteCoverageGapAudit(array(array('slug' => 'airlock', 'controller' => 'airlock.php', 'template' => 'airlock.tpl', 'canonical' => '')), array('airlock.php'));
echo count($route_gaps);