- 博客(598)
- 资源 (26)
- 收藏
- 关注
原创 FaceBook/infer-不同构建系统的支持
Analyzing apps or projects文件infer分析文件是通过javac 和clang来编译.当然你也可以使用gcc,但是gcc的内部原理还是使用clang来编译,如果你不使用clang来编译文件,infer是无法分析的.构建系统infer支持多个构建系统(buck,gradle,maven,Xcodebuild和Make),而且可以并行的执行编译命令从而让infer变得更快,例
2015-06-14 16:10:54
3495
原创 FaceBook/infer-inferTraceBugs命令使用
inferTraceBugs 命令查看看详细错误详细信息,一般我们可能直接去源码文件去看这些文件,但是infer也为我们提供inferTraceBugs命令来查看.命令详细说明:localhost:ios_hello wuxian$ inferTraceBugs --helpusage: inferTraceBugs [-h] [-o <directory>] [--only-show] [--n
2015-06-14 15:35:04
2613
原创 FaceBook/infer-infer工作流
Infer workflowinfer命令例如我们分析iOS项目,正常情况下,我们构建iOS项目,只需要xcodebuild -target HelloWorldApp -configuration Debug -sdk iphonesimulator ,infer命令只是在这个构建命令开头加入了infer -- 这样一个前缀,为何是这样呢?这样从infer的工作流程分析得到解答.infer执行的
2015-06-14 15:11:22
3286
原创 FaceBook/infer-尝鲜
据说这个infer可以在不运行程序的情况下就可以检查出应用程序的bug.有没有这么diao,看看先。资料源码:Github下载源码git clone https://github.com/facebook/infer.git58deMacBook-Pro:self wuxian$ git clone https://github.com/facebook/infer.gitCloning int
2015-06-14 12:46:49
3040
原创 FaceBook/infer-分析Android项目
Hello world Android环境准备首先我们要用SDK Manager安装Android SDK 22,也就是5.1,还要Android SDK Build-tools 和 Android Support Repository.如下图勾选的三个组件:添加local.properties文件在文件中设置sdk路径,例如我的文件中信息如下:sdk.dir=/Users/wuxian/Doc
2015-06-14 12:34:19
5840
原创 FaceBook/infer-分析Java文件
Hello world Java命令 infer – javac java文件名例如例子里自带的:localhost:examples wuxian$ infer -- javac Hello.javaTODO: print error messageStarting analysis (Infer version v0.1.0)Fatal error: exception Sys_e
2015-06-14 12:04:58
3702
1
原创 FaceBook/infer-分析C项目
Hello world Make命令在C项目的根目录执行infer -- make58deMacBook-Pro:c_hello wuxian$ infer -- makecc -c example.cStarting analysis (Infer version v0.1.0)Analysis done1 file analyzedexample.c:22: error: NULL_D
2015-06-13 14:44:12
2167
原创 FaceBook/infer-分析iOS项目
Hello world iOS命令infer -- xcodebuild -target <项目名> -configuration Debug -sdk iphonesimulator58deMacBook-Pro:ios_hello wuxian$ infer -- xcodebuild -target HelloWorldApp -configuration Debug -sdk iphone
2015-06-13 14:36:47
4717
原创 FaceBook/infer-分析C文件
Hello world C命令infer -- gcc -c <文件名>58deMacBook-Pro:examples wuxian$ infer -- gcc -c hello.cStarting analysis (Infer version v0.1.0)Analysis done1 file analyzedhello.c:5: error: NULL_DEREFERENCE
2015-06-13 14:19:59
2065
原创 FaceBook/infer-分析OC文件
Hello WorldCinfer -- clang -c <文件名> 分析过程信息:localhost:examples wuxian$ infer -- clang -c Hello.mHello.m:4:1: warning: no 'assign', 'retain', or 'copy' attribute is specified - 'assign' is assum
2015-06-13 14:14:26
2271
原创 FaceBooK/infer-Mac下安装Java分析环境
将github上的源码download到本地后,一步一步往下看. Mac OS X :10.10.2Python版本首先安装Python,版本要高于2.7,包括2.7.58deMacBook-Pro:infer wuxian$ python -VPython 2.7.6由于Mac OS X自带Python,所以一般都无需安装,如果你没有,请自行安装.Opam安
2015-06-12 23:05:37
4988
原创 FaceBook/infer-bin目录下的文件说明
FILES.md翻译infer/bin目录下的文件主要命令 文件名 意义 infer 运行infer,python脚本.可以看详细的说明文档了解使用细节 inferTest 执行测试,shell脚本.使用Buck来执行测试,用法如下:inferTest{c,objc,java}测试C文件,objective-c文件,java文件 inferTraceBugs 探测in
2015-06-12 18:26:12
2397
原创 FaceBook/infer-安装说明
Install.md翻译安装 Infer我们为Linux和MacOS系统提供了预构建的二进制文件,如果你只是想使用Infer,而不想为该项目贡献代码的话,这些二进制文件足够了.相反,如果你想编译infer,这里也有很详细的说明指导你如何在你的操作系统中安装infer.安装Infer二进制文件环境要求Python版本大于等于2.7Mac OS X从infer release页面获取最新版本inf
2015-06-12 18:22:39
11628
5
原创 gradle传递参数给Java项目的main函数
参考文章build.gradle配置run 任务中定义如下:run { if ( project.hasProperty("appArgs") ) { args Eval.me(appArgs) }}命令行gradle run -PappArgs="['-u', 'myuser', 'some other argument', 'and/a/path']"其中我们
2015-06-10 18:40:04
8949
2
原创 Mac中使用eclipse做java项目,使用Runtime执行命令行的命令报错解决方法
有的时候我们需要在Runtime.getRuntime().exec("adb devices") 来执行adb命令,但是在mac下使用eclipse可能会报错,解决方法也很简单错误信息06-04 19:34:10 E/adb: Unable to locate adb.Please use SDK Manager and check if Android SDK 解决方法在eclipse项目
2015-06-08 18:44:35
4646
原创 CrashMonkey4Android-use in windows
WINDOWS下配置第一步同步CrashMonkey4Androd_bin 项目来获取可执行文件,或者直接下载ZIP包,解压。第二步解压后,项目目录结构如下:找到tools目录下的cts-tradefed.bat文件,双击会出现终端窗口:第三步在终端输入命令 : run cts --plan Monkey 按return ,@Monkey开跑了。第四步参看报告,在tools的同级目录reposit
2015-06-05 15:39:47
2630
1
原创 CrashMonkey4Android-如何进行二次开发
如何进行二次开发下载源码我们可以开发的源码分两部分,这个我在cts专辑中也讲过,cts分两部分,一个是基础库,一个是运行库,所以我们的源码也分为两部分运行库同步CrashMonkey4Android源码: https://github.com/DoctorQ/CrashMonkey4Android.git 或者下载zip包,解压.然后导入到eclipse中.基础库同步CrashMonkey4An
2015-06-05 11:33:46
3448
原创 CrashMonkey4Android-troubleshoot
TroubleShoot配置过程中如遇问题,请查看下面的问题总结:1. Unable to locate adb06-04 19:34:10 W/DeviceManager: Fastboot is not available.06-04 19:34:10 E/adb: Unable to locate adb.Please use SDK Manager and check if Andro
2015-06-05 11:11:58
1792
原创 CrashMonkey4Android
项目源码已挂载到github上: CrashMonkey4Android 可执行版本:release 关联项目: CrashMonkey4iOS简介AAM全称Android Advance Monkey,是一个依靠Cts框架,对原生Monkey进行改造后的产物,拥有以下新增功能:保存每一步的截图保存logcat保存每一个Monkey事件的信息分析CrashHtml报告开源,你想做的,
2015-06-04 16:34:34
3356
5
原创 开门见iOS(3)-了解Xcode
工欲善其行,必先利其器Xcode6.2主面板工具栏Xcode6.2工具栏中依次有如下区域(排除原生3个编辑按钮:关闭,缩小,全屏)运行项目按钮终止运行项目按钮目标设备选择栏活动视图编辑器视图切换组(编辑器视图在整个Xcode的正中间,其中可以使用上面的编辑器视图来切换调整要现实的视图区域)1.左边第一个按钮为默认编辑器窗体,编辑区域就一个编辑窗体 2.中间为辅助视图,将编辑区域分为左右2个区
2015-05-31 16:49:42
1321
原创 Android项目中利用instrumentation启动Monkey
Monkey源码下载下载Monkey源码 ,三个文件都要下载下来,包含3个文件导入到AS中添加项目AndroidMonkey.tgz ,解压后目录如下:demo项目NodePadMonkeyTester.tgz ,提取其中的Android项目,导入到Android studio(原来是android,需要转化为android studio,我没有eclipse,我手工添加的),项目结构如下:将项目的
2015-05-13 20:46:32
2952
原创 Android模块化开发中统计aar库的代码覆盖率
现在android 开发都喜欢用模块化的方式,然后以aar文件的方式导入到主项目,但是这对于统计代码覆盖率就有点麻烦了,因为统计时候都忽略这些第三方库,那么我们如何将这些aar文件纳入到代码覆盖率的统计中来呢?请看本篇文章。参考资料何为模块化开发见Monkey文章:Android Gradle 模块化开发实例 Demo问题像这些aar文件加入到主项目后,我们在使用jacoco的时候,都无法统计这些
2015-05-12 16:10:24
4212
1
原创 Android中根据coverage.ec文件生成报告
关于android中的代码覆盖率,可以参考我前几篇文章:Android手工测试代码覆盖率增强版 Android手工测试的代码覆盖率 Android UI自动化测试的代码覆盖率官方生成代码覆盖率报告的流程gradle为android提供的插件生成代码覆盖率的报告流程为首先在应用目录的生成coverage.ec文件(比如我们的应用package为com.wuba.wuxian.android_0
2015-05-11 15:16:31
10520
2
原创 Android手工测试代码覆盖率增强版
之前的覆盖率方法,是不可控的,今天我们来看看思寒说的方式,dump覆盖率的数据。参考文章加入代码覆盖率的文件从参考文章中下载文件,解压缩后有4个文件:.├── EmmaInstrumentation.java├── FinishListener.java├── InstrumentedActivity.java└── SMSInstrumentedReceiver.java提取前三个文件
2015-05-10 11:14:03
7740
15
原创 Android手工测试的代码覆盖率
昨天我们探究了UI自动化中代码覆盖率,今天我们来看看如何实现功能测试人员测试过程中,代码覆盖率的计算先纠个错昨天我们使用jacoco,在build.gradle加入了很多代码:apply plugin: 'jacoco'....jacoco{ toolVersion = "0.7.1.201405082137"}android { buildTypes {
2015-05-07 20:29:36
4370
原创 Appium源码研究(10)-logger模块
// set up distributed logging before everything elsevar npmlog = global._global_npmlog = require('npmlog');// npmlog is used only for emitting, we use winston for output//不利用npmlog输出信息,而是利用winston来输
2015-05-06 23:24:17
3067
原创 Android UI自动化测试的代码覆盖率
代码覆盖率我们都知道,了解过jacoco也知道如何去弄,那么我们想要在跑UI自动化脚本的时候如何收集脚本执行过程中的代码覆盖率呢?首先我们知道jacoco可以得到测试的代码覆盖率,那么如果这些单测是UI的case,是不是就可以达到我们的要求,我们尝试一下,参考文档AS中新建android项目 在android studio上新建一个android项目,默认build.gradle如下:apply
2015-05-06 17:54:20
11734
3
原创 Appium源码分析(9)-helpers模块续
续写Appium源码分析(8)-helpers模块 configureServer该方法在main.js模块中有调用。module.exports.configureServer = function (rawConfig, appiumVer, appiumServer, cb) { //定义一个变量 var appiumRev; //判断配置数据是否定义,未定义的话就直接报
2015-05-05 13:49:37
2871
原创 Appium源码分析(8)-helpers模块
lib/server/helpers.js模块, 研究之前,我们不防猜测一下这个模块的作用,然后在研究完成时在总结里面重新定义一下这个模块的作用。我猜测这个模块的作用就是提供了一些独立的方法,作为一些工具方法供其他模块使用加载其他模块var _ = require("underscore") , gridRegister = require('./grid-register.js') ,
2015-05-04 17:47:29
2383
原创 Appium源码分析(7)-status模块
该模块中定义了36种不同的状态,以及状态的解释信息,还有一个模块方法,这个模块相对简单36种状态1个json字符串定义了36个元素,每一元素代表了一个状态,每一个状态有一个名称,然后对应一个json字符串,该json字符串中有code值和summary值:code为整形,summary值为string字符串。var codes = { Success: { code: 0, s
2015-05-04 15:18:02
8939
原创 Appium源码分析(6)-responses模块
在Appium源码分析(4)-控制器模块文章中我们遗留了一个问题,是关于responses模块中的getResponseHandler函数的问题,索性今天我们直接来了解了解responses模块加载模块var logger = require('./logger.js').get('appium') , status = require('./status.js') , _ = requi
2015-05-04 14:57:08
3417
原创 Appium中的logger
appium中的log输出量很大,我们分析问题的时候会依赖于这些log,但是你理解这些log输出一些标志么?你是否觉得它的输出晦涩难懂了?想不想改成自己的大名?那就看下面的文章吧。log形式首先我们来看一段log输出:info: Starting Appinfo: [debug] Attempting to kill all 'uiautomator' processesinfo: [debu
2015-04-30 16:51:35
3725
原创 Appium源码配置问题总结
在appium源码环境下RESETTING NPMchromedriver安装失败* Determining platform* Platform is mac---- Resetting / Initializing Appium ----RESETTING NPM* Installing new or updated NPM modules (including devDeps)np
2015-04-30 15:52:59
5247
原创 Appium源码分析(5)-请求是如何执行的
在上一篇文章中,我将queue理解为了队列,但其实在nodejs中,这只是业务名词,代表的是流程控制的一种方式,使用queue方式时,事件按照先进先出的准则执行。queue我们先了解一下事件的集中处理方式,参考文章。从这篇文章可以知道,nodejs提供了一个Async库,该库就是用来处理事件的。里面就有这一个queue。 在上一篇文章我们讲到了initQueue,我们这次再来看看:Android
2015-04-29 14:42:40
3589
原创 Appium源码分析(4)-控制器模块
上一篇分析appium的文章还要追述到一个月前了,感慨已经荒废了很久了。今天继续开始吧。控制器模块// Appium webserver controller methods// https://github.com/hugs/appium/blob/master/appium/server.py"use strict";var status = require('./status.js')
2015-04-29 12:26:02
4409
原创 Java发送Mail总结
让其折磨的够呛,何不彻底弄懂一个简单的mail组成部分import java.util.Properties;import javax.mail.Authenticator;import javax.mail.Message;import javax.mail.MessagingException;import javax.mail.PasswordAuthentication;impor
2015-04-20 18:03:50
1846
原创 Jenkins中配置多项目SCM
有的时候我们的项目依赖其他很多子项目,我们想在jenkins配置让这些子项目也加入到SCM中来,如何做到?下载插件Multiple SCMs Plugin插件,安装后重启Jenkins server.配置SCM在job配置界面找到Source Code Management模块,选择 Multiple SCMs选项: 选择Add SCM 选择你管理源码的工具,我用的是github,所以我选择g
2015-04-15 16:38:29
21625
原创 Jenkins不同job之间传递参数
有的时候不同job直接需要传递一个文件名或者路径,这个时候我们不需要传递文件实体,那这个路径如何传递呢?比如有如下两个项目,我想把A的工作目录传递给B,让B使用。 A job配置首先需要安装一个Parameterized Trigger Plugin插件:安装后重启。在A项目配置面板中Post-build Actions选项中选择Trigger parameterized build on
2015-04-15 16:16:19
28956
原创 Jenkins不同job之间依赖关系的两种配置方式
项目之间总有依赖,比如A Job执行完执行B Job,如下图所示,如何建立依赖呢? 配置上游我们通常喜欢配置上游依赖,在B中配置 配置如下信息。选择在其他项目构建完成后进行构建: Project to watch:依赖的项目名称 Trigger only if build is stable:只有在A项目构建文档后进行构建,过滤条件。这样我们执行A项目构建,紧接着B项目也会构建。配置下游
2015-04-15 15:39:52
30261
原创 Jenkins中不同slave间传递文件
场景:我们jenkins上有多个slave,有时候我们想获得其他slave的某一个job构建的成果物,在我们机器上另一个job使用。就比如在A slave中进行ios源码的编译打包成ipa文件,而在B slave中另一个job中得到该ipa包安装到手机中,如果做到?A slave job配置在该job中config中配置Post-build Actions模块,添加一个archive the ar
2015-04-15 15:22:51
12124
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