构建轻量级的AEP框架

上一篇 / 下一篇  2007-10-17 21:32:14 / 个人分类:自动错误预防(AEP,Automated Error Prevention)

构建轻量级的AEP框架

V TF{3F){@ V"Y3Ww0

陈能技51Testing软件测试网+u`LWUV

2007-10-1751Testing软件测试网]*Aw9\]K~8p:p

 

+\E%E} cU0

AEP51Testing软件测试网W8jHm}%~-~

什么是AEPAEPAutomated Error Prevention自动错误预防,是指通过在整个软件开发周期中自动地预防错误来提高产品质量。AEP通过应用行业最佳实践来防止普遍错误并建立全寿命的错误预防基础。可以把代码标准检查、单元测试、集成测试、压力测试、连接检查、监视等放到软件开发周期中并自动化

Si.qd8ofHR0

 51Testing软件测试网,}o'h%]*tyL

关于AEP的更多概念和基础理论,可参考以下两篇文章:51Testing软件测试网0z:~(H2QV4QQ)b

《我们为什么不多做点预防错误的工作51Testing软件测试网0|6K r yv&nA-D%k

http://www.51testing.com/?141783/action_viewspace_itemid_64195.html51Testing软件测试网!cr)y]7a&~6[)Y)A3oq

 51Testing软件测试网 P3sk)F#A(v ~

《自动错误预防的五大法则》51Testing软件测试网i!x5YI@A7bj2v;x

http://www.51testing.com/?141783/action_viewspace_itemid_64481.html

:f FN(Pxm.{/s0

 51Testing软件测试网};ll YR*o3a1qF;{#H

作为一个起步,我们可以先搭建一个初步的、轻量级的AEP框架。然后再逐步加入其它自动化检查工具来应用其它行业最佳实践。从而逐步建立起完整的、适合项目实际的AEP系统。

E5P*tpa(z0

 

?Uvho(Bw1wO0

例如,在我们的项目中,使用.NETSQLServer数据库构建C/S结果的应用软件。那么首先可以考虑的是加入VS.NET 2005开发工具自带的代码标准检查工具FxCopSQLBPA。参考我的博客上的两篇文章:51Testing软件测试网L)L6oJ`

VS.NET 2005的代码分析工具》51Testing软件测试网.[h!ggr;K\

http://www.51testing.com/?141783/action_viewspace_itemid_64245.html

|-Eu v.\u |QDN J-]0

 

UH0n M!yO0

SQLServer最佳实践自动检查工具》)。51Testing软件测试网B$OaT%O N{Z w

http://www.51testing.com/?141783/action_viewspace_itemid_64473.html51Testing软件测试网[#P J"o%X bOC

 51Testing软件测试网 U"]c}5{B

FxCop用于检查代码是否满足.NET的编码规范,SQLBPA用于检查SQL Server的表、视图、存储过程等是否满足最佳实践的规范。

\*q |$uN%aP#sof*^0

 

.Z {0X%Xr*n0

利用Jscrīpt脚本搭建每日构建框架51Testing软件测试网C W f(FG Akk s

首先利用Jscrīpt脚本建立起一个基本的每日构建框架,这个框架需要包括:

Y@3OwK4NA%eU*Y.u0

 

*g p'Oo0wB M'U%bET0

1、 从源代码服务器获取最新代码并编译51Testing软件测试网!h``2@h!q$fY

2、 调用FxCop对代码进行检查51Testing软件测试网4?TYw-tWZ+Um

3、 调用BPA对数据库进行检查

d1Y ESoC/Lk0

4、 汇总检查结果并发送给项目组

$b&L([1_)I |KV&u0X0

 

(y9J9TMQ0

关于Jscrīpt的脚本使用可参考Windows脚本编程,或访问我的博客的Jscrīpt栏目。

+SC` Z5e1i:K#C0

 

#j#UX_.s4v$t w9B0

调用FxCopCmd

%VW&}Lr9ME0

VS.NET 2005自带的代码检查工具在安装目录可以找到。51Testing软件测试网7M/uk5aP"VT kT2`

例如:C:\Program Files\Microsoft Visual Studio 8\Team Tools\Static Analysis Tools\FxCop51Testing软件测试网0^,U%mf E"z~s:L

 

V s jP3p4HL:v)T0

加入到每日构建框架中时,需要使用FxCop的命令行工具FxCopCmd。命令行的使用方法可参考如下:51Testing软件测试网1G6q"qS;J

/file:<文件/目录> [缩写: /f:<文件/目录>]要分析的程序集文件

E'Pdjj zh)H0

 

F0n,Pg)Q u)x(n$r2Y0

/rule:<[+|-]文件/目录> [缩写: /r:<[+|-]文件/目录>]包含规则程序集的目录或规则程序集的路径。“+”启用所有规则,“-”禁用所有规则51Testing软件测试网 lw\A/U*L'az0`4Ao

 51Testing软件测试网^ j4u npRTW

/ruleid:<[+|-]Category#CheckId> [缩写: /rid:<[+|-]Category#CheckId>]标识规则的CategoryCheckId字符串。“+”启用规则,“-”禁用规则

}6Mn/g6U)ZpA#lx0

 

p gCUj4R6K3Rj0

/out:<文件> [缩写: /o:<文件>]FxCop项目或Xml报告输出文件51Testing软件测试网1e6f9i4Q| P K

 

7HqALBqYr0

/outxsl:<文件> [缩写: /oxsl:<文件>]引用XML报告文件中的指定XSL/outxsl:none会生成一个不带有XSL样式表的XML报告

N,Q/b)a`$yF D0

 

6z\ JF;hx$Q^3Mt5]0

/applyoutxsl [缩写: /axsl]XSL样式表应用于输出

w7lv!OB0

 51Testing软件测试网?!C'^+hZ!j

/project:<文件> [缩写: /p:<文件>]要加载的项目文件

_'sSQJ-H+F5W'|0

 51Testing软件测试网5nc_4_9KN

/platform:<目录> [缩写: /plat:<目录>]平台程序集的位置51Testing软件测试网[*j\$Z"[RL

 51Testing软件测试网Zn.pd$No

/directory:<目录> [缩写: /d:<目录>]要搜索程序集依赖项的位置

{p4k m.J0

 

:e9s {-\e+z S'@(|0

/types:<类型列表> [缩写: /t:<类型列表>]仅分析这些类型和成员

)p6Hg"A$UZ0

 

p~r Ji7q%Z8e"h0

/import:<文件/目录> [缩写: /i:<文件/目录>]导入XML报告或FxCop项目文件51Testing软件测试网s@`H{BRLf9w

 51Testing软件测试网g6a9P@{k x'pGp3G&a

/summary [缩写: /s]在分析之后显示摘要51Testing软件测试网 ^#HHO%o'Z.FIh

 51Testing软件测试网fV L%z"H pxai9XCw6]

/verbose [缩写: /v]在分析期间提供详细输出结果

W'n-o-?ie,K&g![9A0

 

*v/D,tL i"^kv#v0

/update [缩写: /u]如果进行了更改,则更新项目文件

W!ms%BDY)k0

 51Testing软件测试网 aE,DJ3nR+WY*|)t

