??xml version="1.0" encoding="utf-8" standalone="yes"?> Java Excel API 文 http://www.andykhan.com/jexcelapi/
http://hi.baidu.com/%D9%DC%D5%BC%BE%FD/blog/item/937c921603e2220c4a90a794.html
正确~写PRD产品需求文?br />http://hi.baidu.com/wenlym%CD%E5/blog/item/8fff94ac81727d1c4b36d6db.html
]]>
]]>
http://qa.taobao.com/?p=9015
静态检?/strong>:静态测试包括代码检查、静态结构分析、代码质量度量等。它可以׃h
工进行,充分发挥人的逻辑思维优势Q也可以借助软g工具自动q行?br />
代码查代码检查包括代码走查、桌面检查、代码审查等Q主要检查代码和
设计的一致性, 代码Ҏ准的遵@、可L,代码的逻辑表达的正性,?br />
码结构的合理性等斚wQ可以发现违背程序编写标准的问题Q程序中不安全?br />
不明和模糊的部分,扑ևE序中不可移植部分、违背程序编E风格的问题Q?br />
包括变量查、命名和cd审查、程序逻辑审查、程序语法检查和E序l构
查等内容?#8221;。看了一pd的静态代码扫描或者叫静态代码分析工具后Q?br />
ȝ对工L看法Q静态代码扫描工P和编译器的某些功能其实是很相似的Q?br />
他们也需要词法分析,语法分析Q语意分?..但和~译器不一L是他们可
以自定义各种各样的复杂的规则d代码q行分析?strong>
静态检工?/strong>:
1)PMD是一个代码检查工P它用于分?Java 源代码,扑և潜在?问题Q?
1)潜在的bugQ空的try/catch/finally/switch语句
2)未用的代码Q未使用的局部变量、参数、私有方法等
3)可选的代码QString/StringBuffer的滥?
4)复杂的表辑ּQ不必须的if语句、可以用while循环完成的for循环
5)重复的代码:拯/_脓代码意味着拯/_脓bugs
2)PMD特点Q?
1)与其他分析工具不同的是,PMD通过静态分析获知代码错误。也是_?
不运行JavaE序的情况下报告错误?
2)PMD附带了许多可以直接用的规则Q利用这些规则可以找出Java源程序的?
多问?
3)用户q可以自己定义规则,查Java代码是否W合某些特定的编码规范?
3)同时QPMD已经与JDeveloper、Eclipse、jEdit、JBuilder?a >BlueJ?
CodeGuide、NetBeans、Sun JavaStudio Enterprise/Creator?
IntelliJ IDEA、TextPad、Maven、Ant、Gel、JCreator以及Emacs
集成在一赗?
4)PMD规则是可以定制的: 可用的规则ƈ不仅限于内置规则。您可以d新规则:
可以通过~写 Java 代码q新编?PDMQ或者更单些Q编?XPath ?
辑ּQ它会针Ҏ?Java cȝ抽象语法树进行处理?
5)只用PDM内置规则QPMD 也可以找C代码中的一些真正问题。某些问题可?
很小Q但有些问题则可能很大。PMD 不可能找到每?bugQ你仍然需要做单元?
试和接受试Q在查找已知 bug Ӟ即?PMD 也无法替代一个好的调试器?
但是QPMD 实可以帮助你发现未知的问题?
1)FindBugs是一个开源的静态代码分析工PZLGPL开源协议,无需
q行p对代码进行分析的工具。不注重style及formatQ注重检真?
的bug及潜在的性能问题 Q尤其注意了可能抑制误?false positives)
的发生。以bytecodeQ?.class?.jarQؓ对象q行查。除了单独动作,q可
以用作Eclipse 的plug-inQ以及嵌入Ant作ؓtask之一 q行利用?
2)findbugs自带器的介l? findbugs自带60余种Bad practiceQ?0余种
CorrentnessQ?UInternationalizationQ?2UMalicious code
vulnerabilityQ?7UMultithreaded correntnessQ?3UPerformanceQ?
43UDodgy?
3)Findbugs的一些特点:
1)FindBugs主要着gL代码中的~陷Q这׃其他cM工具有些区别了,
直接操作cLӞclass文gQ而不是源代码?
2)FindBugs可以通过命o行、各U构建工P如Ant、Maven{)、独立的
Swing GUI或是以Eclipse和NetBeans IDE插g的方式来q行?nbsp;
3)FindBugs输出l果既可以是XML的,也可以是文本形式的?
4)开发者可以通过多种方式来用FindBugsQ最常见的是在新~写模块的代?
分析以及对现有代码进行更大范围的分析?nbsp;
5)不注重style及formatQ注重检真正的bug及潜在的性能问题Q?
其注意了尽可能抑制误检?false positives)的发生?nbsp;
4)FindBugs可检的bug pattern举例:
java programing中容易陷入的bug patternQequals() 实现时的一般规U违?
Null pointer的参?QMethod的返回值的check遗漏 Q初始化前field的访问,
Multi-thread的正性, 同期化处理的矛盾Q?无条件的wait()Q?nbsp; Code的脆弱?Q?
可以变更的静态object Q内部数列参照的return{?
1)定义Q?Checkstyle是一ƾ检查JavaE序源代码样式的工具?
2)特点Q?
1)它可以有效的帮助我们视代码以便更好的遵@代码~写标准Q特
别适用于小l开发时彼此间的样式规范和统一?
2)Checkstyle提供了高可配|性,以便适用于各U代码规范,所?
除了使用它提供的几种常见标准之外Q你也可以定制自q标准?
3)Checkstyle提供了支持大多数常见IDE的插Ӟ大部分插件中含?
最新的CheckstyleQ就不用费心再部|一份了?
4)Checkstyle可以查代码的很多斚wQ从传统观点看,它主要是用来
查代码层面的Q自从第三版以后Q它的内部架构作了重大改变,很多
其它意图的检加了进来,现在Checkstyle可以查像c设计的问题Q?
重复代码Q如锁的双重查的bug模式?
3)CheckStyle的主要流E是Q?
1)对Java文gq行词法语法分析Q生成语法树?
2)载入配置文gQcheckstyle-metadata.xml以及自定义的配置文gQ?
register check事g?
3)按照深度优先遍历对语法树q行解析Q按照注册的事gQ在到达某些节点
( AST ) 时进行style查(ASTQA child-Sibling TreeQ是语法
树中的某个节点,其类型在TokenTypescM定义。)
4)我们所说的自定义Style的检查,是在第二步讑֮的?
q里牉|C个叫com.puppycrawl.tools.checkstyle.api.Check 的类Q?
我们通常需要重载其中的两个函数Q?public int[] getDefaultTokens()
?em>public void visitToken(DetailAST ast). q两个函数的含义为,
在遍历语法树的过E中Q每当到?em>getDefaultTokens函数所q回的ASTcdQ?
E序p?em>visitTokenq行具体的检查和分析Q即Q真正的分析查过E是?
visitToken中实现的?
1)定义Q?Hammurapi它是一个开源的代码审查/评审(review)工具。它可以帮助改进
Java代码的质量。它可以Z一套设计规范来分析代码库。当它碰到违反规
范的地方Q会在报告中标识。就像Checkstyle一P它与Ant无缝集成q且
由基于XML配置文g来驱动?
2)特点Q?
1)Hammurapi是用来强制代码设计规范的?
2)Hammurapi是一个遵循设计的工具Q提供了自动而且一致的方式来实现设计规范,
因此使代码评审更加有效而轻松?
3)Hammurapi如何工作Q?
Hammurapiq样的代码分析工具都带有语言分析器。语a分析器是一U输?
语言代码q输出抽象语法树的工兗这个树上的节点代表语言标识。例如,?
虑一下简单的术表达式:3+4. 语言分析器会解析他成Z个如?所C的?
法树。在q个树中Q节?代表操作W标识。节??是操作数标识Hammurapi
使用ANTLRQ另一个语a识别工具Q作a分析器。然而ANTLR API是相当底层的?
为改善可用性,Hammurapi使用另一个APIQ基于ANTLR 的JSELQJava源程?
工程cdQ,来访问抽象语法树?一旦树构徏完成Q一U树遍历法p用来?
问树中每一个节炏V每ơ访问到一个节点,一U回调机ӞVisitor模式Q被用来
提示相应的检查器。在q些回调Ҏ中,查器攉相关的信息来定是否有违?
规范的地方存在。
1)定义:Lint4J是一个针对Java的源代码分析工具Q它可以对Java源码和字?
码进行静态分析,判断其中是否存在死锁、性能问题或者~性问题?
它可以集成到MIDEU或构徏pȝ
2)特点Q?
1)代码语法规?
2)潜在的bug
3)编码模式对代码可读性及大小的媄?
4)是否违反EJB规范
1)定义Q代码质量管理工具Sonar提供了设计与架构度量。Sonar 2.0引入?
针对Java应用的设计分析、架构与面向对象的度量,Sonar 2.1可以
到未用的Ҏ以及对不使用Ҏ的调用。是一个集成了
CheckStyle,PMD,Findbugs的代码校验规?,重复代码发现Q?
代码试覆盖率, 代码注释率,及所有的率变化q踪的完?
代码质量查工兗它包含了代码质量检的七个斚wQ如下图
2)特点Q?
1)代码覆盖Q通过单元试Q将会显C哪行代码被选中?
2)改善~码规则?
3)搜寻~码规则Q按照名字,插gQ激zȝ别和cdq行查询?
4)目搜寻Q按照项目的名字q行查询?
5)Ҏ数据Q比较同一张表中的M量的趋ѝ?
6)单元试
3)Sonar2.1Q?
Sonarq基于Squid引入了一个全新的规则引擎、Sonar解析器既可以?
理源代码Q也可以处理字节码,解析器带有内建的规则Q可以检未使用
的私有与保护Ҏ以及客户端对不徏议用的Ҏ的调用?
Squid通过分析应用源代码、Java API和外部程序库
的字节码来决定哪些方法、类和属性是不徏议用的?
Sonar 2.1?a title="新特? >新特?/a>Q?
1)一个全新的“Libraries”面Q显CZ目中所有的E序库和依赖Q该Ҏ要求?
Maven来构建项目?
一旦在Sonar站点的主上选择了一个项目,该服务就会以
可视化的树Şl构展示出项目依赖。此外,q有一个可选的
动态过滤器Q可以根据名U过滤程序库以便在应用的依赖间导航?
2)用于搜烦E序库用情늚“Dependencies”面。比如说Q可?
搜烦C用了W三Ҏ架如Commons Logging 1.1的所有项目?
3)可以使用各种插g扩展Sonar的功能。现在有一个全新的
“System Info”面昄了系l属性、已装插件和Java虚拟机内?
l计信息。该面q给Z关于Sonar配置和数据库l计的详l信息?
4)一个用于管理已装插件和pȝ信息的管理控制台?
最新版的Sonar些插件引入了一个测试框架和一个客户化的Maven
生命周期理工具。它q带有一个用于集成项目事件的
Web Serviceq在目的size widget中增加了一个新的度量模块?
1)JDepend一个开放源代码的可以用来评价JavaE序质量的优U工具Q?
它遍历Java class的文件目录,以Java包(packageQؓ
单位Qؓ每一个包/c自动生?包的依赖E度Q稳定性,可靠度等
的评h告,Ҏq些报告Q我们可以得到包或类之间的依赖关
p,q分析出包的E_E度Q抽象程度,是否存在循环依耐关pȝ ?
可以ҎJDependl出的报告数据,分析出我们的包是否是
可靠的,E_的,健壮的包Q是否符合面向对象的设计原则?
2)特点Q?
1)评h设计质量
2){依赖?
3)支持q行开发和极限~程
4)独立的发布模?
5)识别package的@环依?
3QDepend生成的Java包的质量评h报告主要包括Q?nbsp;
1)Number of Classes and InterfacesQ实现类与抽象接口的数目
2)Abstractness (A)Q包的抽象度。指一个包内包含的抽象cL接口
占整个包中的cȝ比重?
3)Afferent Couplings (Ca)Q向心耦合。依赖该包(包含的类Q的?
部包Q类Q的数目Qi.e. incoming dependenciesQ,该数D大,
说明该包的担当的职责大Q也pE_?
4)Efferent Couplings (Ce)Q离心耦合。被该包依赖的外部包的数?
Qi.e. outgoing dependenciesQ,该数D大, 说明该包不?
立(因ؓ依赖了别的包Q,也越不稳定?
5)Instability (I)Q衡量一个包的不E_E度。I=Ce/(Ce+Ca)。它的值处?
[0Q?]之间。I=0时说明包是最E_的,反之I=1则说明包极不E_?
6)Distance from the Main Sequence (D)Q?该指标主要用来评价包的抽?
E度与稳定程度的q关系Q它可以用二l直U图 A + I = 1 来表C?
7)Package Dependency CyclesQ包的@环依赖度?
8. IBM Checking Tool for Bugs Errors and Mistakes(UBEAM)
1) 定义Q是 IBM 开发的一个静态分析工P可以用于分析q查扑և C, C++ ?Java
代码中的一些不Ҏ发现的潜在错误,从而达到提高代码质量的目的。同动?
分析工具和其它静态分析工L比,它拥有一些可늚Ҏ?
2)特点Q?
1)对代码进行语法扫描,通过法对代码进行检查分?
2)和一?bug 模式q行比较Q最l标明问题区域,输出分析l果
3)使用了额外的定理证明Qtheorem provingQ技术来判断一个潜在的错误是否
是真正的错误Q从而减ME序员判断错误真伪所需的工作量
9. LDRA Testbed
1)定义QLDRA Testbed为应用Y件的认和验证提供强大的源代码测试和分析功能Q?
是独特的质量控制工具?它有助于提高计算Y件必需的可靠性,健壮性和?
可能的零~陷Q它的用带来时间、成本和效率上真实的节省Q这些都是无法衡
量其价值的。它是强大和完整的集成工具包Q先进的Y件分析技术应用在开发生
命周期的关键阶段?
2)LDRA Testbed提供强大的分析功能,用于两个主要的测试领域,静态分析和动态分析?
1Q静态分析: 分析代码Qƈ且提供对代码l构的理解?
2Q动态分析: 利用源代码的插装版本Q用测试数据执行,在运行时发现软g
~陷
3) 使用LDRA testbed 的好?
软g开发和试q程的成本效率分析工?
单元、集成和pȝ试的理惛_?nbsp;
贯穿于Y件开发的整个生命周期
LDRA Testbed应用于许多不同的领域
q程改进
软g试
软gl护
LDRA Testbed的优点:
改进软g质量
定位软g~陷
强制执行工业标准
减少l护费用40Q以?
减少开发和试成本75Q以?
通过自动化过E提高员工动?
10. Yasca
1) 定义Qyasca是一个开源静态代码分析工h件框? 集成行的多语言静态分析工
具如findbugs/pmd/jlint/rats/cppcheck,׃插g本n多样故可支持java
c++{语a静态分?Yasca是一个用来寻扑֮全漏z,在程序的源代码中代
码质量、性能以及一致性的软g。它集成了其他开源项目,其中包括FindBugs
PMD QJLint Q?Cppcheck Qƈ扫描某些文gcdQ以及自定义扫描书面?
Yasca q是一个命令行工具Q与报告中生成的HTML Q?CSV格式Q?XML的,?
SQLite Q和其他格式?
]]>
]]>
http://jakarta.apache.org/poi/
http://www.onjava.com/pub/a/onjava/2003/01/22/poi.html
http://www.csdn.net/develop/article/15/15311.shtm
http://forum.java.sun.com/thread.jsp?forum=40&thread=382666&tstart=0&trange=15
]]>
1、界面的布局一定要合理Q首先根据应用行业和业务特点Q把整个界面切成几个大块Q每个块的承担的功能或者Q务一定要明确?br />
2、界面的可不配置化,通过界面的可配置化来屏蔽或者启用一些功能。如果你做的产品或系l被用到同行业的许多目现场Q十几个或者几十个目现场Q那么在界面设计时候就一定要考虑到界面的可配|化。作为特定行业品或者系l一般都实现了行业的核心的共性功能,但多个项目现Z提出自己本地化或者个性化的需求,在只有一个开发团队维护一个版本情况下Q尽量在界面设计的时候,实现界面可配|化Q这样A目现场的本地化需求就不会扩散到B目的现场,q样有效的控制的需求扩散。另外,产品在不同的产品现场销售或者客L时候,通过界面的可配置化来屏蔽非本地化的功能,避免无偿系l功能提供给客户?br />
3、界面客户配|化Q在实现的时候一定要考虑到性能问题Q一般ؓ了界面实现可配置Q界面是动态生成的Q如果界面生成的配置参数攑֜数据库,那么在系l参与者很多的情况先,界面生成׃很慢Q可以考虑界面配|参数存攑֜文g中,
4、对于界面配|参数文件存放位|,界面配置参数文g一般不要放在客h上,q样在客L更新的时候,有可能覆盖了以前的界面配|参数文Ӟ 因此Q界面配|参数文件可存放在应用服务器上(例如部vtomcat或者JBOSS服务器上Q,工程人员或者系l维护h员在pȝ升之后Q更新该界面配置参数文gQ?客户端在启动的时候,从应用服务器上统一dQ这样保持了各个客户端的一致性和可配|性?br />
5、界面可配置化的E度问题Q界面上大块要可配置、数据项或者指标项也要实现可配|。因Z同的目现场会对大的功能有不同的要求甚至Ҏ据项也有不同的要求?br />
以上界面设计l验适用于,一个研发团队开发一个品部|到各个客户现场的情c如果是的目或者各个现场本地化要求不多的,则不适用?br />
]]>
http://struts.apache.org/primer.html
]]>
Sun 公司提供的Java API Docs是学习和使用Java语言中最l常使用的参考资料之一。但是长期以来此文只有英文版,对于中国地区的Java开发者来说相当的不便。目前Sun 公司正在l织多方力量此文档译成中文,q于2005q?0?1日在Sun 中国技术社区(http://gceclub.sun.com.cn/Q正式发布第一批中文版Java API文Q包括java.lang和java.utilcdAPI 文的中文版Q。经q将q?0个月的努力,目前我们已经Java SE 5.0的全部API文中文化。开发h员可以通过Sun 中国技术社区的|站在线览相关文档Q也可以全部文下载到本地以方便检索和使用?
J2SE DK & API下蝲
-------------------------
http://java.sun.com/j2se/1.3/download.html
http://java.sun.com/j2se/1.4.2/download.html
http://java.sun.com/javase/downloads/index_jdk5.jsp
http://java.sun.com/javase/downloads/index.jsp
J2EE DK & API下蝲
-------------------------
http://java.sun.com/j2ee/1.3/index.jsp
http://java.sun.com/j2ee/1.3/download.html
http://java.sun.com/j2ee/1.4/index.jsp
http://java.sun.com/j2ee/1.4/download.html
http://java.sun.com/javaee/downloads/index.jsp
JDK1.6API中文版(全)
-------------------------
* HTML 格式(在线英文) http://java.sun.com/javase/6/docs/
* HTML 格式(在线中文) http://download.java.net/jdk/jdk-api-localizations/jdk-api-zh-cn/publish/1.6.0/html/zh_CN/api/index.html
* zip 格式(中文) http://download.java.net/jdk/jdk-api-localizations/jdk-api-zh-cn/publish/1.6.0/html_zh_CN.zip
* CHM 格式(中文) http://download.java.net/jdk/jdk-api-localizations/jdk-api-zh-cn/publish/1.6.0/chm/JDK_API_1_6_zh_CN.CHM
JDK1.5API中文版(全)
-------------------------
* HTML 格式(在线英文) http://java.sun.com/javase/5/docs/
* HTML 格式(在线中文) http://gceclub.sun.com.cn/Java_Docs/html/zh_CN/api/index.html
* zip 格式(中文) http://gceclub.sun.com.cn/Java_Docs/html_zh_CN.zip
* CHM 格式(中文) http://download.java.net/jdk/jdk-api-localizations/jdk-api-zh-cn/builds/JDK_API_1_5_zh_CN.CHM
相关|站
-------------------------
http://java.sun.com
http://gceclub.sun.com.cn/
http://developers.sun.com/downloads/
http://java.sun.com/javaee/downloads/
http://java.sun.com/javase/downloads/
http://www.netbeans.info/downloads/
本文来自CSDN博客Q{载请标明出处Qhttp://blog.csdn.net/zhsp1029/archive/2008/04/05/2253865.aspx