Skip to content
Merged
Changes from 1 commit
Commits
Show all changes
34 commits
Select commit Hold shift + click to select a range
56e2de8
AC-663: Create phpcs static check for ClassesTest::testPhpCode
svera Sep 6, 2021
c9703a6
AC-663: Create phpcs static check for ClassesTest::testPhpCode
svera Sep 6, 2021
5a83385
AC-663: Create phpcs static check for ClassesTest::testPhpCode
svera Sep 9, 2021
5b40712
AC-663: Create phpcs static check for ClassesTest::testPhpCode
svera Sep 9, 2021
4fe226e
Merge branch 'develop' of github.com:magento/magento-coding-standard …
svera Sep 15, 2021
9d542d9
AC-663: Create phpcs static check for ClassesTest::testPhpCode
svera Sep 16, 2021
2c5c076
AC-663: Create phpcs static check for ClassesTest::testPhpCode
svera Sep 16, 2021
3636e9d
AC-663: Create phpcs static check for ClassesTest::testPhpCode
svera Sep 16, 2021
0293560
AC-663: Create phpcs static check for ClassesTest::testPhpCode
svera Sep 16, 2021
b91d0d4
AC-663: Create phpcs static check for ClassesTest::testPhpCode
svera Sep 16, 2021
717c998
AC-663: Create phpcs static check for ClassesTest::testPhpCode
svera Sep 16, 2021
5810c6e
AC-663: Create phpcs static check for ClassesTest::testPhpCode
svera Sep 16, 2021
0bc42a6
AC-663: Create phpcs static check for ClassesTest::testPhpCode
svera Sep 16, 2021
19bb57b
AC-663: Create phpcs static check for ClassesTest::testPhpCode
svera Sep 16, 2021
48a5816
AC-663: Create phpcs static check for ClassesTest::testPhpCode
svera Sep 16, 2021
b10df58
AC-663: Create phpcs static check for ClassesTest::testPhpCode
svera Sep 17, 2021
64fa0cc
AC-663: Create phpcs static check for ClassesTest::testPhpCode
svera Sep 17, 2021
5aa5721
AC-663: Create phpcs static check for ClassesTest::testPhpCode
svera Sep 17, 2021
389d7ca
Update Magento2/Sniffs/Legacy/ClassReferencesInConfigurationFilesSnif…
svera Sep 20, 2021
c480100
Update Magento2/Sniffs/Legacy/ClassReferencesInConfigurationFilesSnif…
svera Sep 20, 2021
c0ead7c
Update Magento2/Sniffs/Legacy/ClassReferencesInConfigurationFilesSnif…
svera Sep 20, 2021
7b38922
Update Magento2/Sniffs/Legacy/ClassReferencesInConfigurationFilesSnif…
svera Sep 20, 2021
9a69638
Update Magento2/ruleset.xml
svera Sep 20, 2021
936c28c
AC-663: Create phpcs static check for ClassesTest::testPhpCode
svera Sep 20, 2021
fbe2c1c
AC-663: Create phpcs static check for ClassesTest::testPhpCode
svera Sep 21, 2021
34169b2
AC-663: Create phpcs static check for ClassesTest::testPhpCode
svera Sep 21, 2021
6558e29
Merge branch 'develop' of github.com:magento/magento-coding-standard …
svera Oct 13, 2021
36776b8
AC-663: Create phpcs static check for ClassesTest::testPhpCode
svera Oct 13, 2021
39267ba
Update Magento2/Sniffs/Legacy/ClassReferencesInConfigurationFilesSnif…
svera Oct 13, 2021
8402f7d
AC-663: Create phpcs static check for ClassesTest::testPhpCode
svera Oct 13, 2021
1338211
Merge branch 'AC-663_phpcs-ClassesTest' of github.com:svera/magento-c…
svera Oct 13, 2021
ee4c7d6
AC-663: Create phpcs static check for ClassesTest::testPhpCode
svera Oct 13, 2021
08ed34b
Update Magento2/Sniffs/Legacy/ClassReferencesInConfigurationFilesSnif…
svera Oct 14, 2021
c9ca788
AC-663: Create phpcs static check for ClassesTest::testPhpCode
svera Oct 14, 2021
File filter

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
AC-663: Create phpcs static check for ClassesTest::testPhpCode
  • Loading branch information
svera committed Sep 17, 2021
commit b10df58d041ee7bf6993d9e76013c5c3e1cb62fb
106 changes: 46 additions & 60 deletions Magento2/Sniffs/Legacy/ClassReferencesInConfigurationFilesSniff.php
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,10 @@ class ClassReferencesInConfigurationFilesSniff implements Sniff
private const ERROR_MESSAGE_MODULE = 'Attribute does not follow expected format in module';
private const ERROR_CODE_MODULE = 'WrongXMLModule';

