Моим решением было изменить выход lint для фильтрации ошибок и предупреждений других проектов.
Я сделал это с помощью специальной задачи ant и файла xslt для фильтрации.
Предполагая, что вы используете муравей, чтобы сделать ваш андроид строит вы изменяете custom_rules.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>
Затем я добавил файл XSLT, который вырежет вопросы для других проектов: Lint-cleanup.xslt ,
Файл XSLT basicallly проверяет, не содержит ли местоположение файла «sherlock», а затем копирует в новый выходной файл. Вы можете изменить в соответствии с вашими потребностями. Он также может работать как start-with, а не содержит.
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:template match="issue">
<xsl:variable name="location_to_filter" select="'sherlock'" />
<xsl:if test="not(contains(location/@file, $location_to_filter))">
<xsl:copy-of select="."/>
</xsl:if>
</xsl:template>
<xsl:template match="@*|node()">
<xsl:copy> <xsl:apply-templates select="@*|node()"/> </xsl:copy>
</xsl:template>
</xsl:stylesheet>
Чтобы запустить отчет о lint, я просто добавил его в командную строку в своем муравейнике на Jenkins.
ant clean debug runlint
Вы должны получить Lint-результаты-all.xml и пуха-results.xml (с отфильтрованным содержанием). Я использую это с Jenkins Android Lint plugin
Уродливая часть об этом решении заключается в том, что он по-прежнему работает с другим проектом, поэтому вы тратите несколько циклов процессора. Кроме того, имя, которое вы фильтруете, находится в файле xslt, поэтому оно может плохо масштабироваться, если вы используете несколько сторонних библиотек, которые необходимо фильтровать. Однако XSLT достаточно мощный, он должен иметь возможность легко создавать лучший фильтр по мере необходимости.
Я запускаю его из командной строки. –
Тем не менее это рабочее решение.Настройки, измененные в Eclipse, хранятся в файле lint.xml внутри проекта, который впоследствии также оценивается при запуске lint из командной строки. – Bananeweizen
Интересно знать, но не помогает мне, поскольку я не использую Eclipse, я использую IntelliJ. –