当前位置: 首页 > news >正文

做的很好的淘宝客网站网站的配置标题

做的很好的淘宝客网站,网站的配置标题,海口网站建设公司,代码级优化wordpress本文讲的是如何提高安卓代码的质量和语法#xff0c;在这篇文章中#xff0c;我会介绍几种不同的方式#xff0c;让你通过自动化工具提高你的Android代码质量#xff0c;包括 Checkstyle#xff0c; Findbugs#xff0c;PMD#xff0c; 当然#xff0c;还有我们最熟悉的… 本文讲的是如何提高安卓代码的质量和语法 在这篇文章中我会介绍几种不同的方式让你通过自动化工具提高你的Android代码质量包括 Checkstyle FindbugsPMD 当然还有我们最熟悉的Android Lint。 为了让你的代码保持缜密的语法同时避免一些糟糕的实现和错误使用自动化的方式测试你的代码十分有用尤其是当你和队友一起工作时。我会细心地解释如何直接通过你的Gradle构建脚本使用这些工具和怎么方便地配置它们。 Fork这个例子 我强烈建议你fork此项目因为我将介绍的所有例子均来自于它。同时你也能自己测试这些质量控制工具。 关于Gradle任务 理解任务在Gradle中的概念是理解这篇文章的基础(广义上也是学会撰写Gradle脚本的基础)。我强烈建议你先阅读一下Gradle文档中关于任务的部分(这个和这个)。 文档中包含许多例子非常容易理解。好了那现在我就假设你已经fork了我的仓库将项目导入了你的Android Studio同时也已经熟悉了Gradle的任务。如果没有也不必担心我会尽我所能解释得通俗易懂。 Demo项目的层次结构 你能将gradle脚本分离在很多文件中目前我分了3个gradle文件 一个在根目录这个文件是关于项目的一些配置(比如使用的maven仓库和使用的Gradle版本) 一个在子文件夹app中这是一个典型的构建Android应用的Gradle文件。 一个在子文件夹config中这个才是我们所关注的我用它来为我的项目集成并配置所有的质量控制工具。 Checkstyle 简介 Checkstyle是一个帮助程序员坚持规范化编写Java代码的开发工具.它自动检查Java代码,将程序员从这项乏味(但重要)的工作中解放出来. 正如Checkstyle的开发者所说这个工具帮助你在一个项目中精确并灵活地定义和保持编码规范。当你运行Checkstyle时它会分析你的Java代码根据你的配置找出所有错误并提示你。 通过Gradle配置 以下代码展示了在你项目中使用Checkstyle的基本配置(作为一个Gradle任务) task checkstyle(type: Checkstyle) {configFile file(${project.rootDir}/config/quality/checkstyle/checkstyle.xml) // Where my checkstyle config is...configProperties.checkstyleSuppressionsPath file(${project.rootDir}/config/quality/checkstyle/suppressions.xml).absolutePath // Where is my suppressions file for checkstyle is...source srcinclude **/*.javaexclude **/gen/**classpath files() } 配置完后这个任务就会根据checkstyle.xml和suppressions.xml两个文件来分析你的代码。只需要在Gradle面板中启动这个任务Android Studio就会自动执行此任务。 运行Checkstyle后你会得到一份报告上面纪录了在你项目中找到的所有问题。而且它非常易于理解。 如果你想更个性化地配置Checkstyle请参考这篇文档。 Checkstyle使用技巧 Checkstyle会探测到大量问题尤其当你使用了很多规则--比如你想要一个精确的语法。虽然我通过Gradle脚本来使用Checkstyle(比如在我push代码之前)但我建议你同时使用Checkstyle的IntellJ/Android Studio插件(你能直接通过工具栏File/Settings/Plugins安装它们。译者注:mac版是Android Studio/Preferences/Plugins)。这种方式也是根据你之前为Gradle指定的那两个配置文件在你的项目中应用Checkstyle。这样的好处是能直接在Android Studio中查看结果。更实用的是结果可以直接链接到错误所在代码(Gradle的那种方式仍然很重要因为你能通过Jenkins这样的自动化构建系统来使用它)。 FindBugs 简介 Findbugs 需要简介吗它的名字已经说明了一切。 Findbugs 通过静态分析来检查Java字节码中的错误模式。 Findbugs 基本上只需要项目的字节码文件来做分析因此它十分易用。它会检测出诸如错误使用布尔运算符这样常见的错误。同时它还能检测出一些由于误解语言特性所导致的错误比如Java中方法参数的重新赋值(实际上是无效的因为Java中方法的参数是值传递)。 通过Gradle配置 以下代码展示了在你项目中使用Findbugs的基本配置(作为一个Gradle任务) task findbugs(type: FindBugs) {ignoreFailures falseeffort maxreportLevel highexcludeFilter new File(${project.rootDir}/config/quality/findbugs/findbugs-filter.xml)classes files(${project.rootDir}/app/build/classes)source srcinclude **/*.javaexclude **/gen/**reports {xml.enabled falsehtml.enabled truexml {destination $project.buildDir/reports/findbugs/findbugs.xml}html {destination $project.buildDir/reports/findbugs/findbugs.html}}classpath files() } 这和Checkstyle的任务很像。Findbugs支持HTML和XML格式的报告我选择了HTML因为其可读性更强。除此以外你只需要标记一下报告的路径来快速读取它。如果Findbugs中的错误被检测到任务会失败(仍然产生报告)。执行Findbugs的方式和Checkstyle完全一样(只是名字变成了Findbugs)。 Findbugs使用技巧 由于Android项目与Java项目有轻微不同我强烈建议大家使用findbugs-filter。例子点这里(示例项目的其中之一)。它一般会忽略掉R文件和清单文件。另外由于Findbugs是分析你的字节码你至少需要编译一次项目来测试它。 PMD 简介 这个工具十分有趣PMD并没有一个真正的名字。在官方网站上你会发现一些有趣的命名建议 Pretty Much DoneProject Meets Deadline实际上PMD是一个非常强大的工具。它的工作方式有点像Findbugs但它直接检查源码而非字节码(另外PMD支持大量语言)。目标也和Findbugs高度相似--通过静态分析找出能导致bug的模式。那么为什么我们还要同时使用Findbugs和PMD呢好吧尽管Findbugs和PMD的目标一致但它们的检查方法并不同。因此PMD有时可以找到Findbugs找不到的bug反过来也一样。 通过Gradle配置 以下代码展示了在你项目中使用PMD的基本配置(作为一个Gradle任务) task pmd(type: Pmd) {ruleSetFiles files(${project.rootDir}/config/quality/pmd/pmd-ruleset.xml)ignoreFailures falseruleSets []source srcinclude **/*.javaexclude **/gen/**reports {xml.enabled falsehtml.enabled truexml {destination $project.buildDir/reports/pmd/pmd.xml}html {destination $project.buildDir/reports/pmd/pmd.html}} } PMD的结果同样与Findbugs有许多相同之处。PMD的报告同样支持HTML和XML,因此我再次选择了HTML的格式。我强烈建议使用你自己的自定义规则集文件就像我在例子中做的这样(参照这个文件)。当然你还需要看一下自定义规则集的文档。我这么建议是因为PMD相比Findbugs而言更具争议。比如如果你没有折叠if条件语句或写了一个空的if条件语句它一般就会警告你。我认为应该由你或你的同事为你们的项目来定义这些规则是否正确。像我自己就喜欢不折叠if条件语句因为这样更具可读性。执行PMD的方式和Checkstyle完全一样(只是名字变成了PMD)。 PMD使用技巧 由于我推荐你不要使用默认的规则集你需要加上这行代码(上面已经加上了) ruleSets []不加的话由于默认值是基本的规则集那些默认的规则集会始终伴随你自定义的规则集一起执行。这样即使你在自定义的规则集中指明不使用基础规则集中的规则它们仍然会被考虑在内。 Android Lint 简介 Android lint 工具是一个静态代码分析工具。它通过你Android项目的源码检测出潜在的错误并为项目在正确性安全性性能可用性 易用性和国际化等方面提供最佳的改进方案。 正如其官网所说Android Lint是一款专注于Android的静态分析工具。它非常强大能给出大量建议来提高你代码的质量。 通过Gradle配置 android {lintOptions {abortOnError truelintConfig file(${project.rootDir}/config/quality/lint/lint.xml)// if true, generate an HTML report (with issue explanations, sourcecode, etc)htmlReport true// optional path to report (default will be lint-results.html in the builddir)htmlOutput file($project.buildDir/reports/lint/lint.html) } 我推荐你使用一个单独的文件来定义哪些规则应该使用。这个网站定义了所有来自最新ADT版本的规则。除了ignore中severity级别的规则外我的demo中的Lint文件包含了所有规则 IconDensities这个规则确保你为每一种分辨率都设置了对应的图片资源(除ldpi外)。IconDipSize这个规则确保你正确地定义了资源的每种尺寸。(换句话说检查你是否为不同分辨率定义了完全相同的图片而没有重新设置图片大小)。所以你能直接复用这份lint文件并激活所有你想要的规则。执行Android Lint任务的方式和Checkstyle完全一样(只是名字变成了lint)。 Android Lint使用技巧 Android Lint没有什么特殊的使用技巧你只需要记住Android Lint总是会测试除ignore中severity级别的规则外的所有规则。所以如果随着ADT的新版本出现了新的规则它们会被检查而不会被忽略。 通过一个任务管理以上所有工具 现在你已经掌握了为你项目使用4个质量控制工具的关键。但如果你能同时使用4个工具就更好了。你能在你的Gradle任务之间添加依赖比如当你执行一个任务时另外一个会在第一个任务完成后执行。一般在Gradle中你通过check任务为你的质量工具添加依赖 check.dependsOn checkstyle, findbugs, pmd, lint 现在当你执行check任务Checkstyle Findbugs PMD 和Android Lint 都会被执行。这是一个非常好的方式来在你commit/push/请求合并之前检查代码质量。 你能在这个Gradle文件中获得所有这些任务的示例。你能在demo源码的config/quality文件夹中找到所有关于质量控制的配置和gradle文件。 总结 正如这篇文章介绍的Android的质量控制工具配合Gradle使用非常简单。质量控制工具不仅仅能检查你电脑中的本地项目还能检查一些自动化构建平台上的代码比如Jenkins/Hudson等。这使你能将质量控制的工作依附于自动构建系统实现自动化。执行所有测试的命令与执行Jenkins和Hudson相同最简单的命令是 gradle check 请自由评论这篇文章或者咨询任何与Android代码质量相关的问题 快去实践吧 原文发布时间为2016年01月07日 本文来自云栖社区合作伙伴掘金了解相关信息可以关注掘金网站。
http://www.huolong8.cn/news/297883/

