@@ -130,32 +130,39 @@ final public static function prepareFixtureWithSniff(
130130 string $ fixtureFile ,
131131 array $ properties = []
132132 ): LocalFile {
133- $ sniffs = [self ::getFilePathFromClass ($ sniffClassName )];
134-
135133 $ config = new Config ();
136134 $ config ->standards = [];
137135
138- $ ruleName = str_replace (
139- 'Sniff ' ,
140- '' ,
141- class_basename ($ sniffClassName )
142- );
143-
144136 /** @var Ruleset $ruleset */
145137 $ ruleset = (new ReflectionClass (Ruleset::class))
146138 ->newInstanceWithoutConstructor ();
147139
148140 $ msgCacheProperty = (new ReflectionClass (Ruleset::class))->getProperty ('msgCache ' );
149141 $ msgCacheProperty ->setValue ($ ruleset , new MessageCollector ());
150142
151- $ ruleset ->ruleset = [
152- "PhpInsights.Sniffs. {$ ruleName }" => [
153- 'properties ' => $ properties ,
154- ],
155- ];
143+ // Manually register the sniff to bypass PHPCS naming convention validation
144+ // which rejects sniffs outside the Standard\Sniffs\Category\SniffName namespace
145+ $ sniffObject = new $ sniffClassName ();
146+
147+ foreach ($ properties as $ name => $ value ) {
148+ $ sniffObject ->{$ name } = $ value ;
149+ }
150+
151+ $ sniffCode = 'PhpInsights.Sniffs. ' . str_replace ('Sniff ' , '' , class_basename ($ sniffClassName ));
156152
157- $ ruleset ->registerSniffs ($ sniffs , [], []);
158- $ ruleset ->populateTokenListeners ();
153+ $ ruleset ->sniffs [$ sniffClassName ] = $ sniffObject ;
154+ $ ruleset ->sniffCodes [$ sniffCode ] = $ sniffClassName ;
155+ $ ruleset ->tokenListeners = [];
156+
157+ foreach ($ sniffObject ->register () as $ token ) {
158+ $ ruleset ->tokenListeners [$ token ][$ sniffClassName ] = [
159+ 'class ' => $ sniffClassName ,
160+ 'source ' => $ sniffCode ,
161+ 'tokenizers ' => ['PHP ' ],
162+ 'ignore ' => [],
163+ 'include ' => [],
164+ ];
165+ }
159166
160167 return new LocalFile ($ fixtureFile , $ ruleset , $ config );
161168 }
0 commit comments