Search in sources :

Example 1 with Source

use of meghanada.analyze.Source in project meghanada-server by mopemope.

the class Session method execMain.

public InputStream execMain(String path, boolean debug) throws Exception {
    boolean b = this.changeProject(path);
    Optional<Source> source = this.parseJavaSource(new File(path));
    return source.map(src -> {
        try {
            String clazz = src.getFQCN();
            return currentProject.execMainClass(clazz, debug);
        } catch (IOException e) {
            throw new UncheckedIOException(e);
        }
    }).orElse(null);
}
Also used : MavenProject(meghanada.project.maven.MavenProject) Matcher(java.util.regex.Matcher) Diagnostic(javax.tools.Diagnostic) Map(java.util.Map) CandidateUnit(meghanada.reflect.CandidateUnit) Objects.isNull(java.util.Objects.isNull) Path(java.nio.file.Path) GlobalCache(meghanada.cache.GlobalCache) TypeInfoSearcher(meghanada.typeinfo.TypeInfoSearcher) Collection(java.util.Collection) CompileResult(meghanada.analyze.CompileResult) StandardOpenOption(java.nio.file.StandardOpenOption) GradleProject(meghanada.project.gradle.GradleProject) Set(java.util.Set) Collectors(java.util.stream.Collectors) StandardCharsets(java.nio.charset.StandardCharsets) UncheckedIOException(java.io.UncheckedIOException) JavaFileObject(javax.tools.JavaFileObject) List(java.util.List) Declaration(meghanada.docs.declaration.Declaration) Stream(java.util.stream.Stream) TypeInfo(meghanada.typeinfo.TypeInfo) Logger(org.apache.logging.log4j.Logger) Optional(java.util.Optional) Project(meghanada.project.Project) Pattern(java.util.regex.Pattern) Objects.nonNull(java.util.Objects.nonNull) ProjectDependency(meghanada.project.ProjectDependency) Config(meghanada.config.Config) Joiner(com.google.common.base.Joiner) Location(meghanada.location.Location) Stopwatch(com.google.common.base.Stopwatch) HashMap(java.util.HashMap) JavaCompletion(meghanada.completion.JavaCompletion) Deque(java.util.Deque) ArrayList(java.util.ArrayList) JavaVariableCompletion(meghanada.completion.JavaVariableCompletion) HashSet(java.util.HashSet) Reference(meghanada.reference.Reference) ReferenceSearcher(meghanada.reference.ReferenceSearcher) LocationSearcher(meghanada.location.LocationSearcher) LocalVariable(meghanada.completion.LocalVariable) Properties(java.util.Properties) Files(java.nio.file.Files) IOException(java.io.IOException) CachedASMReflector(meghanada.reflect.asm.CachedASMReflector) FileUtils(meghanada.utils.FileUtils) EntryMessage(org.apache.logging.log4j.message.EntryMessage) File(java.io.File) ExecutionException(java.util.concurrent.ExecutionException) MeghanadaProject(meghanada.project.meghanada.MeghanadaProject) Paths(java.nio.file.Paths) ModuleHelper(meghanada.module.ModuleHelper) Source(meghanada.analyze.Source) DeclarationSearcher(meghanada.docs.declaration.DeclarationSearcher) ArrayDeque(java.util.ArrayDeque) Comparator(java.util.Comparator) Collections(java.util.Collections) LogManager(org.apache.logging.log4j.LogManager) InputStream(java.io.InputStream) UncheckedIOException(java.io.UncheckedIOException) UncheckedIOException(java.io.UncheckedIOException) IOException(java.io.IOException) File(java.io.File) Source(meghanada.analyze.Source)

Example 2 with Source

use of meghanada.analyze.Source in project meghanada-server by mopemope.

the class Project method mergeFromProjectConfig.

