构建轻量级的AEP框架

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

构建轻量级的AEP框架51Testing软件测试网 p,GkZ x c _

陈能技

Y$u `v@B{_0

2007-10-17

q}*I@YIA#zz-B C0

 

P5S;[0|I;jH Gs&J0

AEP

%x@vS(z0B9T(JbcC0

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

 

J:n!vD~ I:Sfij0

关于AEP的更多概念和基础理论,可参考以下两篇文章:51Testing软件测试网.Vg _&J4gh}8MV

《我们为什么不多做点预防错误的工作51Testing软件测试网nd,p+n g ot6s

http://www.51testing.com/?141783/action_viewspace_itemid_64195.html51Testing软件测试网w$sMxt*\ m_ L%}

 51Testing软件测试网:xTn3r%I[+yq

《自动错误预防的五大法则》51Testing软件测试网-v&@g;ux?

http://www.51testing.com/?141783/action_viewspace_itemid_64481.html51Testing软件测试网"IEg dMBPDl

 

,T)^7h:R1z ]&|u9h0

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

&V6z4kh mY{0

 51Testing软件测试网 {,kIp_Iv

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

VS.NET 2005的代码分析工具》

\$H vQ;Y:D*S O0

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

AC L c7|R3Jq+O4a:T p;y0

 51Testing软件测试网5S Sixtw"V

SQLServer最佳实践自动检查工具》)。

9H,fD8xst0

http://www.51testing.com/?141783/action_viewspace_itemid_64473.html51Testing软件测试网2A;j$s[#E$x

 

ul4o mV)uXe0

FxCop用于检查代码是否满足.NET的编码规范,SQLBPA用于检查SQL Server的表、视图、存储过程等是否满足最佳实践的规范。51Testing软件测试网"Iy7fk} R

 

'ED*No1DIoK0

利用Jscrīpt脚本搭建每日构建框架

Dv7pO3C*d:mP0

首先利用Jscrīpt脚本建立起一个基本的每日构建框架,这个框架需要包括:51Testing软件测试网#r'@'R&v S*M]i.e

 51Testing软件测试网Gwl9nrnI

1、 从源代码服务器获取最新代码并编译

b7K"^d)Ja|0

2、 调用FxCop对代码进行检查

9Z)n(X r9u9sxQN!]r0

3、 调用BPA对数据库进行检查51Testing软件测试网&dI3j |fG#A h

4、 汇总检查结果并发送给项目组51Testing软件测试网,d:z}q AW oGu

 

.{1T.]+}D?+C&zy@}$A0

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

9a,{9T{,zl'M U:zf0

 51Testing软件测试网0Z:V"nr"O%Z f,KC

调用FxCopCmd51Testing软件测试网%e5pO9a;G@7c-r

VS.NET 2005自带的代码检查工具在安装目录可以找到。

4Cun7e0m1OX0

例如:C:\Program Files\Microsoft Visual Studio 8\Team Tools\Static Analysis Tools\FxCop51Testing软件测试网 A:q9EIg

 

*` X R'G+V8J,Zzm7~0

加入到每日构建框架中时,需要使用FxCop的命令行工具FxCopCmd。命令行的使用方法可参考如下:51Testing软件测试网.? @9N0n6]NwZMZ

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

F5Y'RXM0

 

