page.title=Improving Your Code with lint
parent.title=Debugging
parent.link=index.html
@jd:body

<div id="qv-wrapper">
    <div id="qv">
      <h2>In This Document</h2>

      <ol>
        <li><a href="#overview">Overview</a></li>
        <li><a href=#eclipse">Running lint from Eclipse</a></li>
        <li><a href=#commandline">Running lint from the command-line</a></li>
         <li><a href=#config">Configuring lint</a>
            <ol>
		<LI><a href="#eclipse_config">Configuring lint in Eclipse</a></LI>
                <LI><a href="#pref">Configuring the lint file</a></LI>
                <LI><a href="#src">Configuring lint checking in Java and XML source files</a></LI>
            </ol>
         </li>
      </ol>
      <h2>See Also</h2>
          <ol>
              <li><a href="{@docRoot}tools/help/lint.html">lint (reference)</a></li>
          </ol>
    </div>
</div>


<p>
In addition to testing that your Android application meets its functional requirements, it's important to ensure that your code has no structural problems. Poorly structured code can impact the reliability and efficiency of your Android apps and make your code harder to maintain. For example, if your XML resource files contain unused namespaces, this takes up space and incurs unnecessary processing. Other structural issues, such as use of deprecated elements or API calls that are not supported by the target API versions, might lead to code failing to run correctly.</p>

<h2 id="overview">Overview</h2>
<p>The Android SDK provides a code scanning tool called {@code lint} that can help you to easily identify and correct problems with the structural quality of your code, without having to execute the app or write any test cases. Each problem detected by the tool is reported with a description message and a severity level, so that you can quickly prioritize the critical improvements that need to be made.  You can also configure a problem's severity level to ignore issues that are not relevant for your project, or raise the severity level. The tool has a command-line interface, so you can easily integrate it into your automated testing process.</p>
<p>The {@code lint} tool checks your Android project source files for potential bugs and optimization improvements for correctness, security, performance, usability, accessibility, and internationalization. You can run {@code lint} from the command-line or from the Eclipse environment.</p>
<p>Figure 1 shows how the {@code lint} tool processes the application source files.</p>
<img id="Fig1" src="{@docRoot}images/tools/lint.png" alt="">
<p class="img-caption"><strong>Figure 1.</strong> Code scanning workflow with the {@code lint} tool</p>
<dl>
<dt><b>Application source files</b></dt>
<dd>The source files consist of files that make up your Android project, including Java and XML files, icons, and ProGuard configuration files. </dd>
<dt><b>The <code>lint.xml</code> file</b></dt>
<dd>A configuration file that you can use to specify any {@code lint} checks that you want to exclude and to customize problem severity levels.</dd>
<dt><b>The {@code lint} tool</b></dt>
<dd>A static code scanning tool that you can run on your Android project from the command-line or from Eclipse.   The {@code lint} tool checks for structural code problems that could affect the quality and performance of your Android application. It is strongly recommended that you correct any errors that {@code lint} detects before publishing your application.</dd>
<dt><b>Results of {@code lint} checking</b></dt>
<dd>You can view the results from {@code lint} in the console or in the <strong>Lint Warnings</strong> view in Eclipse.  Each issue is identified by the location in the source files where it occurred and a description of the issue.</dd>
</dl>
<p>The {@code lint} tool is automatically installed as part of the Android SDK Tools revision 16 or higher. If you want to use {@code lint} in the Eclipse environment, you must also install the Android Development Tools (ADT) Plugin for Eclipse revision 16 or higher. For more information about installing the SDK or the ADT Plugin for Eclipse, see <a href="http://developer.android.com/sdk/installing.html">Installing the SDK.</a></p>

<h2 id="eclipse">Running lint from Eclipse</h2>
<p>If the ADT Plugin is installed in your Eclipse environment, the {@code lint} tool runs automatically when you perform one of these actions:</p>
<ul>
<LI>Export an APK</LI>
<LI>Edit and save an XML source file in your Android project (such as a manifest or layout file)</LI>
<LI>Use the layout editor in Eclipse to make changes</LI>
</ul>
<p>Note that when you export an APK, {@code lint} only runs an automatic check for fatal errors and aborts the export if fatal errors are found. You can turn off this automatic checking from the <strong>Lint Error Checking</strong> page in Eclipse Preferences. </p>
<p>The output is displayed in the <strong>Lint Warnings</strong> view. If the <strong>Lint Warnings</strong> view is not showing in the workbench, you can bring it up from the Eclipse menu by clicking <strong>Window &gt; Show View &gt; Other &gt;  Android &gt; Lint Warnings</strong>.</p>
<p>Figure 2 shows an example of the output in the Lint Warnings view.</p>
<img id="Fig2" src="{@docRoot}images/tools/lint_output.png" alt="">
<p class="img-caption"><strong>Figure 2.</strong> Sample output in the <strong>Lint Warnings</strong> view</p>
<p>You can also run a {@code lint} scan manually on your Android project in Eclipse by right-clicking on the project folder in the Package Explorer > <strong>Android Tools  &gt; Run Lint: Check for Common Errors</strong>.</p>


