2626import com .magento .idea .magento2uct .execution .process .OutputWrapper ;
2727import com .magento .idea .magento2uct .execution .scanner .ModuleFilesScanner ;
2828import com .magento .idea .magento2uct .execution .scanner .ModuleScanner ;
29+ import com .magento .idea .magento2uct .execution .scanner .ThemeFilesScanner ;
30+ import com .magento .idea .magento2uct .execution .scanner .ThemeScanner ;
2931import com .magento .idea .magento2uct .execution .scanner .data .ComponentData ;
3032import com .magento .idea .magento2uct .execution .scanner .filter .ExcludeMagentoBundledFilter ;
3133import com .magento .idea .magento2uct .inspections .UctInspectionManager ;
@@ -81,6 +83,7 @@ public void processTerminated(final @NotNull ProcessEvent event) {
8183 public void execute () {
8284 output .write ("Upgrade compatibility tool\n " );
8385 final PsiDirectory rootDirectory = getTargetPsiDirectory ();
86+ final PsiDirectory additionalDirectory = getAdditionalTargetPsiDirectory ();
8487
8588 if (rootDirectory == null ) {
8689 output .print (
@@ -99,6 +102,10 @@ public void execute() {
99102 );
100103 final ReportBuilder reportBuilder = new ReportBuilder (project );
101104 final UctReportOutputUtil outputUtil = new UctReportOutputUtil (output );
105+ final ThemeScanner themeScanner = new ThemeScanner (
106+ additionalDirectory ,
107+ new ExcludeMagentoBundledFilter ()
108+ );
102109
103110 ApplicationManager .getApplication ().executeOnPooledThread (() -> {
104111 ApplicationManager .getApplication ().runReadAction (() -> {
@@ -152,6 +159,56 @@ public void execute() {
152159 }
153160 }
154161 }
162+ for (final ComponentData themeComponentData : themeScanner ) {
163+ if (process .isProcessTerminated ()) {
164+ return ;
165+ }
166+ boolean isThemeHeaderPrinted = false ;
167+
168+ for (final PsiFile psiFile : new ThemeFilesScanner (themeComponentData )) {
169+ if (!(psiFile instanceof PhpFile )) {
170+ continue ;
171+ }
172+
173+ final String filename = psiFile .getVirtualFile ().getPath ();
174+ final UctInspectionManager inspectionManager = new UctInspectionManager (
175+ project
176+ );
177+ final UctProblemsHolder fileProblemsHolder = inspectionManager .run (psiFile );
178+
179+ if (fileProblemsHolder == null ) {
180+ continue ;
181+ }
182+
183+ if (fileProblemsHolder .hasResults ()) {
184+ if (!isThemeHeaderPrinted ) {
185+ outputUtil .printModuleName (themeComponentData .getName ());
186+ isThemeHeaderPrinted = true ;
187+ }
188+ outputUtil .printProblemFile (filename );
189+ }
190+ final List <ProblemDescriptor > problems = SortDescriptorResultsUtil .sort (
191+ FilterDescriptorResultsUtil .filter (fileProblemsHolder )
192+ );
193+
194+ for (final ProblemDescriptor descriptor : problems ) {
195+ final SupportedIssue issue = fileProblemsHolder .getIssue (descriptor );
196+
197+ final String errorMessage = descriptor
198+ .getDescriptionTemplate ()
199+ .substring (6 )
200+ .trim ();
201+ summary .addToSummary (issue .getLevel ());
202+ reportBuilder .addIssue (
203+ descriptor .getLineNumber () + 1 ,
204+ filename ,
205+ errorMessage ,
206+ issue
207+ );
208+ outputUtil .printIssue (descriptor , issue .getCode ());
209+ }
210+ }
211+ }
155212 summary .trackProcessFinished ();
156213 summary .setProcessedModules (scanner .getModuleCount ());
157214 outputUtil .printSummary (summary );
@@ -201,4 +258,25 @@ public void execute() {
201258
202259 return PsiManager .getInstance (project ).findDirectory (targetDirVirtualFile );
203260 }
261+
262+ /**
263+ * Get additional target psi directory.
264+ *
265+ * @return PsiDirectory
266+ */
267+ private @ Nullable PsiDirectory getAdditionalTargetPsiDirectory () {
268+ final String additionalTargetDirPath = settingsService .getAdditionalPath ();
269+
270+ if (additionalTargetDirPath == null ) {
271+ return null ;
272+ }
273+ final VirtualFile targetDirVirtualFile
274+ = VfsUtil .findFile (Paths .get (additionalTargetDirPath ), false );
275+
276+ if (targetDirVirtualFile == null ) {
277+ return null ;
278+ }
279+
280+ return PsiManager .getInstance (project ).findDirectory (targetDirVirtualFile );
281+ }
204282}
0 commit comments