public Project mergeFromProjectConfig() throws ProjectParseException {
    final File configFile = new File(this.projectRoot, Config.MEGHANADA_CONF_FILE);
    if (configFile.exists()) {
        final com.typesafe.config.Config config = ConfigFactory.parseFile(configFile);
        // java.home
        if (config.hasPath(JAVA_HOME)) {
            String o = config.getString(JAVA_HOME);
            System.setProperty("java.home", o);
        }
        // java.home
        if (config.hasPath(JAVA_VERSION)) {
            String o = config.getString(JAVA_VERSION);
            System.setProperty("java.specification.version", o);
        }
        // compile-source
        if (config.hasPath(COMPILE_SOURCE)) {
            this.compileSource = config.getString(COMPILE_SOURCE);
        }
        // compile-source
        if (config.hasPath(COMPILE_TARGET)) {
            this.compileTarget = config.getString(COMPILE_TARGET);
        }
        // dependencies
        if (config.hasPath(DEPENDENCIES)) {
            config.getStringList(DEPENDENCIES).stream().filter(path -> new File(path).exists()).map(path -> {
                final File file = new File(path);
                final ProjectDependency.Type type = ProjectDependency.getFileType(file);
                return new ProjectDependency(file.getName(), "COMPILE", "1.0.0", file, type);
            }).forEach(this.dependencies::add);
        }
        // test-dependencies
        if (config.hasPath(TEST_DEPENDENCIES)) {
            config.getStringList(TEST_DEPENDENCIES).stream().filter(path -> new File(path).exists()).map(path -> {
                final File file = new File(path);
                final ProjectDependency.Type type = ProjectDependency.getFileType(file);
                return new ProjectDependency(file.getName(), "TEST", "1.0.0", file, type);
            }).forEach(this.dependencies::add);
        }
        // sources
        if (config.hasPath(SOURCES)) {
            config.getStringList(SOURCES).stream().filter(path -> new File(path).exists()).map(File::new).forEach(file -> this.sources.add(file));
        }
        // sources
        if (config.hasPath(RESOURCES)) {
            config.getStringList(RESOURCES).stream().filter(path -> new File(path).exists()).map(File::new).forEach(file -> this.resources.add(file));
        }
        // test-sources
        if (config.hasPath(TEST_SOURCES)) {
            config.getStringList(TEST_SOURCES).stream().filter(path -> new File(path).exists()).map(File::new).forEach(file -> this.testSources.add(file));
        }
        // test-resources
        if (config.hasPath(TEST_RESOURCES)) {
            config.getStringList(TEST_RESOURCES).stream().filter(path -> new File(path).exists()).map(File::new).forEach(file -> this.testResources.add(file));
        }
        // output
        if (config.hasPath(OUTPUT)) {
            String o = config.getString(OUTPUT);
            this.output = new File(o);
        }
        // test-output
        if (config.hasPath(TEST_OUTPUT)) {
            String o = config.getString(TEST_OUTPUT);
            this.testOutput = new File(o);
        }
        final Config mainConfig = Config.load();
        if (config.hasPath(INCLUDE_FILE)) {
            final List<String> list = config.getStringList(INCLUDE_FILE);
            mainConfig.setIncludeList(list);
        }
        if (config.hasPath(EXCLUDE_FILE)) {
            final List<String> list = config.getStringList(INCLUDE_FILE);
            mainConfig.setExcludeList(list);
        }
        if (config.hasPath(JAVA8_JAVAC_ARGS) && mainConfig.isJava8()) {
            final List<String> list = config.getStringList(JAVA8_JAVAC_ARGS);
            mainConfig.setJava8JavacArgs(list);
        }
        if (config.hasPath(JAVA9_JAVAC_ARGS) && mainConfig.isJava9()) {
            final List<String> list = config.getStringList(JAVA9_JAVAC_ARGS);
            mainConfig.setJava9JavacArgs(list);
        }
    }
    // guard
    if (this.output == null) {
        throw new ProjectParseException("require output path");
    }
    if (this.testOutput == null) {
        throw new ProjectParseException("require test output path");
    }
    // freeze
    this.sources = new ImmutableSet.Builder<File>().addAll(this.sources).build();
    log.debug("sources {}", this.sources);
    this.resources = new ImmutableSet.Builder<File>().addAll(this.resources).build();
    log.debug("resources {}", this.resources);
    log.debug("output {}", this.output);
    this.testSources = new ImmutableSet.Builder<File>().addAll(this.testSources).build();
    log.debug("test sources {}", this.testSources);
    this.testResources = new ImmutableSet.Builder<File>().addAll(this.testResources).build();
    log.debug("test resources {}", this.testResources);
    log.debug("test output {}", this.testOutput);
    for (final ProjectDependency dependency : this.dependencies) {
        log.debug("dependency {}:{}", dependency.getId(), dependency.getVersion());
    }
    return this;
}
Also used : Stopwatch(com.google.common.base.Stopwatch) JavaAnalyzer(meghanada.analyze.JavaAnalyzer) HashMap(java.util.HashMap) ArrayList(java.util.ArrayList) HashSet(java.util.HashSet) Matcher(java.util.regex.Matcher) Diagnostic(javax.tools.Diagnostic) Map(java.util.Map) ConfigFactory(com.typesafe.config.ConfigFactory) JavaFormatter(meghanada.formatter.JavaFormatter) ClassScope(meghanada.analyze.ClassScope) Objects(com.google.common.base.Objects) GlobalCache(meghanada.cache.GlobalCache) ImmutableSet(com.google.common.collect.ImmutableSet) Properties(java.util.Properties) StoreTransaction(jetbrains.exodus.entitystore.StoreTransaction) JavaCore(org.eclipse.jdt.core.JavaCore) Collection(java.util.Collection) CompileResult(meghanada.analyze.CompileResult) ConcurrentHashMap(java.util.concurrent.ConcurrentHashMap) MoreObjects(com.google.common.base.MoreObjects) Set(java.util.Set) IOException(java.io.IOException) ProjectDatabaseHelper(meghanada.store.ProjectDatabaseHelper) FileUtils(meghanada.utils.FileUtils) Field(java.lang.reflect.Field) Collectors(java.util.stream.Collectors) File(java.io.File) Entity(jetbrains.exodus.entitystore.Entity) Serializable(java.io.Serializable) UncheckedIOException(java.io.UncheckedIOException) JavaFileObject(javax.tools.JavaFileObject) List(java.util.List) Logger(org.apache.logging.log4j.Logger) ClassNameUtils(meghanada.utils.ClassNameUtils) Optional(java.util.Optional) Pattern(java.util.regex.Pattern) Source(meghanada.analyze.Source) Objects.nonNull(java.util.Objects.nonNull) Collections(java.util.Collections) Config(meghanada.config.Config) LogManager(org.apache.logging.log4j.LogManager) Storable(meghanada.store.Storable) Joiner(com.google.common.base.Joiner) InputStream(java.io.InputStream) Config(meghanada.config.Config) ImmutableSet(com.google.common.collect.ImmutableSet) File(java.io.File)

