blob: caf74cef81b1f45d4362e6ab4b098af454b7a6ee [file] [log] [blame]
/*
* Copyright (C) 2013 The Android Open Source Project
*
* 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.android.tools.lint;
import com.android.annotations.NonNull;
import com.android.annotations.Nullable;
import com.android.tools.lint.client.api.Configuration;
import com.android.tools.lint.client.api.LintClient;
import com.android.tools.lint.detector.api.Issue;
import com.google.common.annotations.Beta;
import com.google.common.collect.Lists;
import java.io.File;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
/**
* Flags used by the {@link LintCliClient}
* <p>
* <b>NOTE: This is not a public or final API; if you rely on this be prepared
* to adjust your code for the next tools release.</b>
*/
@Beta
public class LintCliFlags {
private final Set<String> mSuppress = new HashSet<String>();
private final Set<String> mEnabled = new HashSet<String>();
private Set<String> mCheck = null;
private boolean mSetExitCode;
private boolean mFullPath;
private boolean mShowLines = true;
private final List<Reporter> mReporters = Lists.newArrayList();
private boolean mQuiet;
private boolean mWarnAll;
private boolean mNoWarnings;
private boolean mAllErrors;
private List<File> mSources;
private List<File> mClasses;
private List<File> mLibraries;
private List<File> mResources;
private File mDefaultConfiguration;
private boolean mShowAll;
public static final int ERRNO_SUCCESS = 0;
public static final int ERRNO_ERRORS = 1;
public static final int ERRNO_USAGE = 2;
public static final int ERRNO_EXISTS = 3;
public static final int ERRNO_HELP = 4;
public static final int ERRNO_INVALID_ARGS = 5;
/**
* Returns the set of issue id's to suppress. Callers are allowed to modify this collection.
* To suppress a given issue, add the {@link Issue#getId()} to the returned set.
*/
@NonNull
public Set<String> getSuppressedIds() {
return mSuppress;
}
/**
* Returns the set of issue id's to enable. Callers are allowed to modify this collection.
* To enable a given issue, add the {@link Issue#getId()} to the returned set.
*/
@NonNull
public Set<String> getEnabledIds() {
return mEnabled;
}
/**
* Returns the exact set of issues to check, or null to run the issues that are enabled
* by default plus any issues enabled via {@link #getEnabledIds} and without issues disabled
* via {@link #getSuppressedIds}. If non-null, callers are allowed to modify this collection.
*/
@Nullable
public Set<String> getExactCheckedIds() {
return mCheck;
}
/**
* Sets the <b>exact</b> set of issues to check.
* @param check the set of issue id's to check
*/
public void setExactCheckedIds(@Nullable Set<String> check) {
mCheck = check;
}
/** Whether lint should set the exit code of the process if errors are found */
public boolean isSetExitCode() {
return mSetExitCode;
}
/** Sets whether lint should set the exit code of the process if errors are found */
public void setSetExitCode(boolean setExitCode) {
mSetExitCode = setExitCode;
}
/**
* Whether lint should display full paths in the error output. By default the paths
* are relative to the path lint was invoked from.
*/
public boolean isFullPath() {
return mFullPath;
}
/**
* Sets whether lint should display full paths in the error output. By default the paths
* are relative to the path lint was invoked from.
*/
public void setFullPath(boolean fullPath) {
mFullPath = fullPath;
}
/**
* Whether lint should include the source lines in the output where errors occurred
* (true by default)
*/
public boolean isShowSourceLines() {
return mShowLines;
}
/**
* Sets whether lint should include the source lines in the output where errors occurred
* (true by default)
*/
public void setShowSourceLines(boolean showLines) {
mShowLines = showLines;
}
/**
* Returns the list of error reports to generate. Clients can modify the returned
* list and add additional reporters such as {@link XmlReporter} and {@link HtmlReporter}.
*/
@NonNull
public List<Reporter> getReporters() {
return mReporters;
}
/**
* Returns whether lint should be quiet (for example, not show progress dots for each analyzed
* file)
*/
public boolean isQuiet() {
return mQuiet;
}
/**
* Sets whether lint should be quiet (for example, not show progress dots for each analyzed
* file)
*/
public void setQuiet(boolean quiet) {
mQuiet = quiet;
}
/** Returns whether lint should check all warnings, including those off by default */
public boolean isCheckAllWarnings() {
return mWarnAll;
}
/** Sets whether lint should check all warnings, including those off by default */
public void setCheckAllWarnings(boolean warnAll) {
mWarnAll = warnAll;
}
/** Returns whether lint will only check for errors (ignoring warnings) */
public boolean isIgnoreWarnings() {
return mNoWarnings;
}
/** Sets whether lint will only check for errors (ignoring warnings) */
public void setIgnoreWarnings(boolean noWarnings) {
mNoWarnings = noWarnings;
}
/** Returns whether lint should treat all warnings as errors */
public boolean isWarningsAsErrors() {
return mAllErrors;
}
/** Sets whether lint should treat all warnings as errors */
public void setWarningsAsErrors(boolean allErrors) {
mAllErrors = allErrors;
}
/**
* Returns whether lint should include all output (e.g. include all alternate
* locations, not truncating long messages, etc.)
*/
public boolean isShowEverything() {
return mShowAll;
}
/**
* Sets whether lint should include all output (e.g. include all alternate
* locations, not truncating long messages, etc.)
*/
public void setShowEverything(boolean showAll) {
mShowAll = showAll;
}
/**
* Returns the default configuration file to use as a fallback
*/
@Nullable
public File getDefaultConfiguration() {
return mDefaultConfiguration;
}
/**
* Sets the default config file to use as a fallback. This corresponds to a {@code lint.xml}
* file with severities etc to use when a project does not have more specific information.
* To construct a configuration from a {@link java.io.File}, use
* {@link LintCliClient#createConfigurationFromFile(java.io.File)}.
*/
public void setDefaultConfiguration(@Nullable File defaultConfiguration) {
mDefaultConfiguration = defaultConfiguration;
}
/**
* Gets the optional <b>manual override</b> of the source directories. Normally null.
* <p>
* Normally, the source, library and resource paths for a project should be computed
* by the {@link LintClient} itself, using available project metadata.
* However, the user can set the source paths explicitly. This is normally done
* when running lint on raw source code without proper metadata (or when using a
* build system unknown to lint, such as say {@code make}.
*/
@Nullable
public List<File> getSourcesOverride() {
return mSources;
}
/**
* Sets the optional <b>manual override</b> of the source directories. Normally null.
* <p>
* Normally, the source, library and resource paths for a project should be computed
* by the {@link LintClient} itself, using available project metadata.
* However, the user can set the source paths explicitly. This is normally done
* when running lint on raw source code without proper metadata (or when using a
* build system unknown to lint, such as say {@code make}.
*/
public void setSourcesOverride(@Nullable List<File> sources) {
mSources = sources;
}
/**
* Gets the optional <b>manual override</b> of the class file directories. Normally null.
* <p>
* Normally, the source, library and resource paths for a project should be computed
* by the {@link LintClient} itself, using available project metadata.
* However, the user can set the source paths explicitly. This is normally done
* when running lint on raw source code without proper metadata (or when using a
* build system unknown to lint, such as say {@code make}.
*/
@Nullable
public List<File> getClassesOverride() {
return mClasses;
}
/**
* Sets the optional <b>manual override</b> of the class file directories. Normally null.
* <p>
* Normally, the source, library and resource paths for a project should be computed
* by the {@link LintClient} itself, using available project metadata.
* However, the user can set the source paths explicitly. This is normally done
* when running lint on raw source code without proper metadata (or when using a
* build system unknown to lint, such as say {@code make}.
*/
public void setClassesOverride(@Nullable List<File> classes) {
mClasses = classes;
}
/**
* Gets the optional <b>manual override</b> of the library directories. Normally null.
* <p>
* Normally, the source, library and resource paths for a project should be computed
* by the {@link LintClient} itself, using available project metadata.
* However, the user can set the source paths explicitly. This is normally done
* when running lint on raw source code without proper metadata (or when using a
* build system unknown to lint, such as say {@code make}.
*/
@Nullable
public List<File> getLibrariesOverride() {
return mLibraries;
}
/**
* Sets the optional <b>manual override</b> of the library directories. Normally null.
* <p>
* Normally, the source, library and resource paths for a project should be computed
* by the {@link LintClient} itself, using available project metadata.
* However, the user can set the source paths explicitly. This is normally done
* when running lint on raw source code without proper metadata (or when using a
* build system unknown to lint, such as say {@code make}.
*/
public void setLibrariesOverride(@Nullable List<File> libraries) {
mLibraries = libraries;
}
/**
* Gets the optional <b>manual override</b> of the resources directories. Normally null.
* <p>
* Normally, the source, library and resource paths for a project should be computed
* by the {@link LintClient} itself, using available project metadata.
* However, the user can set the source paths explicitly. This is normally done
* when running lint on raw source code without proper metadata (or when using a
* build system unknown to lint, such as say {@code make}.
*/
@Nullable
public List<File> getResourcesOverride() {
return mResources;
}
/**
* Gets the optional <b>manual override</b> of the resource directories. Normally null.
* <p>
* Normally, the source, library and resource paths for a project should be computed
* by the {@link LintClient} itself, using available project metadata.
* However, the user can set the source paths explicitly. This is normally done
* when running lint on raw source code without proper metadata (or when using a
* build system unknown to lint, such as say {@code make}.
*/
public void setResourcesOverride(@Nullable List<File> resources) {
mResources = resources;
}
}