/console [缩写: /c]将包括文件和行号信息在内的消息输出到控制台51Testing软件测试网-@EjH.Pkr7e

 

Q|s{:Tv(b+{0

/consolexsl:<文件> [缩写: /cxsl:<文件>]将指定的XSL应用于控制台输出

Ny E,r`i#hX0

 

c'beN%Ra |0

/forceoutput [缩写: /fo]即使在没有发生冲突的情况下,也写入输出XML和项目文件

HmF(D"b?*Y7m5qM/E0

 

?V0|'GQ8i%YN#c0

/dictionary:<文件> [缩写: /dic:<文件>]自定义字典51Testing软件测试网)Fm|e`0N5n%`LK

 

g7_o6uY1| H ^0

/quiet [缩写: /q]禁止所有控制台输出,/console/consolexsl暗示的报告除外51Testing软件测试网]!A_Z6t

 51Testing软件测试网 w;Mr1TP

/ignoreinvalidtargets [缩写: /iit]在不进行提示的情况下忽略无效的目标文件

E'N/jO0t0

 51Testing软件测试网O'}S y-F

/aspnet [缩写: /asp]只分析ASP.NET生成的二进制文件,并对要分析的所有程序集适用App_Code.dll中的模块禁止显示规则51Testing软件测试网F-@ ?WLuf

 51Testing软件测试网S&LtmoK~#A

 

_$yH#L;Mff;leD0

因此一个调用的例子如下所示:51Testing软件测试网)yc|(Gx E7Lng2yZ

FxCopCmd /f:”D:\AUT\bin\Debug\aut.exe” /out:”C:\1.txt” /s /rule:+”C:\Program Files\Microsoft Visual Studio 8\Team Tools\Static Analysis Tools\FxCop\Rules\DesignRules.dll” /ruleid:-“Microsoft.Design#CA2210”

$Q? px2v$w0

 

V5D~i M0|0

BpaCmd51Testing软件测试网M"v m!E6CuLg^I

SQL BPASQLServer2000版和SQLServer2005版。加入到每日构建中时,同样需要利用它的命令行工具BpaCmd,可以在安装目录找到,例如:

y:]5r/]7h0[M Gx0

C:\Program Files\Microsoft SQL Server Best Practices Analyzer

3uV&hOV^0

 51Testing软件测试网6|0jXG^ p9k

BpaCmd的调用也比较简单,例如:

4ZvL }y0t_ H1]0

BpaCmd –S 192.168.3.8 –d sqlbpa –E –r TSQLTest51Testing软件测试网^Ex6GS*?:f G

 

_;_OT N{0X L%E0

但是前提是已经建立sqlbpa库以及建立了规则检查包。51Testing软件测试网 RwwBa)I i4C

 

#M2pK&i;g0

BPACmd的使用方法可参考如下:

R+Md6Mi)Iy;S1G1`"XJ0

           -REPOSITORY CONNECTION OPTIONS-51Testing软件测试网 Ombiy%c4F

-S <server name>  Specifies the name of the SQL Server instancethat contains the repository.51Testing软件测试网9cACun

-d <database name>  Specifies the name of the repository database.

"p-BWZ1?*`2I)_+A&B0

-E   Use integrated authentication to  log on to repository.51Testing软件测试网*Kp7F u f+{

-U <username>  User name to log on to repository.51Testing软件测试网1q;zfBq.y4c*b

-P <password>   Password to log on to repository.51Testing软件测试网.cFV8q%ddX

 51Testing软件测试网L.wS)v k D1M-_

           -BEST PRACTICE GROUP OPTIONS-

W o NE/r!\6U1V CY3K'bc0

-r <best practice group>  Executes the specified best practice group.51Testing软件测试网0L'Jo%u/x h;E+] y ~D

 51Testing软件测试网+c%e7j7i|)PVT\

           -MISCELLANEOUS OPTIONS-

Q/@x}Hv }(P'B9E0

-q    Quiet mode - does not display additional messages.51Testing软件测试网8~(LH&fJ U)R-Q

-l     Logs operation of BPA engine to msbpa.log.51Testing软件测试网s _^+@9R0E

-?    Displays usage help.

)v(PpZa1O S0

 

T P{5}Z%Ib0f+O0

Examples:51Testing软件测试网}i%] A i6EF Y

     bpacmd -S MainServer -d sqlbpa -E -r tsql_rules -r upgrade_prep

u epu;Z;| \7?g&w0

 51Testing软件测试网b `$L-H&K,qr-]u

     Executes the best practice groups "tsql_rules" and "upgrade_prep"after connecting to the specified repository using integrated authentication.51Testing软件测试网FgN2i?&obg:m

 51Testing软件测试网S;{2RmH^

结果检查和发送

}~J8hXU0

FxCopCmdBpaCmd都能把检查结果保存到文件中,因此可以利用Jscrīpt读入文件,分析和汇总结果,形成最终的AEP报告,并发送给项目组所有人。51Testing软件测试网JO\d8F0D9}

 

2M f w9p;W)J*n6z+R0

这样就构建了一个非常基础的AEP系统。根据项目产品的实际情况,还可以加入其它的AEP元素,例如单元测试、WebService测试、性能测试等。51Testing软件测试网%_ezgQ*T+k.iah"o1@


TAG: AEP 自动错误预防 自动化 框架 代码检查 最佳实践

 

评分:0

我来说两句

Open Toolbar