ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

用于Android项目的Findbugs与ant build中的库

2019-06-26 02:23:03  阅读:207  来源: 互联网

标签:android ant findbugs


Findbugs是一款出色的软件,我的团队在开发Android项目时使用它.在Eclipse中,一切都很好而且有光泽,但是现在我们正在尝试使用ant自动化我们的构建,并为每个构建自动生成Findbugs结果.

这看起来并不那么困难.我按照本教程:
https://wiki.jenkins-ci.org/display/JENKINS/Building+an+Android+app+and+test+project#BuildinganAndroidappandtestproject-FindBugs
一个小问题是我必须将${android.jar}更改为${project.target.android.jar}.

更糟糕的是缺少分析所需的以下类:对来自我们使用的库项目的类的警告.其中一些是我们自己的,我们也想用Findbugs扫描它们.为了使问题更复杂,其中一个库使用另一个库(也是我们自己的并需要扫描),所以它看起来像这样:
项目A – 用途 – >图书馆B – 用途 – >图书馆C.

在这里,我认为既然Android SDK可以处理所有这些依赖项(当我为项目A发出ant调试时编译库C),我可以以某种方式利用它,获取我的项目所依赖的库列表并将其提供给findbugs任务.不幸的是,我没有设法做到这一点.

现在我决定手动输入所有的libs,一些是findbugs任务的class属性,一些是auxClasspath,它有一个好处,我只能分析项目所依赖的一些库.我仍然希望我最初尝试做的事情是可能的.任何人都可以告诉我如何提取路径元素

解决方法:

我终于找到了SDK构建脚本的一部分,它将所有jar的“类路径”(所有库的classes.jar-s,包括来自“图”的库C和来自libs /文件夹的jar)放在一起.项目和所有的库).

我的findbugs目标的最终custom-rules.xml如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<project name="Project_custom" default="findbugs">

    <taskdef name="findbugs" classname="edu.umd.cs.findbugs.anttask.FindBugsTask"/>

    <target name="findbugs">
        <gettarget
                androidJarFileOut="project.target.android.jar"
                androidAidlFileOut="project.target.framework.aidl"
                bootClassPathOut="project.target.class.path"
                targetApiOut="project.target.apilevel"
                minSdkVersionOut="project.minSdkVersion" />
        <dependency
                libraryFolderPathOut="project.library.folder.path"
                libraryPackagesOut="project.library.packages"
                libraryManifestFilePathOut="project.library.manifest.file.path"
                libraryResFolderPathOut="project.library.res.folder.path"
                libraryBinAidlFolderPathOut="project.library.bin.aidl.folder.path"
                libraryNativeFolderPathOut="project.library.native.folder.path"
                jarLibraryPathOut="project.all.jars.path"
                targetApi="${project.target.apilevel}"
                verbose="${verbose}" />

        <findbugs home="${findbugs.home}" output="xml" outputFile="findbugs-results.xml">
            <auxClasspath>
                <pathelement location="${project.target.android.jar}" />
                <path refid="project.all.jars.path" />
            </auxClasspath>
            <class location="${out.dir}" />

        </findbugs>
    </target>

</project>

编辑:我已经升级了目标以独立运行构建目标,即现在你只能运行ant findbugs而不是ant debug findbugs.

标签:android,ant,findbugs
来源: https://codeday.me/bug/20190626/1289311.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有