findEnvAccesses($path, $relative)); } return $errors; } /** @return list */ private function findEnvAccesses(string $path, string $relative): array { $errors = []; $names = implode('|', self::BANNED_ENV_FUNCTIONS); foreach (file($path) as $idx => $raw) { $code = explode('//', $raw, 2)[0]; if (preg_match_all("/\bstd::env::({$names})\b/", $code, $m)) { foreach ($m[1] as $name) { $errors[] = "{$relative}:" . ($idx + 1) . ": use of `std::env::{$name}`"; } } if (preg_match_all('/\bstd::env::\{([^}]*)\}/', $code, $m)) { foreach ($m[1] as $group) { foreach (explode(',', $group) as $entry) { $name = preg_split('/\s+as\s+/', trim($entry))[0]; if (!in_array($name, self::BANNED_ENV_FUNCTIONS, true)) { continue; } $errors[] = "{$relative}:" . ($idx + 1) . ": import of `std::env::{$name}`"; } } } } return array_values(array_unique($errors)); } }