private const FROM_CONTENT = 1;
private const FROM_NAME = 2;
private const FROM_ATTRIBUTE = 3;

/**
* @inheritdoc
*/
Expand Down Expand Up @@ -55,7 +59,7 @@ public function process(File $phpcsFile, $stackPtr)
$classes = $this->collectClassesInConfig($xml);
$this->assertNonFactoryName($phpcsFile, $classes);

$modules = $this->getXmlAttributeValues($xml, '//@module', 'module');
$modules = $this->getValuesFromXml($xml, '//@module', self::FROM_ATTRIBUTE, 'module');
$this->assertNonFactoryNameModule($phpcsFile, $modules);
}

Expand Down Expand Up @@ -122,21 +126,39 @@ private function getFormattedXML(File $phpcsFile)
*/
private function collectClassesInConfig(SimpleXMLElement $xml): array
{
$classes = $this->getXmlNode(
$classes = $this->getValuesFromXml(
$xml,
'
/config//resource_adapter | /config/*[not(name()="sections")]//class[not(ancestor::observers)]
| //model[not(parent::connection)] | //backend_model | //source_model | //price_model
| //model_token | //writer_model | //clone_model | //frontend_model | //working_model
| //admin_renderer | //renderer'
| //admin_renderer | //renderer',
self::FROM_CONTENT
);
$classes = array_merge(
$classes,
$this->getValuesFromXml(
$xml,
'//@backend_model',
self::FROM_ATTRIBUTE,
'backend_model'
)
);
$classes = array_merge($classes, $this->getXmlAttributeValues($xml, '//@backend_model', 'backend_model'));
$classes = array_merge($classes, $this->getXmlAttributeValues($xml, '/config//preference', 'type'));
$classes = array_merge(
$classes,
$this->getXmlNodeNames(
$this->getValuesFromXml(
$xml,
'/logging/*/expected_models/* | /logging/*/actions/*/expected_models/*'
'/config//preference',
self::FROM_ATTRIBUTE,
'type'
)
);
$classes = array_merge(
$classes,
$this->getValuesFromXml(
$xml,
'/logging/*/expected_models/* | /logging/*/actions/*/expected_models/*',
self::FROM_NAME
)
);

Expand All @@ -147,70 +169,34 @@ function (ExtendedNode $extendedNode) {
},
$classes
);
$classes = array_filter(
$classes,
function ($value) {
return !empty($value);
}
);

return $classes;
}

/**
* Get XML node text values using specified xPath
*
* The node must contain specified attribute
*
* Extract value from the specified $extractFrom which exist in the XML path
*
* @param SimpleXMLElement $xml
* @param string $xPath
* @param int $extractFrom
* @param string $attribute
* @return array
*/
private function getXmlNode(SimpleXMLElement $xml, string $xPath): array
private function getValuesFromXml(SimpleXMLElement $xml, string $xPath, int $extractFrom, string $attribute = ''): array
{
$result = [];
$nodes = $xml->xpath($xPath) ?: [];
foreach ($nodes as $node) {
$result[] = new ExtendedNode((string)$node, $node);
}
return $result;
}

/**
* Get XML node names using specified xPath
*
* @param SimpleXMLElement $xml
* @param string $xpath
* @return array
*/
private function getXmlNodeNames(SimpleXMLElement $xml, string $xpath): array
{
$result = [];
$nodes = $xml->xpath($xpath) ?: [];
foreach ($nodes as $node) {
$result[] = new ExtendedNode($node->getName(), $node);
}
return $result;
}

/**
* Get XML node attribute values using specified xPath
*
* @param SimpleXMLElement $xml
* @param string $xPath
* @param string $attributeName
* @return array
*/
private function getXmlAttributeValues(SimpleXMLElement $xml, string $xPath, string $attributeName): array
{
$result = [];
$nodes = $xml->xpath($xPath) ?: [];
foreach ($nodes as $node) {
$nodeArray = (array)$node;
if (isset($nodeArray['@attributes'][$attributeName])) {
$result[] = new ExtendedNode($nodeArray['@attributes'][$attributeName], $node);
return array_map(function($item) use ($extractFrom, $attribute) {
switch ($extractFrom) {
case self::FROM_CONTENT:
return new ExtendedNode((string)$item, $item);
case self::FROM_NAME:
return new ExtendedNode($item->getName(), $item);
case self::FROM_ATTRIBUTE:
$nodeArray = (array)$item;
if (isset($nodeArray['@attributes'][$attribute])) {
return new ExtendedNode($nodeArray['@attributes'][$attribute], $item);
}
}
}
return $result;
}, $nodes);
}
}