相关文章:

  • html5手机网站制作教程国内永久免费网络游戏推荐
  • 单页式网站 seo网站建设外包流程
  • 潍坊外贸建站外贸页面网站制作
  • 网站界面诊断东莞网站公司哪家好
  • 建设银行官方网站企业网银下载京东网上购物并安装
  • 钦州建设局网站一建报名时间2023
  • 如何用华为云服务器做网站石基网站建设
  • 高端网站建设哪些好做做电气的什么招聘网站好
  • 网站建站建设35个成功的市场营销策划案例
  • 怎么上线网站洛阳市网站建设管理
  • 档案网站建设对比如何刷网站流量
  • 建设网站前准备资料做网站找酷万
  • 天津新亚太工程建设监理有限公司网站江门网站推广哪里专业
  • 建设 网站协议范本上海门户网站的亮点
  • 做a图片网站建设银行网站 查余额查询
  • 智能化建设网站做视频赚钱的网站
  • 嘉兴专业做网站wordpress 多个边栏
  • 建设银行注册网站的用户名怎么写域名注册和网站哪个好
  • 程序开发外包平台优化落实新十条措施
  • 网站cms管理后台电话号码最好用的素材网站
  • 重庆网站制作系统专门做win7系统的网站
  • 网站备案详细最新流程沈阳哪家网站做的好
  • 建站技术论坛做视频网站用网站空间还是服务器
  • 昆山网站制作江宁区建设工程局网站
  • 广西建设局建设行政主管部网站红色网站呢
  • 网站查询是否安全微信主题wordpress
  • 郑州汉狮做网站报价百度竞价价格查询
  • thinkphp5做的网站平潭综合实验区交通与建设网站
  • 微信网站开发合同深交所大宗交易平台
  • 网站敏感词汇免费网站制作知乎