fix pmd-vf
needs a dependency mechanism to prevent apex from being pruned
This commit is contained in:
@@ -4,10 +4,10 @@
|
||||
|
||||
package net.sourceforge.pmd.lang.vf;
|
||||
|
||||
import net.sourceforge.pmd.processor.BatchLanguageProcessor;
|
||||
import net.sourceforge.pmd.lang.LanguageVersionHandler;
|
||||
import net.sourceforge.pmd.lang.ast.Parser;
|
||||
import net.sourceforge.pmd.lang.vf.ast.VfParser;
|
||||
import net.sourceforge.pmd.processor.BatchLanguageProcessor;
|
||||
|
||||
public class VfHandler extends BatchLanguageProcessor<VfLanguageProperties> implements LanguageVersionHandler {
|
||||
|
||||
|
@@ -5,7 +5,9 @@
|
||||
package net.sourceforge.pmd.lang.vf;
|
||||
|
||||
import net.sourceforge.pmd.lang.Language;
|
||||
import net.sourceforge.pmd.lang.LanguagePropertyBundle;
|
||||
import net.sourceforge.pmd.lang.LanguageRegistry;
|
||||
import net.sourceforge.pmd.lang.apex.ApexLanguageModule;
|
||||
import net.sourceforge.pmd.lang.impl.SimpleLanguageModuleBase;
|
||||
|
||||
|
||||
@@ -18,10 +20,17 @@ public class VfLanguageModule extends SimpleLanguageModuleBase {
|
||||
public static final String TERSE_NAME = "vf";
|
||||
|
||||
public VfLanguageModule() {
|
||||
super(LanguageMetadata.withId(TERSE_NAME).name(NAME).extensions("page", "component"),
|
||||
super(LanguageMetadata.withId(TERSE_NAME).name(NAME)
|
||||
.extensions("page", "component")
|
||||
.dependsOnLanguage(ApexLanguageModule.TERSE_NAME),
|
||||
p -> new VfHandler((VfLanguageProperties) p));
|
||||
}
|
||||
|
||||
@Override
|
||||
public LanguagePropertyBundle newPropertyBundle() {
|
||||
return new VfLanguageProperties();
|
||||
}
|
||||
|
||||
public static Language getInstance() {
|
||||
return LanguageRegistry.PMD.getLanguageByFullName(NAME);
|
||||
}
|
||||
|
@@ -40,7 +40,7 @@ class ApexClassPropertyTypes extends SalesforceFieldTypes {
|
||||
private final ApexLanguageProcessor apexProcessor;
|
||||
private final LanguageProcessorRegistry lpReg;
|
||||
|
||||
public ApexClassPropertyTypes(LanguageProcessorRegistry lpReg) {
|
||||
ApexClassPropertyTypes(LanguageProcessorRegistry lpReg) {
|
||||
this.apexProcessor = (ApexLanguageProcessor) lpReg.getProcessor(ApexLanguageModule.getInstance());
|
||||
this.lpReg = lpReg;
|
||||
}
|
||||
|
@@ -15,6 +15,7 @@ import java.util.Map;
|
||||
import org.apache.commons.lang3.tuple.Pair;
|
||||
import org.junit.Test;
|
||||
|
||||
import net.sourceforge.pmd.lang.LanguageProcessorRegistry;
|
||||
import net.sourceforge.pmd.lang.vf.VFTestUtils;
|
||||
|
||||
import apex.jorje.semantic.symbol.type.BasicType;
|
||||
@@ -29,7 +30,9 @@ public class ApexClassPropertyTypesVisitorTest {
|
||||
.toAbsolutePath();
|
||||
|
||||
ApexClassPropertyTypesVisitor visitor = new ApexClassPropertyTypesVisitor();
|
||||
ApexClassPropertyTypes.parseApex(apexPath).acceptVisitor(visitor, null);
|
||||
try (LanguageProcessorRegistry lpReg = VFTestUtils.fakeLpRegistry()) {
|
||||
new ApexClassPropertyTypes(lpReg).parseApex(apexPath).acceptVisitor(visitor, null);
|
||||
}
|
||||
|
||||
List<Pair<String, BasicType>> variables = visitor.getVariables();
|
||||
assertEquals(7, variables.size());
|
||||
|
@@ -4,7 +4,11 @@
|
||||
|
||||
package net.sourceforge.pmd.lang.vf.ast;
|
||||
|
||||
import org.checkerframework.checker.nullness.qual.NonNull;
|
||||
|
||||
import net.sourceforge.pmd.lang.LanguageProcessorRegistry;
|
||||
import net.sourceforge.pmd.lang.ast.test.BaseParsingHelper;
|
||||
import net.sourceforge.pmd.lang.vf.VFTestUtils;
|
||||
import net.sourceforge.pmd.lang.vf.VfLanguageModule;
|
||||
|
||||
public final class VfParsingHelper extends BaseParsingHelper<VfParsingHelper, ASTCompilationUnit> {
|
||||
@@ -15,6 +19,12 @@ public final class VfParsingHelper extends BaseParsingHelper<VfParsingHelper, AS
|
||||
super(VfLanguageModule.NAME, ASTCompilationUnit.class, params);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected @NonNull LanguageProcessorRegistry loadLanguages(@NonNull Params params) {
|
||||
// We need to register both apex and VF, the default is just to register VF
|
||||
return VFTestUtils.fakeLpRegistry();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected VfParsingHelper clone(Params params) {
|
||||
return new VfParsingHelper(params);
|
||||
|
Reference in New Issue
Block a user