package com.bignerdranch.linette.detectors;
import com.android.tools.lint.detector.api.Category;
import com.android.tools.lint.detector.api.Context;
import com.android.tools.lint.detector.api.Detector;
import com.android.tools.lint.detector.api.Implementation;
import com.android.tools.lint.detector.api.Issue;
import com.android.tools.lint.detector.api.Location;
import com.android.tools.lint.detector.api.Scope;
import com.android.tools.lint.detector.api.Severity;
import com.android.tools.lint.detector.api.TextFormat;
import java.util.EnumSet;
/**
* Lint check for a specified Minimum SDK Version.
*/
public class MinSdkDetector extends Detector {
private static final int SUGGESTED_MIN_SDK_VERSION = 15;
private static final Class<? extends Detector> DETECTOR_CLASS = MinSdkDetector.class;
private static final EnumSet<Scope> DETECTOR_SCOPE = EnumSet.noneOf(Scope.class);
private static final Implementation IMPLEMENTATION = new Implementation(
DETECTOR_CLASS,
DETECTOR_SCOPE
);
private static final String ISSUE_ID = "MinSdk";
private static final String ISSUE_DESCRIPTION = "Low MinSdk Choice";
private static final String ISSUE_EXPLANATION = "The minSdkVersion should be at least " + SUGGESTED_MIN_SDK_VERSION;
private static final Category ISSUE_CATEGORY = Category.CORRECTNESS;
private static final int ISSUE_PRIORITY = 8;
private static final Severity ISSUE_SEVERITY = Severity.WARNING;
public static final Issue ISSUE = Issue.create(
ISSUE_ID,
ISSUE_DESCRIPTION,
ISSUE_EXPLANATION,
ISSUE_CATEGORY,
ISSUE_PRIORITY,
ISSUE_SEVERITY,
IMPLEMENTATION
);
@Override
public void afterCheckProject(Context context) {
super.afterCheckProject(context);
int minSdk = context.getProject().getMinSdk();
if (minSdk != -1 && minSdk < SUGGESTED_MIN_SDK_VERSION) {
context.report(ISSUE, Location.create(context.file), ISSUE.getBriefDescription(TextFormat.TEXT));
}
}
}