2012-11-22 64 views
9

我们的Android项目是依赖于作为我们没有控制一些外部项目。因此,我正在尝试设置自定义lint.xml文件,以便我们可以为它们添加忽略规则。作为起始场景我试图从ActionBarSherlock在编写自定义lint.xml

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

删除警告(没有进攻杰克)

<?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> 

用下面的命令但是生产报告还包括来自ABS的消息。

更新 我改变命令

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

不会使詹金斯的任何变化仍然会产生相同的报告,无论是什么忽略,但如果在它的命令行运行忽略列出的所有问题禁用后。我希望有一种简单的方式来说,嘿忽略/排除事情的方式Maven做...

+0

我把你的答案的'lint.xml'到我的项目的根。虽然没有改变。你使用'mvn android:lint'来运行Lint,或者你配置'maven-compiler-plugin'来在构建过程中执行Lint,如[这里所述](http://blog.octo.com/en/add-皮棉的检查对Android的Maven的建立/)?请添加您的配置。 – JJD

+0

我从Jenkins的shell调用lint作为'lint --config lint.xml --xml lint-result.xml'。或者'lint --config lint.xml',如果你在本地运行。这样你直接运行android lint工具。我没有尝试使用android maven插件,但我希望在配置中必须有一个地方来添加排除lint文件 –

回答

8

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

<?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> 

,我们现在用的是壳牌执行命令

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

PS:请注意,这不会删除排除APKLIB的所有报告就像在这种情况下,如ABS到目前为止,没有办法将报告排除在外R.class未使用的资源。在编译过程R.class的链接库和你的项目做合并,林特没有办法知道这一点。它只会看到一些没有使用的引用R.class并报告它们。

+0

太棒了,但不完整。 Lint应该有一个排除类的机制... – Snicolas

+0

Snicolas我同意,谷歌需要更多地抛光它,因为列出项目“附加”库的所有类只是疯狂的房子。其次,这并不能解决图书馆 –

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> 
+0

带来的未使用资源的R.class报告问题,正如我所说的那样,这只会照顾类。如果您检查lint结果报告,您会发现有大量未使用的资源与R类相关联 –

9

现在,可以这样做:

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