12

我们的 Android 项目依赖于一些我们无法控制的外部项目。因此,我正在尝试设置自定义 lint.xml 文件,以便我们可以为它们添加忽略规则。作为开始的场景,我试图从 ActionBarSherlock 中删除警告(杰克没有冒犯)

<?xml version="1.0" encoding="UTF-8"?>
<lint>
  <issue id="FloatMath">
    <ignore path="app/target/classes/com/actionbarsherlock/*" />
  </issue>
  <issue id="DefaultLocale">
    <ignore path="app/target/classes/com/actionbarsherlock/*" />
  </issue>
  <issue id="ViewConstructor">
    <ignore path="app/target/classes/com/actionbarsherlock/*" />
  </issue>
</lint>

使用以下命令

lint app --disable FloatMath,DefaultLocale,ViewConstructor --xml lint-result.xml

然而,生成的报告仍然包含来自 ABS 的消息。

更新 我将命令更改为

lint --disable FloatMath,DefaultLocale,ViewConstructor --xml lint-result.xml app

无论忽略什么,Jenkins 都不会做任何更改,仍然会产生相同的报告,但是如果在命令行中运行,它会忽略禁用后列出的所有问题。我希望有一种简单的说法,嘿以 Maven 的方式忽略/排除事物......

4

3 回答 3

10

现在可以这样做了:

<?xml version="1.0" encoding="UTF-8"?>
<lint>
    <issue id="all">
        <ignore regexp="target/classes/com/actionbarsherlock/.*[.]class" />
    </issue>
</lint>
于 2014-09-08T18:17:16.407 回答
8

再次回答我自己的问题... lint.xml 现在看起来像这样,它将忽略 ASB 4.2.0 上的任何 ActionBarSherlock 报告

