Android Lint报告仅适用于我的项目,不包括库项目?

Android Lint报告仅适用于我的项目,不包括库项目?,android,android-lint,Android,Android Lint,如何运行Android Lint,使其只报告我的项目模块,而忽略我正在使用的任何库项目?即使当我将Lint瞄准我的项目模块时,它也会抛出我不感兴趣的库项目中的问题列表——我想集中精力解决我自己代码中的问题 我看不到一个参数来指定它是否遵循对库项目的引用,但也许您可以看到如何做到这一点。如果您使用的是Eclipse,请转到库项目的属性(右键单击project->properties)并在“Android Lint Preferences”下单击“全部忽略”我的解决方案是修改lint输出以过滤其他项

如何运行Android Lint,使其只报告我的项目模块,而忽略我正在使用的任何库项目?即使当我将Lint瞄准我的项目模块时,它也会抛出我不感兴趣的库项目中的问题列表——我想集中精力解决我自己代码中的问题


我看不到一个参数来指定它是否遵循对库项目的引用,但也许您可以看到如何做到这一点。

如果您使用的是Eclipse,请转到库项目的属性(右键单击project->properties)并在“Android Lint Preferences”下单击“全部忽略”我的解决方案是修改lint输出以过滤其他项目的错误和警告

我使用自定义ant任务和xslt文件进行筛选

假设您正在使用ant进行android构建,则需要修改自定义规则.xml:

<property name="lint.script" value="${sdk.dir}/tools/lint"/>
<property name="lint.report" location="${basedir}/lint-results-all.xml"/>  
<property name="lint.project.loc" location="${basedir}"/>

<target name="lint">
<!-- lint --xml lint-results-all.xml -->
  <exec executable="${lint.script}">
   <arg value="--xml"/>
   <arg value="${lint.report}"/>
   <arg value="${lint.project.loc}"/>
  </exec>
</target>

<target name="runlint" depends="lint">
    <xslt in="lint-results-all.xml" out="lint-results.xml" style="lint-cleanup.xslt" />
</target>
您应该获得lint-results-all.xml和一个lint-results.xml(带有过滤内容)。我用这个和


这个解决方案的丑陋之处在于它仍然在另一个项目上运行lint,因此浪费了一些cpu周期。此外,您正在筛选的名称位于xslt文件中,因此如果您使用多个需要筛选的第三方库,则该名称可能无法很好地扩展。但是,XSLT功能强大,应该能够根据需要轻松创建更好的过滤器。

Android SDK Tools 21.1引入了一种新的、方便的功能来解决此问题/错误

看看Android Lint overflow菜单,您会发现Skip Library Project Dependencies选项,它将完全满足您的需求


使用lint.xml获得更通用的方法,该方法也适用于Eclipse之外的环境。只需将使用过的库(如Action Bar Sherlock和Facebook)忽略即可:

<?xml version="1.0" encoding="UTF-8"?>
<lint>
    <issue id="all">
        <ignore regexp="target/classes/com/actionbarsherlock/.*" />
        <ignore regexp="target/classes/com/facebook/.*" />
    </issue>
</lint>


这种方法也适用于像Jenkins这样的CI解决方案。

不过,这是一种有效的解决方案。在Eclipse中更改的首选项存储在项目内部的lint.xml文件中,之后在从命令行运行lint时也会对该文件进行评估。知道起来很有趣,但对我没有帮助,因为我不使用Eclipse,我使用IntelliJ。我只是尝试了这个解决方案,但它不起作用。在库上运行Lint时,Lint不会报告任何问题。但是当我在我的项目上运行Lint时,库项目中的问题仍然会被报告。在命令行上,您是否确保将confix文件的名称传递给Lint命令?@FrankHarper:最新的ADT工具中现在有一个新选项修复了该错误。看看我的答案。你是如何定义lint.script和lint.project的?@sebastian roth lint.script和lint.report只是ant文件的属性。我更新了答案以显示它们。您可以添加一些信息吗?如何将其添加到pom文件和maven构建中?关于Java的一般警告如何?是否可以使其忽略库项目上的所有警告和错误?这解决了问题。它应该被视为正确的解决方案。接受的答案会产生@frankThis为Eclipse工作的问题,但是如何在命令行中运行类似的行为呢?作为构建过程的一部分,我正在从命令行运行lint(如果提交了未使用的资源,它会破坏构建)。现在,如果使用任何库项目,它都会崩溃。我尝试过这个,只要我没有构建应用程序,它就可以工作。当我选择使用“导出签名的应用程序包…”构建应用程序时,所有语言的lint错误都会返回。如果我将lint translation errors设置为warning And build,Google Play认为我的应用程序也包括库的所有语言-基本上是所有语言。这并不能解决问题,因为有时我们创建自己的库,应该检查它们,与我们希望忽略的第三方库相反,没有
issue id=“all”
ant clean debug runlint
<?xml version="1.0" encoding="UTF-8"?>
<lint>
    <issue id="all">
        <ignore regexp="target/classes/com/actionbarsherlock/.*" />
        <ignore regexp="target/classes/com/facebook/.*" />
    </issue>
</lint>