<h2 id="commandline">Running lint from the Command-Line</h2>
<p>
To run {@code lint} against a list of files in a project directory:
<pre>lint [flags] &lt;project directory&gt;</pre>
<p>For example, you can issue the following command to scan the files under the {@code myproject} directory and its subdirectories. The issue ID  <code>MissingPrefix</code> tells {@code lint} to only scan for XML attributes that are missing the Android namespace prefix.</p>
<pre>lint --check MissingPrefix myproject </pre>
<p>To see the full list of flags and command-line arguments supported by the tool:</p>
<pre>lint --help</pre>
</p>

<h3>Example lint output</h3>
<p>The following example shows the console output when the {@code lint} command is run against a project called Earthquake.  </p>
<pre>
$ lint Earthquake

Scanning Earthquake: ...............................................................................................................................
Scanning Earthquake (Phase 2): .......
AndroidManifest.xml:23: Warning: &lt;uses-sdk&gt; tag appears after &lt;application&gt; tag [ManifestOrder]
  &lt;uses-sdk android:minSdkVersion="7" /&gt;
  ^
AndroidManifest.xml:23: Warning: &lt;uses-sdk&gt; tag should specify a target API level (the highest verified version; when running on later versions, compatibility behaviors may be enabled) with android:targetSdkVersion="?" [UsesMinSdkAttributes]
  &lt;uses-sdk android:minSdkVersion="7" /&gt;
  ^
res/layout/preferences.xml: Warning: The resource R.layout.preferences appears to be unused [UnusedResources]
res: Warning: Missing density variation folders in res: drawable-xhdpi [IconMissingDensityFolder]
0 errors, 4 warnings
</pre>
<p>The output above lists four warnings and no errors in this project.  Three warnings ({@code ManifestOrder}, {@code UsesMinSdkAttributes}, and {@code UsesMinSdkAttributes}) were found in the project's <code>AndroidManifest.xml</code> file. The remaining warning ({@code IconMissingDensityFolder}) was found in the <code>Preferences.xml</code> layout file.</p>