Example 3 with Source

use of meghanada.analyze.Source in project meghanada-server by mopemope.

the class LocationSearcher method searchFromDependency.

private Location searchFromDependency(final SearchContext context) throws IOException {
    final String searchFQCN = context.searchFQCN;
    final CachedASMReflector reflector = CachedASMReflector.getInstance();
    final File classFile = reflector.getClassFile(searchFQCN);
    final String tempDir = System.getProperty("java.io.tmpdir");
    if (classFile != null && classFile.exists() && classFile.getName().endsWith(FileUtils.JAR_EXT)) {
        final String androidHome = System.getenv("ANDROID_HOME");
        if (androidHome != null) {
            final Optional<ProjectDependency> dependencyOptional = this.project.getDependencies().stream().filter(dependency -> dependency.getFile().equals(classFile)).findFirst();
            if (dependencyOptional.isPresent()) {
                final ProjectDependency dependency = dependencyOptional.get();
                final String sourceJar = ClassNameUtils.getSimpleName(dependency.getId()) + '-' + dependency.getVersion() + "-sources.jar";
                final File root = new File(androidHome, "extras");
                if (root.exists()) {
                    return getLocationFromSrcOrDecompile(context, classFile, root, sourceJar);
                }
            }
        }
        final File depParent = classFile.getParentFile();
        final File dependencyDir = depParent.getParentFile();
        final String srcJarName = ClassNameUtils.replace(classFile.getName(), FileUtils.JAR_EXT, "-sources.jar");
        final String disable = System.getProperty("disable-source-jar");
        if (disable != null && disable.equals("true")) {
            return searchLocationFromDecompileFile(context, searchFQCN, classFile, tempDir);
        }
        return getLocationFromSrcOrDecompile(context, classFile, dependencyDir, srcJarName);
    }
    return null;
}
Also used : DecompilationListener(org.jboss.windup.decompiler.api.DecompilationListener) FunctionUtils.wrapIOConsumer(meghanada.utils.FunctionUtils.wrapIOConsumer) ConstructorDeclaration(com.github.javaparser.ast.body.ConstructorDeclaration) Map(java.util.Map) ZipFile(java.util.zip.ZipFile) MethodCall(meghanada.analyze.MethodCall) CompilationUnit(com.github.javaparser.ast.CompilationUnit) Path(java.nio.file.Path) ZipEntry(java.util.zip.ZipEntry) FunctionUtils.wrapIO(meghanada.utils.FunctionUtils.wrapIO) GlobalCache(meghanada.cache.GlobalCache) SimpleName(com.github.javaparser.ast.expr.SimpleName) TypeDeclaration(com.github.javaparser.ast.body.TypeDeclaration) StandardOpenOption(java.nio.file.StandardOpenOption) StandardCharsets(java.nio.charset.StandardCharsets) UncheckedIOException(java.io.UncheckedIOException) Objects(java.util.Objects) List(java.util.List) Stream(java.util.stream.Stream) Logger(org.apache.logging.log4j.Logger) MethodScope(meghanada.analyze.MethodScope) ClassNameUtils(meghanada.utils.ClassNameUtils) Optional(java.util.Optional) Project(meghanada.project.Project) Pattern(java.util.regex.Pattern) ProjectDependency(meghanada.project.ProjectDependency) Config(meghanada.config.Config) Parameter(com.github.javaparser.ast.body.Parameter) Position(com.github.javaparser.Position) HashMap(java.util.HashMap) ArrayList(java.util.ArrayList) Level(java.util.logging.Level) VariableDeclarator(com.github.javaparser.ast.body.VariableDeclarator) Variable(meghanada.analyze.Variable) UncheckedExecutionException(com.google.common.util.concurrent.UncheckedExecutionException) ClassScope(meghanada.analyze.ClassScope) OutputStream(java.io.OutputStream) Filter(org.jboss.windup.decompiler.util.Filter) DecompilationResult(org.jboss.windup.decompiler.api.DecompilationResult) Files(java.nio.file.Files) BufferedWriter(java.io.BufferedWriter) BodyDeclaration(com.github.javaparser.ast.body.BodyDeclaration) FileOutputStream(java.io.FileOutputStream) FileUtils.existsFQCN(meghanada.utils.FileUtils.existsFQCN) IOException(java.io.IOException) CachedASMReflector(meghanada.reflect.asm.CachedASMReflector) FileUtils(meghanada.utils.FileUtils) EntryMessage(org.apache.logging.log4j.message.EntryMessage) File(java.io.File) ExecutionException(java.util.concurrent.ExecutionException) FieldDeclaration(com.github.javaparser.ast.body.FieldDeclaration) MethodDeclaration(com.github.javaparser.ast.body.MethodDeclaration) Paths(java.nio.file.Paths) Source(meghanada.analyze.Source) FernflowerDecompiler(org.jboss.windup.decompiler.fernflower.FernflowerDecompiler) TypeScope(meghanada.analyze.TypeScope) LogManager(org.apache.logging.log4j.LogManager) JavaParser(com.github.javaparser.JavaParser) InputStream(java.io.InputStream) CachedASMReflector(meghanada.reflect.asm.CachedASMReflector) ProjectDependency(meghanada.project.ProjectDependency) ZipFile(java.util.zip.ZipFile) File(java.io.File)