W^{#~Sw{[2`0

/rule:<[+|-]文件/目录> [缩写: /r:<[+|-]文件/目录>]包含规则程序集的目录或规则程序集的路径。“+”启用所有规则,“-”禁用所有规则

k4g \^bM0D0

 

x%wQXs+IK0

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

j6q gp2W0

 

?6ihQc*@0

/out:<文件> [缩写: /o:<文件>]FxCop项目或Xml报告输出文件51Testing软件测试网i#AOZU

 51Testing软件测试网[wwFMH)N;YvK

/outxsl:<文件> [缩写: /oxsl:<文件>]引用XML报告文件中的指定XSL/outxsl:none会生成一个不带有XSL样式表的XML报告51Testing软件测试网6x(hJ {~1~jb r

 

5I6xC&FSQ0

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

0WT-Mv~NX#HN0

 

*G*BFdQ2u!pT0

/project:<文件> [缩写: /p:<文件>]要加载的项目文件51Testing软件测试网\,V5A$e7C\.]

 

y.RJy5I2v c0|.b0

/platform:<目录> [缩写: /plat:<目录>]平台程序集的位置

\bm/JWD} iw&W0

 

LLyj+~s0

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

-z7h7f6?ie0

 

/C*E*lb/f&\"Nv0

/types:<类型列表> [缩写: /t:<类型列表>]仅分析这些类型和成员51Testing软件测试网)s(ZY0D'b] I

 51Testing软件测试网%MK9a-S_#wk

/import:<文件/目录> [缩写: /i:<文件/目录>]导入XML报告或FxCop项目文件

D:ndoxXi0

 

2q^dE{4R0

/summary [缩写: /s]在分析之后显示摘要

z w RU([v6}0

 

Sj(?RI ^(o3k0

/verbose [缩写: /v]在分析期间提供详细输出结果51Testing软件测试网/Xg.r T%i uoH[&N

 

ze:m.^]:hc0

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

"{e+~VTK)br0

 51Testing软件测试网1Al$O3}7n ID

/console [缩写: /c]将包括文件和行号信息在内的消息输出到控制台51Testing软件测试网3{n*kyS

 

+hA/bNm:h0

/consolexsl:<文件> [缩写: /cxsl:<文件>]将指定的XSL应用于控制台输出51Testing软件测试网,O~$nLs'b1y-S

 51Testing软件测试网+L G*aKT N c R `$]

/forceoutput [缩写: /fo]即使在没有发生冲突的情况下,也写入输出XML和项目文件51Testing软件测试网6[G m sgq7x

 

z!Z${-W9d0

/dictionary:<文件> [缩写: /dic:<文件>]自定义字典

px"]*R^%K0

 51Testing软件测试网L"y{E@f

/quiet [缩写: /q]禁止所有控制台输出,/console/consolexsl暗示的报告除外

4EJm gi0v0

 

0@ H-PS/u%}OS3R0

/ignoreinvalidtargets [缩写: /iit]在不进行提示的情况下忽略无效的目标文件51Testing软件测试网X.[FI!sc@&vP

 

rxMqPO"r@Vh @0

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

2HK6k^B@Kj'A0

 51Testing软件测试网t$S]huh

 

kKM3sf6D~.R0

因此一个调用的例子如下所示:

9Nb/F]5UZb ms0

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”51Testing软件测试网+^^&G9q[8r4_cmx

 51Testing软件测试网 ^v Rhh

BpaCmd

f3Dv?2u9V{/?m0

SQL BPASQLServer2000版和SQLServer2005版。加入到每日构建中时,同样需要利用它的命令行工具BpaCmd,可以在安装目录找到,例如:51Testing软件测试网w&} N jL+k`

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

2TN"O,E'`+gt v*p/m,K0

 

]i r6oxT+r}t0

BpaCmd的调用也比较简单,例如:51Testing软件测试网c#SJc1b8g{7g%S

BpaCmd –S 192.168.3.8 –d sqlbpa –E –r TSQLTest51Testing软件测试网W!}6Ej,T@

 51Testing软件测试网%w"gw4y oM|Q~(G

但是前提是已经建立sqlbpa库以及建立了规则检查包。51Testing软件测试网"h `#M,e|

 

gay$B.R?p%@ J0

BPACmd的使用方法可参考如下:51Testing软件测试网 ~+|(@#x.n @^

           -REPOSITORY CONNECTION OPTIONS-

o;W%oUu0

-S <server name>  Specifies the name of the SQL Server instancethat contains the repository.51Testing软件测试网(G Q"W!Hi.}Q

-d <database name>  Specifies the name of the repository database.51Testing软件测试网!i(b;my9V,]2U

-E   Use integrated authentication to  log on to repository.51Testing软件测试网+DIl D6v&I

-U <username>  User name to log on to repository.51Testing软件测试网&t3O)R bWf

-P <password>   Password to log on to repository.51Testing软件测试网 o%o y|X]:F o gElk2L

 

&m3q%{1P6b0

           -BEST PRACTICE GROUP OPTIONS-

#H~r%j[%ZwofY0

-r <best practice group>  Executes the specified best practice group.

9[ ZUje|0

 

0Gx*t&Tw0

           -MISCELLANEOUS OPTIONS-

9f5z5T fq#V,_jc5o0

-q    Quiet mode - does not display additional messages.

$y:`$X4GJ{0

-l     Logs operation of BPA engine to msbpa.log.

+[9B#^3B8rH0

-?    Displays usage help.

(g*[@]:AFe;h U0

 51Testing软件测试网vi3_)qp:{g*i%OB

Examples:

9J:E0E4qZ-ZS7m0

     bpacmd -S MainServer -d sqlbpa -E -r tsql_rules -r upgrade_prep51Testing软件测试网sTO!R5P$z)cG*}

 51Testing软件测试网@ Ci-}-kV4k W K

     Executes the best practice groups "tsql_rules" and "upgrade_prep"after connecting to the specified repository using integrated authentication.51Testing软件测试网 q lrf!\

 

7Z9S.JPK](_y5V0

结果检查和发送

!qV_$B1V6a n3x#vv0

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

}:whL4}/?'XDU0

 51Testing软件测试网,l F|V i kU&UF^}

这样就构建了一个非常基础的AEP系统。根据项目产品的实际情况,还可以加入其它的AEP元素,例如单元测试、WebService测试、性能测试等。

3n9ol:]0X2e#nh0

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

 

评分:0

我来说两句

Open Toolbar