blob: c4ad58607f89a90fea9b186437f74e7bf61e0831 [file] [log] [blame]
/*
* Copyright 2017 The Kythe Authors. All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.google.devtools.kythe.analyzers.java;
import com.beust.jcommander.Parameter;
import com.google.devtools.kythe.analyzers.base.IndexerConfig;
public class JavaIndexerConfig extends IndexerConfig {
@Parameter(names = "--emit_jvm_signatures", description = "Generate vnames with jvm signatures.")
private boolean emitJvmSignatures;
@Parameter(
names = "--ignore_vname_paths",
description =
"Determines whether the analyzer should ignore the path components of the {@link VName}s"
+ " in each compilation. This can be used to \"fix\" the coherence of {@link"
+ " VName}s across compilations when the extractor was not (or could not be)"
+ " supplied with a proper {@link VName}s configuration file. Each path will"
+ " instead be set to the qualified name of each node's enclosing class (e.g."
+ " \"java.lang.String\" or \"com.google.common.base.Predicate\").")
private boolean ignoreVNamePaths;
@Parameter(
names = "--ignore_vname_roots",
description =
"Determines whether the analyzer should ignore the root components of the {@link VName}s"
+ " in each compilation. This can be used to \"fix\" the coherence of {@link"
+ " VName}s across compilations when the extractor was not (or could not be)"
+ " supplied with a proper {@link VName}s configuration file.")
private boolean ignoreVNameRoots;
@Parameter(
names = "--override_jdk_corpus",
description =
"If set, use this as the corpus for classes from java.*, javax.*, com.sun.*, and sun.*. "
+ " Anchor and file VNames are not affected.")
private String overrideJdkCorpus;
@Parameter(
names = "--emit_jvm",
description =
"Whether to emit name nodes or full JVM language semantic nodes for each Java class(must"
+ " be either \"names\" or \"semantic\"; \"semantic\" is the default and \"names\""
+ " is deprecated)")
private JvmMode jvmMode = JvmMode.SEMANTIC;
@Parameter(
names = "--emit_anchor_scopes",
description =
"Whether to emit childof edges from anchors to their lexical scope's semantic node")
private boolean emitAnchorScopes;
public static enum JvmMode {
NAMES,
SEMANTIC;
}
public JavaIndexerConfig(String programName) {
super(programName);
}
public final boolean getIgnoreVNamePaths() {
return ignoreVNamePaths;
}
public final boolean getIgnoreVNameRoots() {
return ignoreVNameRoots;
}
public final String getOverrideJdkCorpus() {
return overrideJdkCorpus;
}
public boolean getEmitJvmSignatures() {
return emitJvmSignatures;
}
public JvmMode getJvmMode() {
return jvmMode;
}
public boolean getEmitAnchorScopes() {
return emitAnchorScopes;
}
public JavaIndexerConfig setIgnoreVNamePaths(boolean ignoreVNamePaths) {
this.ignoreVNamePaths = ignoreVNamePaths;
return this;
}
public JavaIndexerConfig setIgnoreVNameRoots(boolean ignoreVNameRoots) {
this.ignoreVNameRoots = ignoreVNameRoots;
return this;
}
public JavaIndexerConfig setOverrideJdkCorpus(String overrideJdkCorpus) {
this.overrideJdkCorpus = overrideJdkCorpus;
return this;
}
public JavaIndexerConfig setJvmMode(JvmMode jvmMode) {
this.jvmMode = jvmMode;
return this;
}
public JavaIndexerConfig setEmitAnchorScopes(boolean emitAnchorScopes) {
this.emitAnchorScopes = emitAnchorScopes;
return this;
}
public JavaIndexerConfig setEmitJvmSignatures(boolean emitJvmSignatures) {
this.emitJvmSignatures = emitJvmSignatures;
return this;
}
}