<?xml version="1.0" encoding="UTF-8"?>
<lint>
  <issue id="NewApi">
    <ignore path="target/classes/com/actionbarsherlock/internal/ActionBarSherlockNative.class" />
    <ignore path="target/classes/com/actionbarsherlock/internal/ActionBarSherlockNative$ActionModeWrapper.class" />
    <ignore path="target/classes/com/actionbarsherlock/internal/app/ActionBarWrapper.class" />
    <ignore path="target/classes/com/actionbarsherlock/internal/app/ActionBarWrapper$TabWrapper.class" />
    <ignore path="target/classes/com/actionbarsherlock/internal/view/ActionProviderWrapper.class" />
    <ignore path="target/classes/com/actionbarsherlock/internal/view/menu/ActionMenuItemView.class" />
    <ignore path="target/classes/com/actionbarsherlock/internal/view/menu/MenuItemWrapper.class" />
    <ignore path="target/classes/com/actionbarsherlock/internal/view/menu/ActionMenuPresenter$HasPermanentMenuKey.class" />
    <ignore path="target/classes/com/actionbarsherlock/internal/widget/IcsAdapterView.class" />
    <ignore path="target/classes/com/actionbarsherlock/internal/widget/IcsProgressBar.class" />
    <ignore path="target/classes/com/actionbarsherlock/internal/widget/ActionBarView$HomeView.class" />
    <ignore path="target/classes/com/actionbarsherlock/widget/SearchView.class" />
    <ignore path="target/classes/com/actionbarsherlock/internal/nineoldandroids/widget/NineFrameLayout.class" />
    <ignore path="target/classes/com/actionbarsherlock/internal/nineoldandroids/widget/NineHorizontalScrollView.class" />
    <ignore path="target/classes/com/actionbarsherlock/internal/nineoldandroids/widget/NineLinearLayout.class" />
    <ignore path="target/classes/com/actionbarsherlock/internal/nineoldandroids/view/NineViewGroup.class" />
    <ignore path="target/classes/com/actionbarsherlock/internal/view/menu/BaseMenuPresenter.class" />
    <ignore path="target/classes/com/actionbarsherlock/internal/widget/AbsActionBarView.class" />
    <ignore path="target/classes/com/actionbarsherlock/internal/widget/ActionBarContextView.class" />
    <ignore path="target/classes/com/actionbarsherlock/internal/widget/ActionBarView.class" />
    <ignore path="target/classes/com/actionbarsherlock/internal/widget/CapitalizingButton.class" />
    <ignore path="target/classes/com/actionbarsherlock/internal/widget/CapitalizingTextView.class" />
    <ignore path="target/classes/com/actionbarsherlock/internal/widget/IcsAbsSpinner.class" />
    <ignore path="target/classes/com/actionbarsherlock/internal/widget/IcsLinearLayout.class" />
    <ignore path="target/classes/com/actionbarsherlock/internal/widget/IcsListPopupWindow.class" />
    <ignore path="target/classes/com/actionbarsherlock/internal/widget/ScrollingTabContainerView.class" />
    <ignore path="target/classes/com/actionbarsherlock/widget/ActivityChooserView$SetActivated.class" />
    <ignore path="target/classes/com/actionbarsherlock/app/SherlockActivity.class" />
    <ignore path="target/classes/com/actionbarsherlock/app/SherlockExpandableListActivity.class" />
    <ignore path="target/classes/com/actionbarsherlock/app/SherlockListActivity.class" />
    <ignore path="target/classes/com/actionbarsherlock/app/SherlockPreferenceActivity.class" />
    <ignore path="target/classes/com/actionbarsherlock/internal/ActionBarSherlockNative$ActionModeCallbackWrapper.class" />
    <ignore path="target/classes/com/actionbarsherlock/internal/app/ActionBarImpl$1.class" />
    <ignore path="target/classes/com/actionbarsherlock/internal/app/ActionBarImpl.class" />
  </issue>

  <issue id="FloatMath">
    <ignore path="target/classes/com/actionbarsherlock/internal/nineoldandroids/view/animation/AnimatorProxy.class" />
  </issue>

  <issue id="DefaultLocale">
    <ignore path="target/classes/com/actionbarsherlock/internal/widget/CapitalizingTextView.class" />
    <ignore path="target/classes/com/actionbarsherlock/internal/widget/CapitalizingButton.class" />
  </issue>

  <issue id="ViewConstructor">
    <ignore path="target/classes/com/actionbarsherlock/internal/widget/CollapsibleActionViewWrapper.class" />
  </issue>

  <issue id="WrongCall">
    <ignore path="target/classes/com/actionbarsherlock/internal/widget/IcsAdapterView.class" />
  </issue>
</lint>

我们现在使用的Shell执行命令是

lint --config lint.xml --xml lint-results.xml .;

PS:请注意,这不会像在这种情况下 ABS 一样删除所有排除的 APKLIB 报告,因为到目前为止还没有办法排除 R.class 未使用资源的报告。在编译过程中,链接库的 R.class 和您的项目确实被合并,而 Lint 无法知道这一点。它只看到带有一些未使用的引用的单个 R.class 并报告它们。

于 2012-11-30T16:17:01.037 回答
1

我已完成 lint.xml 文件以排除更多 actionbarsherlock 错误。但是,最好有一个排除包机制。

