Merge pull request 'fix: PHPStan level 4 with baseline' (#125) from dev into main
Platform: moko-platform CI / CI Summary (push) Blocked by required conditions
Generic: Repo Health / Site Health (push) Has been skipped
Generic: Repo Health / Access control (push) Successful in 1s
Universal: Cascade Main → Dev / Cascade main → branches (push) Successful in 2s
Generic: Repo Health / Release configuration (push) Successful in 4s
Generic: Repo Health / Scripts governance (push) Successful in 4s
Generic: Repo Health / Repository health (push) Successful in 11s
Platform: moko-platform CI / Gate 1: Code Quality (push) Successful in 44s
Platform: moko-platform CI / Gate 2: Unit Tests (8.3) (push) Successful in 1m6s
Platform: moko-platform CI / Gate 2: Unit Tests (8.1) (push) Successful in 1m10s
Platform: moko-platform CI / Gate 4: Governance (push) Successful in 1m8s
Platform: moko-platform CI / Gate 2: Unit Tests (8.2) (push) Successful in 1m12s
Platform: moko-platform CI / Gate 3: Self-Health Check (push) Failing after 1m11s
Platform: moko-platform CI / Gate 5: Template Integrity (push) Failing after 7s
Platform: moko-platform CI / CI Summary (push) Blocked by required conditions
Generic: Repo Health / Site Health (push) Has been skipped
Generic: Repo Health / Access control (push) Successful in 1s
Universal: Cascade Main → Dev / Cascade main → branches (push) Successful in 2s
Generic: Repo Health / Release configuration (push) Successful in 4s
Generic: Repo Health / Scripts governance (push) Successful in 4s
Generic: Repo Health / Repository health (push) Successful in 11s
Platform: moko-platform CI / Gate 1: Code Quality (push) Successful in 44s
Platform: moko-platform CI / Gate 2: Unit Tests (8.3) (push) Successful in 1m6s
Platform: moko-platform CI / Gate 2: Unit Tests (8.1) (push) Successful in 1m10s
Platform: moko-platform CI / Gate 4: Governance (push) Successful in 1m8s
Platform: moko-platform CI / Gate 2: Unit Tests (8.2) (push) Successful in 1m12s
Platform: moko-platform CI / Gate 3: Self-Health Check (push) Failing after 1m11s
Platform: moko-platform CI / Gate 5: Template Integrity (push) Failing after 7s
This commit was merged in pull request #125.
This commit is contained in:
@@ -53,7 +53,6 @@ class BulkJoomlaTemplate extends CliFramework
|
||||
public const VERSION = '04.06.10';
|
||||
|
||||
private GitPlatformAdapter $adapter;
|
||||
private AuditLogger $logger;
|
||||
private Config $config;
|
||||
|
||||
protected function configure(): void
|
||||
@@ -85,7 +84,6 @@ class BulkJoomlaTemplate extends CliFramework
|
||||
return 1;
|
||||
}
|
||||
|
||||
$this->logger = new AuditLogger('joomla_template');
|
||||
$org = $this->getArgument('--org', self::DEFAULT_ORG);
|
||||
$platform = $this->adapter->getPlatformName();
|
||||
$this->log("Platform: {$platform} | Organization: {$org}", 'INFO');
|
||||
|
||||
@@ -66,9 +66,6 @@ class BulkSync extends CliFramework
|
||||
private AuditLogger $logger;
|
||||
private CheckpointManager $checkpoints;
|
||||
private MetricsCollector $metrics;
|
||||
private SecurityValidator $security;
|
||||
private PluginFactory $pluginFactory;
|
||||
private ProjectTypeDetector $typeDetector;
|
||||
private Config $config;
|
||||
|
||||
/** Set to true by signal handler or rate-limit detection to abort the sync loop gracefully. */
|
||||
@@ -204,7 +201,6 @@ class BulkSync extends CliFramework
|
||||
$this->logger = new AuditLogger('bulk_sync');
|
||||
$this->metrics = new MetricsCollector();
|
||||
$this->checkpoints = new CheckpointManager('.checkpoints');
|
||||
$this->security = new SecurityValidator();
|
||||
$this->synchronizer = new RepositorySynchronizer(
|
||||
$this->api,
|
||||
$this->logger,
|
||||
@@ -215,8 +211,6 @@ class BulkSync extends CliFramework
|
||||
);
|
||||
|
||||
// Initialize plugin system
|
||||
$this->pluginFactory = new PluginFactory($this->logger, $this->metrics);
|
||||
$this->typeDetector = new ProjectTypeDetector($this->logger);
|
||||
|
||||
$this->log("✓ Enterprise components initialized for platform: {$platform}", 'INFO');
|
||||
return true;
|
||||
|
||||
@@ -58,8 +58,6 @@ class RepoCleanup extends CliFramework
|
||||
|
||||
private ApiClient $api;
|
||||
private GitPlatformAdapter $adapter;
|
||||
private AuditLogger $logger;
|
||||
private MetricsCollector $metrics;
|
||||
protected bool $dryRun = false;
|
||||
private float $startTime;
|
||||
|
||||
@@ -99,8 +97,6 @@ class RepoCleanup extends CliFramework
|
||||
return 1;
|
||||
}
|
||||
|
||||
$this->logger = new AuditLogger('repo_cleanup');
|
||||
$this->metrics = new MetricsCollector('repo_cleanup');
|
||||
|
||||
$this->logMsg("🧹 MokoStandards Repository Cleanup v" . self::VERSION);
|
||||
$this->logMsg("Organization: {$org}");
|
||||
|
||||
@@ -48,7 +48,6 @@ class JoomlaRelease extends CliFramework
|
||||
];
|
||||
|
||||
private ApiClient $api;
|
||||
private AuditLogger $logger;
|
||||
private \MokoEnterprise\GitPlatformAdapter $adapter;
|
||||
|
||||
protected function configure(): void
|
||||
@@ -76,7 +75,6 @@ class JoomlaRelease extends CliFramework
|
||||
$config = Config::load();
|
||||
$this->adapter = PlatformAdapterFactory::create($config);
|
||||
$this->api = $this->adapter->getApiClient();
|
||||
$this->logger = new AuditLogger('joomla_release');
|
||||
|
||||
if ($repo !== '') {
|
||||
$path = $this->cloneRepo($repo);
|
||||
|
||||
@@ -124,7 +124,6 @@ class ApiClient
|
||||
private ?DateTime $circuitLastFailure = null;
|
||||
|
||||
/** @var LoggerInterface|null Optional logger instance */
|
||||
private ?LoggerInterface $logger = null;
|
||||
|
||||
/** @var array<string, mixed> Request metrics */
|
||||
private array $metrics = [
|
||||
@@ -179,7 +178,6 @@ class ApiClient
|
||||
$this->circuitBreakerTimeout = $circuitBreakerTimeout;
|
||||
$this->enableCaching = $enableCaching;
|
||||
$this->userAgent = $userAgent;
|
||||
$this->logger = $logger;
|
||||
$this->authScheme = $authScheme;
|
||||
|
||||
// Initialize HTTP client
|
||||
|
||||
@@ -202,7 +202,7 @@ interface GitPlatformAdapter
|
||||
* @param string $repo Repository name
|
||||
* @param string $path File path within the repository
|
||||
* @param string|null $ref Branch/tag/SHA reference (null = default branch)
|
||||
* @return array{content: string, sha: string, size: int, encoding: string} File data (content is base64-encoded)
|
||||
* @return array<string, mixed> File data (content is base64-encoded)
|
||||
*/
|
||||
public function getFileContents(string $org, string $repo, string $path, ?string $ref = null): array;
|
||||
|
||||
|
||||
@@ -29,7 +29,6 @@ class RepositoryHealthChecker
|
||||
{
|
||||
private AuditLogger $logger;
|
||||
private MetricsCollector $metrics;
|
||||
private UnifiedValidator $validator;
|
||||
|
||||
private array $results = [
|
||||
'categories' => [],
|
||||
@@ -50,7 +49,6 @@ class RepositoryHealthChecker
|
||||
) {
|
||||
$this->logger = $logger ?? new AuditLogger('repo_health_checker');
|
||||
$this->metrics = $metrics ?? new MetricsCollector();
|
||||
$this->validator = $validator ?? new UnifiedValidator();
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -39,7 +39,6 @@ class RepositorySynchronizer
|
||||
private const VERSION_BRANCH = 'version/' . self::STANDARDS_MAJOR;
|
||||
private const SYNC_BRANCH = 'chore/sync-mokostandards-v' . self::STANDARDS_MINOR;
|
||||
|
||||
private ApiClient $apiClient;
|
||||
private GitPlatformAdapter $adapter;
|
||||
private AuditLogger $logger;
|
||||
private MetricsCollector $metrics;
|
||||
@@ -65,7 +64,6 @@ class RepositorySynchronizer
|
||||
?DefinitionParser $definitionParser = null,
|
||||
?GitPlatformAdapter $adapter = null
|
||||
) {
|
||||
$this->apiClient = $apiClient;
|
||||
$this->adapter = $adapter ?? new MokoGiteaAdapter($apiClient);
|
||||
$this->logger = $logger;
|
||||
$this->metrics = $metrics;
|
||||
|
||||
@@ -96,8 +96,6 @@ class TransactionStep
|
||||
*/
|
||||
class Transaction
|
||||
{
|
||||
private const VERSION = '04.06.00';
|
||||
|
||||
private string $name;
|
||||
/** @var array<int, TransactionStep> */
|
||||
private array $steps = [];
|
||||
|
||||
@@ -0,0 +1,235 @@
|
||||
parameters:
|
||||
ignoreErrors:
|
||||
-
|
||||
message: '#^Comparison operation "\>" between 30 and 0 is always true\.$#'
|
||||
identifier: greater.alwaysTrue
|
||||
count: 1
|
||||
path: automation/bulk_sync.php
|
||||
|
||||
-
|
||||
message: '#^Method BulkSync\:\:prioritizeRepositories\(\) is unused\.$#'
|
||||
identifier: method.unused
|
||||
count: 1
|
||||
path: automation/bulk_sync.php
|
||||
|
||||
-
|
||||
message: '#^Right side of \|\| is always false\.$#'
|
||||
identifier: booleanOr.rightAlwaysFalse
|
||||
count: 1
|
||||
path: automation/repo_cleanup.php
|
||||
|
||||
-
|
||||
message: '#^Method ClientDashboard\:\:discoverClients\(\) never returns null so it can be removed from the return type\.$#'
|
||||
identifier: return.unusedType
|
||||
count: 1
|
||||
path: cli/client_dashboard.php
|
||||
|
||||
-
|
||||
message: '#^Negated boolean expression is always false\.$#'
|
||||
identifier: booleanNot.alwaysFalse
|
||||
count: 1
|
||||
path: cli/client_provision.php
|
||||
|
||||
-
|
||||
message: '#^Offset 1 on array\{list\<string\>, list\<non\-empty\-string\>\} on left side of \?\? always exists and is not nullable\.$#'
|
||||
identifier: nullCoalesce.offset
|
||||
count: 1
|
||||
path: cli/joomla_compat_check.php
|
||||
|
||||
-
|
||||
message: '#^Comparison operation "\>" between 0 and 0 is always false\.$#'
|
||||
identifier: greater.alwaysFalse
|
||||
count: 1
|
||||
path: cli/release_validate.php
|
||||
|
||||
-
|
||||
message: '#^Empty array passed to foreach\.$#'
|
||||
identifier: foreach.emptyArray
|
||||
count: 1
|
||||
path: cli/release_validate.php
|
||||
|
||||
-
|
||||
message: '#^Comparison operation "\>" between 0 and 0 is always false\.$#'
|
||||
identifier: greater.alwaysFalse
|
||||
count: 1
|
||||
path: cli/release_verify.php
|
||||
|
||||
-
|
||||
message: '#^Empty array passed to foreach\.$#'
|
||||
identifier: foreach.emptyArray
|
||||
count: 1
|
||||
path: cli/release_verify.php
|
||||
|
||||
-
|
||||
message: '#^Call to function is_array\(\) with array\<mixed\> will always evaluate to true\.$#'
|
||||
identifier: function.alreadyNarrowedType
|
||||
count: 1
|
||||
path: cli/sync_rulesets.php
|
||||
|
||||
-
|
||||
message: '#^Offset ''alpha''\|''beta''\|''development''\|''rc''\|''stable'' on array\{stable\: '''', rc\: ''\-rc'', beta\: ''\-beta'', alpha\: ''\-alpha'', development\: ''\-dev''\} on left side of \?\? always exists and is not nullable\.$#'
|
||||
identifier: nullCoalesce.offset
|
||||
count: 1
|
||||
path: cli/updates_xml_build.php
|
||||
|
||||
-
|
||||
message: '#^Offset ''alpha''\|''beta''\|''development''\|''rc''\|''stable'' on array\{stable\: ''stable'', rc\: ''rc'', beta\: ''beta'', alpha\: ''alpha'', development\: ''development''\} on left side of \?\? always exists and is not nullable\.$#'
|
||||
identifier: nullCoalesce.offset
|
||||
count: 1
|
||||
path: cli/updates_xml_build.php
|
||||
|
||||
-
|
||||
message: '#^Constructor of class MokoEnterprise\\ApiClient has an unused parameter \$logger\.$#'
|
||||
identifier: constructor.unusedParameter
|
||||
count: 1
|
||||
path: lib/Enterprise/ApiClient.php
|
||||
|
||||
-
|
||||
message: '#^Property MokoEnterprise\\AuditLogger\:\:\$retentionDays is never read, only written\.$#'
|
||||
identifier: property.onlyWritten
|
||||
count: 1
|
||||
path: lib/Enterprise/AuditLogger.php
|
||||
|
||||
-
|
||||
message: '#^Expression on left side of \?\? is not nullable\.$#'
|
||||
identifier: nullCoalesce.expr
|
||||
count: 1
|
||||
path: lib/Enterprise/GitHubAdapter.php
|
||||
|
||||
-
|
||||
message: '#^Call to function is_int\(\) with string will always evaluate to false\.$#'
|
||||
identifier: function.impossibleType
|
||||
count: 1
|
||||
path: lib/Enterprise/MokoGiteaAdapter.php
|
||||
|
||||
-
|
||||
message: '#^Offset ''go''\|''java''\|''js''\|''php''\|''py''\|''ts'' on array\{js\: ''JavaScript'', ts\: ''TypeScript'', py\: ''Python'', java\: ''Java'', go\: ''Go'', php\: ''PHP''\} on left side of \?\? always exists and is not nullable\.$#'
|
||||
identifier: nullCoalesce.offset
|
||||
count: 1
|
||||
path: lib/Enterprise/Plugins/ApiPlugin.php
|
||||
|
||||
-
|
||||
message: '#^Right side of \|\| is always false\.$#'
|
||||
identifier: booleanOr.rightAlwaysFalse
|
||||
count: 1
|
||||
path: lib/Enterprise/Plugins/ApiPlugin.php
|
||||
|
||||
-
|
||||
message: '#^Right side of \|\| is always false\.$#'
|
||||
identifier: booleanOr.rightAlwaysFalse
|
||||
count: 2
|
||||
path: lib/Enterprise/Plugins/GenericPlugin.php
|
||||
|
||||
-
|
||||
message: '#^Right side of \|\| is always false\.$#'
|
||||
identifier: booleanOr.rightAlwaysFalse
|
||||
count: 1
|
||||
path: lib/Enterprise/Plugins/MobilePlugin.php
|
||||
|
||||
-
|
||||
message: '#^Right side of \|\| is always false\.$#'
|
||||
identifier: booleanOr.rightAlwaysFalse
|
||||
count: 1
|
||||
path: lib/Enterprise/Plugins/NodeJsPlugin.php
|
||||
|
||||
-
|
||||
message: '#^Right side of \|\| is always false\.$#'
|
||||
identifier: booleanOr.rightAlwaysFalse
|
||||
count: 1
|
||||
path: lib/Enterprise/Plugins/PythonPlugin.php
|
||||
|
||||
-
|
||||
message: '#^Offset ''recommended_files'' on array\{required_files\: array\{''\*\.php''\}, recommended_files\: array\{''README\.md'', ''readme\.txt''\}, required_fields\: array\{''Plugin Name\|Theme…'', ''Version''\}\}\|array\{required_files\: array\{''\*\.tf''\}, recommended_files\: array\{''README\.md'', ''variables\.tf'', ''outputs\.tf''\}, required_fields\: array\{\}\}\|array\{required_files\: array\{''package\.json''\}\|array\{''package\.json…''\}, recommended_files\: array\{0\: ''README\.md'', 1\: ''\.gitignore'', 2\?\: ''tsconfig\.json''\}, required_fields\: array\{0\: ''name'', 1\: ''version'', 2\?\: ''description''\}\}\|array\{required_files\: array\{''setup\.py\|pyproject…''\}, recommended_files\: array\{''README\.md'', ''requirements\.txt'', ''\.gitignore''\}, required_fields\: array\{''name'', ''version''\}\}\|array\{required_files\: array\{\}, recommended_files\: array\{''README\.md'', ''openapi\.yaml…'', ''Dockerfile''\}, required_fields\: array\{\}\} on left side of \?\? always exists and is not nullable\.$#'
|
||||
identifier: nullCoalesce.offset
|
||||
count: 1
|
||||
path: lib/Enterprise/ProjectConfigValidator.php
|
||||
|
||||
-
|
||||
message: '#^Offset ''required_fields'' on array\{required_files\: array\{''\*\.php''\}, recommended_files\: array\{''README\.md'', ''readme\.txt''\}, required_fields\: array\{''Plugin Name\|Theme…'', ''Version''\}\}\|array\{required_files\: array\{''\*\.tf''\}, recommended_files\: array\{''README\.md'', ''variables\.tf'', ''outputs\.tf''\}, required_fields\: array\{\}\}\|array\{required_files\: array\{''package\.json''\}\|array\{''package\.json…''\}, recommended_files\: array\{0\: ''README\.md'', 1\: ''\.gitignore'', 2\?\: ''tsconfig\.json''\}, required_fields\: array\{0\: ''name'', 1\: ''version'', 2\?\: ''description''\}\}\|array\{required_files\: array\{''setup\.py\|pyproject…''\}, recommended_files\: array\{''README\.md'', ''requirements\.txt'', ''\.gitignore''\}, required_fields\: array\{''name'', ''version''\}\}\|array\{required_files\: array\{\}, recommended_files\: array\{''README\.md'', ''openapi\.yaml…'', ''Dockerfile''\}, required_fields\: array\{\}\} on left side of \?\? always exists and is not nullable\.$#'
|
||||
identifier: nullCoalesce.offset
|
||||
count: 1
|
||||
path: lib/Enterprise/ProjectConfigValidator.php
|
||||
|
||||
-
|
||||
message: '#^Offset ''required_files'' on array\{required_files\: array\{''\*\.php''\}, recommended_files\: array\{''README\.md'', ''readme\.txt''\}, required_fields\: array\{''Plugin Name\|Theme…'', ''Version''\}\}\|array\{required_files\: array\{''\*\.tf''\}, recommended_files\: array\{''README\.md'', ''variables\.tf'', ''outputs\.tf''\}, required_fields\: array\{\}\}\|array\{required_files\: array\{''package\.json''\}\|array\{''package\.json…''\}, recommended_files\: array\{0\: ''README\.md'', 1\: ''\.gitignore'', 2\?\: ''tsconfig\.json''\}, required_fields\: array\{0\: ''name'', 1\: ''version'', 2\?\: ''description''\}\}\|array\{required_files\: array\{''setup\.py\|pyproject…''\}, recommended_files\: array\{''README\.md'', ''requirements\.txt'', ''\.gitignore''\}, required_fields\: array\{''name'', ''version''\}\}\|array\{required_files\: array\{\}, recommended_files\: array\{''README\.md'', ''openapi\.yaml…'', ''Dockerfile''\}, required_fields\: array\{\}\} on left side of \?\? always exists and is not nullable\.$#'
|
||||
identifier: nullCoalesce.offset
|
||||
count: 1
|
||||
path: lib/Enterprise/ProjectConfigValidator.php
|
||||
|
||||
-
|
||||
message: '#^Constructor of class MokoEnterprise\\RepositoryHealthChecker has an unused parameter \$validator\.$#'
|
||||
identifier: constructor.unusedParameter
|
||||
count: 1
|
||||
path: lib/Enterprise/RepositoryHealthChecker.php
|
||||
|
||||
-
|
||||
message: '#^Call to function is_array\(\) with non\-empty\-array\<mixed\> will always evaluate to true\.$#'
|
||||
identifier: function.alreadyNarrowedType
|
||||
count: 1
|
||||
path: lib/Enterprise/RepositorySynchronizer.php
|
||||
|
||||
-
|
||||
message: '#^Method MokoEnterprise\\RepositorySynchronizer\:\:fetchModuleId\(\) is unused\.$#'
|
||||
identifier: method.unused
|
||||
count: 1
|
||||
path: lib/Enterprise/RepositorySynchronizer.php
|
||||
|
||||
-
|
||||
message: '#^Offset ''summary'' on array\{number\: int\|null, summary\: array\} on left side of \?\? always exists and is not nullable\.$#'
|
||||
identifier: nullCoalesce.offset
|
||||
count: 1
|
||||
path: lib/Enterprise/RepositorySynchronizer.php
|
||||
|
||||
-
|
||||
message: '#^Right side of && is always true\.$#'
|
||||
identifier: booleanAnd.rightAlwaysTrue
|
||||
count: 1
|
||||
path: lib/Enterprise/RepositorySynchronizer.php
|
||||
|
||||
-
|
||||
message: '#^Strict comparison using \!\=\= between array\<string, mixed\> and '''' will always evaluate to true\.$#'
|
||||
identifier: notIdentical.alwaysTrue
|
||||
count: 1
|
||||
path: lib/Enterprise/RepositorySynchronizer.php
|
||||
|
||||
-
|
||||
message: '#^Method EnterpriseReadinessChecker\:\:displayResults\(\) is unused\.$#'
|
||||
identifier: method.unused
|
||||
count: 1
|
||||
path: validate/check_enterprise_readiness.php
|
||||
|
||||
-
|
||||
message: '#^Unreachable statement \- code above always terminates\.$#'
|
||||
identifier: deadCode.unreachable
|
||||
count: 1
|
||||
path: validate/check_enterprise_readiness.php
|
||||
|
||||
-
|
||||
message: '#^Method CheckFileIntegrity\:\:rsyncDryRun\(\) never returns null so it can be removed from the return type\.$#'
|
||||
identifier: return.unusedType
|
||||
count: 1
|
||||
path: validate/check_file_integrity.php
|
||||
|
||||
-
|
||||
message: '#^Property RepoHealthChecker\:\:\$logger is never read, only written\.$#'
|
||||
identifier: property.onlyWritten
|
||||
count: 1
|
||||
path: validate/check_repo_health.php
|
||||
|
||||
-
|
||||
message: '#^Property RepoHealthChecker\:\:\$metrics is never read, only written\.$#'
|
||||
identifier: property.onlyWritten
|
||||
count: 1
|
||||
path: validate/check_repo_health.php
|
||||
|
||||
-
|
||||
message: '#^Match expression does not handle remaining value\: mixed$#'
|
||||
identifier: match.unhandled
|
||||
count: 1
|
||||
path: validate/scan_drift.php
|
||||
|
||||
-
|
||||
message: '#^Unreachable statement \- code above always terminates\.$#'
|
||||
identifier: deadCode.unreachable
|
||||
count: 2
|
||||
path: validate/scan_drift.php
|
||||
+4
-1
@@ -6,7 +6,7 @@
|
||||
|
||||
# PHPStan configuration for moko-platform projects
|
||||
parameters:
|
||||
level: 3
|
||||
level: 4
|
||||
paths:
|
||||
- lib
|
||||
- validate
|
||||
@@ -21,3 +21,6 @@ parameters:
|
||||
|
||||
checkFunctionNameCase: true
|
||||
checkInternalClassCaseSensitivity: true
|
||||
|
||||
includes:
|
||||
- phpstan-baseline.neon
|
||||
|
||||
@@ -35,10 +35,8 @@ use MokoEnterprise\{AuditLogger, CliFramework, MetricsCollector, PluginFactory};
|
||||
|
||||
class RepoHealthChecker extends CliFramework
|
||||
{
|
||||
private const DEFAULT_THRESHOLD = 70.0;
|
||||
private AuditLogger $logger;
|
||||
private MetricsCollector $metrics;
|
||||
private PluginFactory $pluginFactory;
|
||||
private string $apiBaseUrl = 'https://git.mokoconsulting.tech/api/v1';
|
||||
|
||||
private array $results = [
|
||||
@@ -61,7 +59,6 @@ class RepoHealthChecker extends CliFramework
|
||||
parent::initialize();
|
||||
$this->logger = new AuditLogger('repo_health_checker');
|
||||
$this->metrics = new MetricsCollector();
|
||||
$this->pluginFactory = new PluginFactory($this->logger, $this->metrics);
|
||||
$config = \MokoEnterprise\Config::load();
|
||||
$this->apiBaseUrl = rtrim($config->getString('gitea.url', 'https://git.mokoconsulting.tech'), '/') . '/api/v1';
|
||||
}
|
||||
|
||||
@@ -38,7 +38,6 @@ class DriftScanner extends CliFramework
|
||||
private const DEFAULT_ORG = 'mokoconsulting-tech';
|
||||
|
||||
private ApiClient $apiClient;
|
||||
private AuditLogger $logger;
|
||||
private MetricsCollector $metrics;
|
||||
private \MokoEnterprise\GitPlatformAdapter $adapter;
|
||||
|
||||
@@ -60,7 +59,6 @@ class DriftScanner extends CliFramework
|
||||
{
|
||||
parent::initialize();
|
||||
|
||||
$this->logger = new AuditLogger('drift_scanner');
|
||||
$this->metrics = new MetricsCollector();
|
||||
|
||||
// Initialize API client via platform adapter
|
||||
|
||||
Reference in New Issue
Block a user