Example 4 with Source

use of meghanada.analyze.Source in project meghanada-server by mopemope.

the class LocationSearcher method getMethodLocationFromProject.

private Optional<Location> getMethodLocationFromProject(final String methodName, final List<String> arguments, final File file) {
    try {
        final Source declaringClassSrc = getSource(project, file);
        final String path = declaringClassSrc.getFile().getPath();
        return declaringClassSrc.getClassScopes().stream().flatMap(ts -> ts.getScopes().stream()).filter(bs -> {
            if (!methodName.equals(bs.getName())) {
                return false;
            }
            if (!(bs instanceof MethodScope)) {
                return false;
            }
            final MethodScope methodScope = (MethodScope) bs;
            final List<String> parameters = methodScope.getParameters();
            return ClassNameUtils.compareArgumentType(arguments, parameters);
        }).map(MethodScope.class::cast).map(ms -> new Location(path, ms.getBeginLine(), ms.getNameRange().begin.column)).findFirst();
    } catch (ExecutionException e) {
        throw new UncheckedExecutionException(e);
    } catch (IOException e) {
        throw new UncheckedIOException(e);
    }
}
Also used : DecompilationListener(org.jboss.windup.decompiler.api.DecompilationListener) FunctionUtils.wrapIOConsumer(meghanada.utils.FunctionUtils.wrapIOConsumer) ConstructorDeclaration(com.github.javaparser.ast.body.ConstructorDeclaration) Map(java.util.Map) ZipFile(java.util.zip.ZipFile) MethodCall(meghanada.analyze.MethodCall) CompilationUnit(com.github.javaparser.ast.CompilationUnit) Path(java.nio.file.Path) ZipEntry(java.util.zip.ZipEntry) FunctionUtils.wrapIO(meghanada.utils.FunctionUtils.wrapIO) GlobalCache(meghanada.cache.GlobalCache) SimpleName(com.github.javaparser.ast.expr.SimpleName) TypeDeclaration(com.github.javaparser.ast.body.TypeDeclaration) StandardOpenOption(java.nio.file.StandardOpenOption) StandardCharsets(java.nio.charset.StandardCharsets) UncheckedIOException(java.io.UncheckedIOException) Objects(java.util.Objects) List(java.util.List) Stream(java.util.stream.Stream) Logger(org.apache.logging.log4j.Logger) MethodScope(meghanada.analyze.MethodScope) ClassNameUtils(meghanada.utils.ClassNameUtils) Optional(java.util.Optional) Project(meghanada.project.Project) Pattern(java.util.regex.Pattern) ProjectDependency(meghanada.project.ProjectDependency) Config(meghanada.config.Config) Parameter(com.github.javaparser.ast.body.Parameter) Position(com.github.javaparser.Position) HashMap(java.util.HashMap) ArrayList(java.util.ArrayList) Level(java.util.logging.Level) VariableDeclarator(com.github.javaparser.ast.body.VariableDeclarator) Variable(meghanada.analyze.Variable) UncheckedExecutionException(com.google.common.util.concurrent.UncheckedExecutionException) ClassScope(meghanada.analyze.ClassScope) OutputStream(java.io.OutputStream) Filter(org.jboss.windup.decompiler.util.Filter) DecompilationResult(org.jboss.windup.decompiler.api.DecompilationResult) Files(java.nio.file.Files) BufferedWriter(java.io.BufferedWriter) BodyDeclaration(com.github.javaparser.ast.body.BodyDeclaration) FileOutputStream(java.io.FileOutputStream) FileUtils.existsFQCN(meghanada.utils.FileUtils.existsFQCN) IOException(java.io.IOException) CachedASMReflector(meghanada.reflect.asm.CachedASMReflector) FileUtils(meghanada.utils.FileUtils) EntryMessage(org.apache.logging.log4j.message.EntryMessage) File(java.io.File) ExecutionException(java.util.concurrent.ExecutionException) FieldDeclaration(com.github.javaparser.ast.body.FieldDeclaration) MethodDeclaration(com.github.javaparser.ast.body.MethodDeclaration) Paths(java.nio.file.Paths) Source(meghanada.analyze.Source) FernflowerDecompiler(org.jboss.windup.decompiler.fernflower.FernflowerDecompiler) TypeScope(meghanada.analyze.TypeScope) LogManager(org.apache.logging.log4j.LogManager) JavaParser(com.github.javaparser.JavaParser) InputStream(java.io.InputStream) UncheckedExecutionException(com.google.common.util.concurrent.UncheckedExecutionException) List(java.util.List) ArrayList(java.util.ArrayList) UncheckedIOException(java.io.UncheckedIOException) MethodScope(meghanada.analyze.MethodScope) UncheckedIOException(java.io.UncheckedIOException) IOException(java.io.IOException) UncheckedExecutionException(com.google.common.util.concurrent.UncheckedExecutionException) ExecutionException(java.util.concurrent.ExecutionException) Source(meghanada.analyze.Source)