<?xml version="1.0" encoding="UTF-8"?>
<lint>
  <issue id="NewApi">
    <ignore path="target/classes/com/actionbarsherlock/internal/ActionBarSherlockNative.class"/>
    <ignore path="target/classes/com/actionbarsherlock/internal/ActionBarSherlockNative$ActionModeWrapper.class"/>
    <ignore path="target/classes/com/actionbarsherlock/internal/app/ActionBarWrapper.class"/>
    <ignore path="target/classes/com/actionbarsherlock/internal/app/ActionBarWrapper$TabWrapper.class"/>
    <ignore path="target/classes/com/actionbarsherlock/internal/view/ActionProviderWrapper.class"/>
    <ignore path="target/classes/com/actionbarsherlock/internal/view/menu/ActionMenuItemView.class"/>
    <ignore path="target/classes/com/actionbarsherlock/internal/view/menu/MenuItemWrapper.class"/>
    <ignore path="target/classes/com/actionbarsherlock/internal/view/menu/ActionMenuPresenter$HasPermanentMenuKey.class"/>
    <ignore path="target/classes/com/actionbarsherlock/internal/widget/IcsAdapterView.class"/>
    <ignore path="target/classes/com/actionbarsherlock/internal/widget/IcsProgressBar.class"/>
    <ignore path="target/classes/com/actionbarsherlock/internal/widget/ActionBarView$HomeView.class"/>
    <ignore path="target/classes/com/actionbarsherlock/widget/SearchView.class"/>
    <ignore path="target/classes/com/actionbarsherlock/internal/widget/AbsActionBarView.class"/>
    <ignore path="target/classes/com/actionbarsherlock/internal/widget/ActionBarContextView.class"/>
    <ignore path="target/classes/com/actionbarsherlock/internal/app/ActionBarImpl$1.class"/>
    <ignore path="target/classes/com/actionbarsherlock/internal/app/ActionBarImpl.class"/>
    <ignore path="target/classes/com/actionbarsherlock/internal/ActionBarSherlockNative$ActionModeCallbackWrapper.class"/>
    <ignore path="target/classes/com/actionbarsherlock/internal/widget/ActionBarView.class"/>
    <ignore path="target/classes/com/actionbarsherlock/widget/ActivityChooserView$SetActivated.class"/>
    <ignore path="target/classes/com/actionbarsherlock/internal/view/menu/BaseMenuPresenter.class"/>
    <ignore path="target/classes/com/actionbarsherlock/internal/widget/CapitalizingButton.class"/>
    <ignore path="target/classes/com/actionbarsherlock/internal/widget/CapitalizingTextView.class"/>
    <ignore path="target/classes/com/actionbarsherlock/internal/widget/IcsAbsSpinner.class"/>
    <ignore path="target/classes/com/actionbarsherlock/internal/widget/IcsLinearLayout.class"/>
    <ignore path="target/classes/com/actionbarsherlock/internal/widget/IcsListPopupWindow.class"/>
    <ignore path="target/classes/com/actionbarsherlock/internal/nineoldandroids/widget/NineHorizontalScrollView.class"/>
    <ignore path="target/classes/com/actionbarsherlock/internal/nineoldandroids/widget/NineLinearLayout.class"/>
    <ignore path="target/classes/com/actionbarsherlock/internal/nineoldandroids/view/NineViewGroup.class"/>
    <ignore path="target/classes/com/actionbarsherlock/internal/widget/ScrollingTabContainerView.class"/>
    <ignore path="target/classes/com/actionbarsherlock/app/SherlockActivity.class"/>
    <ignore path="target/classes/com/actionbarsherlock/app/SherlockExpandableListActivity.class"/>
    <ignore path="target/classes/com/actionbarsherlock/app/SherlockListActivity.class"/>
    <ignore path="target/classes/com/actionbarsherlock/app/SherlockPreferenceActivity.class"/>
    <ignore path="target/classes/com/actionbarsherlock/internal/nineoldandroids/widget/NineFrameLayout.class"/>
    <ignore path="target/classes/com/viewpagerindicator/IcsLinearLayout.class"/>
</issue>

<issue id="FloatMath">
    <ignore path="target/classes/com/actionbarsherlock/internal/nineoldandroids/view/animation/AnimatorProxy.class"/>
</issue>

<issue id="DefaultLocale">
    <ignore path="target/classes/com/actionbarsherlock/internal/widget/CapitalizingTextView.class"/>
    <ignore path="target/classes/com/actionbarsherlock/internal/widget/CapitalizingButton.class"/>
</issue>

<issue id="ViewConstructor">
    <ignore path="target/classes/com/actionbarsherlock/internal/widget/CollapsibleActionViewWrapper.class"/>
</issue>
</lint>
于 2013-02-25T22:26:27.050 回答