<h2 id="config">Configuring lint</h2>
<p>By default, when you run a {@code lint} scan, the tool checks for all issues that are supported by {@code lint}.  You can also restrict the issues for {@code lint} to check and assign the severity level for those issues. For example, you can disable {@code lint} checking for specific issues that are not relevant to your project and configure {@code lint} to report non-critical issues at a lower severity level.</p>
<p>You can configure {@code lint} checking at different levels:</p>
<ul>
<LI>Globally, for all projects</LI>
<li>Per project</li>
<li>Per file</li>
<li>Per Java class or method (by using the <code>&#64;SuppressLint</code> annotation), or per XML element (by using the <code>tools:ignore</code> attribute.</li>
</ul>

<h3 id="eclipse_config">Configuring lint in Eclipse</h3>
<p>You can configure global, project-specific, and file-specific settings for {@code lint} from the Eclipse user interface.</p>

<h4>Global preferences</h4>
<ol>
<LI>Open <strong>Window  &gt; Preferences  &gt; Android  &gt; Lint Error Checking</strong>.</LI>
<li>Specify your preferences and click <b>OK</b>.</li>
</ol>
<p>These settings are applied by default when you run {@code lint} on your Android projects in Eclipse.</p>

<h4>Project and file-specific preferences</h4>
<ol>
<LI>Run the {@code lint} tool on your project by right-clicking on your project folder in the Package Explorer and selecting  <strong>Android Tools &gt; Run Lint: Check for Common Errors</strong>. This action brings up the <strong>Lint Warnings</strong> view which displays a list of issues that {@code lint} detected in your project.</LI>
<li>From the <strong>Lint Warnings</strong> view, use the toolbar options to configure {@code lint} preferences for individual projects and files in Eclipse. The options you can select include:
<ul>
<LI><b>Suppress this error with an annotation/attribute</b> - If the issue appears in a Java class, the {@code lint} tool adds a <code>&#64;SuppressLint</code> annotation to the method where the issue was detected.  If the issue appears in an {@code .xml} file, {@code lint} inserts a <code>tools:ignore</code> attribute to disable checking for the {@code lint} issue in this file.</LI>
<LI><b>Ignore in this file</b> - Disables checking for this {@code lint} issue in this file.</LI>
<li><b>Ignore in this project</b>  - Disables checking for this {@code lint} issue in this project.</li>
<li><b>Always ignore</b> - Disables checking for this {@code lint} issue globally for all projects.</li>
</ul>
</li>
</ol>
<p>If you select the second or third option, the {@code lint} tool automatically generates a <code>lint.xml</code> file with these configuration settings in your Android application project folder.  </p>

<h3 id="pref">Configuring the lint file</h3>
<p>You can specify your {@code lint} checking preferences in the <code>lint.xml</code> file.  If you are creating this file manually, place it in the root directory of your Android project.  If you are configuring {@code lint} preferences in Eclipse, the <code>lint.xml</code> file is automatically created and added to your Android project for you.</p>
<p>The <code>lint.xml</code> file consists of an enclosing <code>&lt;lint&gt;</code> parent tag that contains one or more children <code>&lt;issue&gt;</code> elements.  Each <code>&lt;issue&gt;</code> is identified by a unique <code>id</code> attribute value, which is defined by {@code lint}.</p>
<pre>
&lt;?xml version="1.0" encoding="UTF-8"?&gt;
    &lt;lint&gt;
        &lt;!-- list of issues to configure --&gt;
&lt;/lint&gt;
</pre>
<p>By setting the severity attribute value in the <code>&lt;issue&gt;</code> tag, you can disable {@code lint} checking for an issue or change the severity level for an issue.  </p>
<p class="note"><strong>Tip: </strong>To see the full list of issues supported by the {@code lint} tool and their corresponding issue IDs, run the <code>lint --list</code> command.</p>

<h4>Sample lint.xml file</h4>
<p>The following example shows the contents of a <code>lint.xml</code> file.</p>
<pre>
&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;lint&gt;
    &lt;!-- Disable the given check in this project --&gt;
    &lt;issue id="IconMissingDensityFolder" severity="ignore" /&gt;

    &lt;!-- Ignore the ObsoleteLayoutParam issue in the specified files --&gt;
    &lt;issue id="ObsoleteLayoutParam"&gt;
        &lt;ignore path="res/layout/activation.xml" /&gt;
        &lt;ignore path="res/layout-xlarge/activation.xml" /&gt;
    &lt;/issue>

    &lt;!-- Ignore the UselessLeaf issue in the specified file --&gt;
    &lt;issue id="UselessLeaf"&gt;
        &lt;ignore path="res/layout/main.xml" /&gt;
    &lt;/issue&gt;

    &lt;!-- Change the severity of hardcoded strings to "error" --&gt;
    &lt;issue id="HardcodedText" severity="error" /&gt;
&lt;/lint&gt;
</pre>

<h3 id="src">Configuring lint checking in Java and XML source files</h3>
<p>You can disable {@code lint} checking from your Java and XML source files.</p>

<p class="note"><strong>Tip: </strong>If you are using Eclipse, you can use the <strong>Quick Fix</strong> feature to automatically add the annotation or attribute to disable {@code lint} checking to your Java or XML source files:
<ol>
<LI>Open the Java or XML file that has a {@code lint} warning or error in an Eclipse editor.</LI>
<LI>Move your cursor to the location in the file where is {@code lint} issue is found, then press <code>Ctrl+1</code> to bring up the <strong>Quick Fix</strong> pop-up.</LI>
<li>From the <strong>Quick Fix</strong> pop-up, select the action to add an annotation or attribute to ignore the {@code lint} issue.</li>
</ol>
</p>

<h4>Configuring lint checking in Java</h4>
<p>To disable {@code lint} checking specifically for a Java class or method in your Android project, add the <code>&#64;SuppressLint</code> annotation to that Java code. </p>
<p>The following example shows how you can turn off {@code lint} checking for the {@code NewApi} issue in the <code>onCreate</code> method.  The {@code lint} tool continues to check for the {@code NewApi} issue in other methods of this class.</p>
<pre>
&#64;SuppressLint("NewApi")
&#64;Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
</pre>
<p>The following example shows how to turn off {@code lint} checking for the {@code ParserError} issue in the <code>FeedProvider</code> class:</p>
<pre>
&#64;SuppressLint("ParserError")
public class FeedProvider extends ContentProvider {
</pre>
<p>To suppress checking for all {@code lint} issues in the Java file, use the {@code all} keyword, like this:</p>
<pre>
&#64;SuppressLint("all")
</pre>

<h4>Configuring lint checking in XML</h4>
<p>You can use the <code>tools:ignore</code> attribute to disable {@code lint} checking for specific sections of your XML files.  In order for this attribute to be recognized by the {@code lint} tool, the following namespace value must be included in your XML file:</p>
<pre>
namespace xmlns:tools="http://schemas.android.com/tools"
</pre>
<p>The following example shows how you can turn off {@code lint} checking for the  {@code UnusedResources} issue for the <code>&lt;LinearLayout&gt;</code> element of an XML layout file.  The <code>ignore</code> attribute is inherited by the children elements of the parent element in which the attribute is declared. In this example, the {@code lint} check is also disabled for the child <code>&lt;TextView&gt;</code> element. </p>
<pre>
&lt;LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    tools:ignore="UnusedResources" &gt;

    &lt;TextView
        android:text="&#64;string/auto_update_prompt" /&gt;
&lt;/LinearLayout&gt;
</pre>
<p>To disable more than one issue, list the issues to disable in a comma-separated string.  For example:</p>
<pre>
tools:ignore="NewApi,StringFormatInvalid"
</pre>
<p>To suppress checking for all {@code lint} issues in the XML element, use the {@code all} keyword, like this:</p>
<pre>
tools:ignore="all"
</pre>