Example 5 with Source

use of meghanada.analyze.Source in project meghanada-server by mopemope.

the class LocationSearcher method searchLocalVariable.

private Optional<Location> searchLocalVariable(final Source source, final int line, final int col, final String symbol) {
    final EntryMessage entryMessage = log.traceEntry("line={} col={} symbol={}", line, col, symbol);
    final Map<String, Variable> variableMap = source.getVariableMap(line);
    log.trace("variables={}", variableMap);
    final Optional<Variable> variable = Optional.ofNullable(variableMap.get(symbol));
    final Optional<Location> location = variable.map(var -> {
        if (var.isDecl()) {
            final Location loc = new Location(source.getFile().getPath(), var.range.begin.line, var.range.begin.column);
            return Optional.of(loc);
        } else {
            final String fqcn = var.fqcn;
            final Location loc = getFQCNLocation(fqcn);
            return Optional.ofNullable(loc);
        }
    }).orElseGet(() -> {
        // isField
        final Optional<TypeScope> ts = source.getTypeScope(line);
        if (!ts.isPresent()) {
            return Optional.empty();
        }
        return ts.get().getField(symbol).map(fieldSymbol -> new Location(source.getFile().getPath(), fieldSymbol.range.begin.line, fieldSymbol.range.begin.column));
    });
    log.traceExit(entryMessage);
    return location;
}
Also used : DecompilationListener(org.jboss.windup.decompiler.api.DecompilationListener) FunctionUtils.wrapIOConsumer(meghanada.utils.FunctionUtils.wrapIOConsumer) ConstructorDeclaration(com.github.javaparser.ast.body.ConstructorDeclaration) Map(java.util.Map) ZipFile(java.util.zip.ZipFile) MethodCall(meghanada.analyze.MethodCall) CompilationUnit(com.github.javaparser.ast.CompilationUnit) Path(java.nio.file.Path) ZipEntry(java.util.zip.ZipEntry) FunctionUtils.wrapIO(meghanada.utils.FunctionUtils.wrapIO) GlobalCache(meghanada.cache.GlobalCache) SimpleName(com.github.javaparser.ast.expr.SimpleName) TypeDeclaration(com.github.javaparser.ast.body.TypeDeclaration) StandardOpenOption(java.nio.file.StandardOpenOption) StandardCharsets(java.nio.charset.StandardCharsets) UncheckedIOException(java.io.UncheckedIOException) Objects(java.util.Objects) List(java.util.List) Stream(java.util.stream.Stream) Logger(org.apache.logging.log4j.Logger) MethodScope(meghanada.analyze.MethodScope) ClassNameUtils(meghanada.utils.ClassNameUtils) Optional(java.util.Optional) Project(meghanada.project.Project) Pattern(java.util.regex.Pattern) ProjectDependency(meghanada.project.ProjectDependency) Config(meghanada.config.Config) Parameter(com.github.javaparser.ast.body.Parameter) Position(com.github.javaparser.Position) HashMap(java.util.HashMap) ArrayList(java.util.ArrayList) Level(java.util.logging.Level) VariableDeclarator(com.github.javaparser.ast.body.VariableDeclarator) Variable(meghanada.analyze.Variable) UncheckedExecutionException(com.google.common.util.concurrent.UncheckedExecutionException) ClassScope(meghanada.analyze.ClassScope) OutputStream(java.io.OutputStream) Filter(org.jboss.windup.decompiler.util.Filter) DecompilationResult(org.jboss.windup.decompiler.api.DecompilationResult) Files(java.nio.file.Files) BufferedWriter(java.io.BufferedWriter) BodyDeclaration(com.github.javaparser.ast.body.BodyDeclaration) FileOutputStream(java.io.FileOutputStream) FileUtils.existsFQCN(meghanada.utils.FileUtils.existsFQCN) IOException(java.io.IOException) CachedASMReflector(meghanada.reflect.asm.CachedASMReflector) FileUtils(meghanada.utils.FileUtils) EntryMessage(org.apache.logging.log4j.message.EntryMessage) File(java.io.File) ExecutionException(java.util.concurrent.ExecutionException) FieldDeclaration(com.github.javaparser.ast.body.FieldDeclaration) MethodDeclaration(com.github.javaparser.ast.body.MethodDeclaration) Paths(java.nio.file.Paths) Source(meghanada.analyze.Source) FernflowerDecompiler(org.jboss.windup.decompiler.fernflower.FernflowerDecompiler) TypeScope(meghanada.analyze.TypeScope) LogManager(org.apache.logging.log4j.LogManager) JavaParser(com.github.javaparser.JavaParser) InputStream(java.io.InputStream) Variable(meghanada.analyze.Variable) TypeScope(meghanada.analyze.TypeScope) EntryMessage(org.apache.logging.log4j.message.EntryMessage)

Aggregations

Source (meghanada.analyze.Source)16 IOException (java.io.IOException)13 File (java.io.File)12 ArrayList (java.util.ArrayList)11 Config (meghanada.config.Config)11 List (java.util.List)10 Optional (java.util.Optional)10 GlobalCache (meghanada.cache.GlobalCache)10 LogManager (org.apache.logging.log4j.LogManager)10 Logger (org.apache.logging.log4j.Logger)10 InputStream (java.io.InputStream)9 Map (java.util.Map)9 ExecutionException (java.util.concurrent.ExecutionException)9 Project (meghanada.project.Project)9 CachedASMReflector (meghanada.reflect.asm.CachedASMReflector)9 UncheckedIOException (java.io.UncheckedIOException)8 HashMap (java.util.HashMap)8 Pattern (java.util.regex.Pattern)8 Stream (java.util.stream.Stream)8 ClassScope (meghanada.analyze.ClassScope)8