Line contains a tabquite a characterr

新浪广告共享计划>
广告共享计划
Eclipse插件checkstyle安装使用
1.Eclipse中,选择Help-&Software
Updates-&Find and Install
2.选择 Search for new features to install 选择Next
3.选择 New Remote Site
4.输入更新地址
http://eclipse-cs.sourceforge.net/update
5. 安装后重启即可
1.下载eclipse插件
下载后,把里面的两个文件夹plugins和
features下面的文件分别拷贝到eclipse目录下面对应的plugins和features目录
2.如果你就这样直接启动eclipse 可能会出现ClassNotFoundExceptions
等错误,所以必须在启动eclipse的时候加上一个参数 -clean.
这样eclipse就可以更新它当前安装的许多插件信息
比如你得eclipse在d盘 那么就是 d:\eclipse\eclipse.exe
checkStyle 使用
选中工程,右键选择checkstyle-&check code with
checkstyle,检查错误即可
Checkstyle的结果输出
&输出内容意义
1 Type is missing a javadoc commentClass
&缺少类型说明
2“{” should be on the previous line “{” 应该位于前一行
3Methos is missing a javadoc comment方法前面缺少javadoc注释
4Expected @throws tag for “Exception”在注释中希望有@throws的说明
5“.” Is preceeded with whitespace “.” 前面不能有空格
6“.” Is followed by whitespace“.” 后面不能有空格
7“=” is not preceeded with whitespace“=” 前面缺少空格
8“=” is not followed with whitespace“=” 后面缺少空格
9“}” should be on the same line“}” 应该与下条语句位于同一行
10Unused @param tag for “unused”没有参数“unused”,不需注释
11Variable “CA” missing javadoc变量“CA”缺少javadoc注释
12Line longer than 80characters行长度超过80
13Line contains a tab character行含有”tab” 字符
14Redundant “Public” modifier冗余的“public” modifier
15Final modifier out of order with the JSL suggestionFinal
modifier的顺序错误
16Avoid using the “.*” form of importImport格式避免使用“.*”
17Redundant import from the same package从同一个包中Import内容
import-java.util.listImport进来的java.util.list没有被使用
19Duplicate import to line 13重复Import同一个内容
20Import from illegal package从非法包中 Import内容
21“while” construct must use “{}”“while” 语句缺少“{}”
22Variable “sTest1” must be private and have accessor
method变量“sTest1”应该是private的,并且有调用它的方法
23Variable “ABC” must match pattern
“^[a-z][a-zA-Z0-9]*$”变量“ABC”不符合命名规则“^[a-z][a-zA-Z0-9]*$”
24“(” is followed by whitespace“(” 后面不能有空格 25“)” is proceeded
by whitespace“)” 前面不能有空格
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。> 增高Java代码质量的Eclipse插件之Checkstyle的使用详解
增高Java代码质量的Eclipse插件之Checkstyle的使用详解
huanglei814 & &
发布时间: & &
浏览:250 & &
回复:0 & &
悬赏:0.0希赛币
提高Java代码质量的Eclipse插件之Checkstyle的使用详解  CheckStyle是SourceForge下的一个项目,提供了一个帮助JAVA开发人员遵守某些编码规范的工具。它能够自动化代码规范检查过程,从而使得开发人员从这项重要但是枯燥的任务中解脱出来。
  CheckStyle检验的主要内容
·Javadoc注释
·命名约定
·Import语句
·体积大小
·代码问题
·混合检查(包活一些有用的比如非必须的System.out和printstackTrace)
  从上面可以看出,CheckStyle提供了大部分功能都是对于代码规范的检查,而没有提供象PMD和Jalopy那么多的增强代码质量和修改代码的功能。但是,对于团队开发,尤其是强调代码规范的公司来说,它的功能已经足够强大。
  Checkstyle插件可以集成到Eclipse IDE中去,能确保Java代码遵循标准代码样式。
  一、CheckStyle 安装方法
  方法一:
  1.Eclipse中,选择Help-&Software Updates-&Find and Install
  2.选择 Search for new features to install 选择Next
  3.选择 New Remote Site
  4.输入更新地址:安装后重启即可
  方法二:
  1.下载eclipse插件
  下载后,把里面的两个文件夹plugins和 features下面的文件分别拷贝到eclipse目录下面对应的plugins和features目录
  2.如果你就这样直接启动eclipse可能会出现ClassNotFoundExceptions 等错误(一般不会出现此类错误),所以必须在启动eclipse的时候加上一个参数 -clean. 这样eclipse就可以更新它当前安装的许多插件信息
  比如你得eclipse在d盘,那么就是 d:\eclipse\eclipse.exe -clean&
  二、CheckStyle 使用
  安装成功后,选中工程,右键选择checkstyle-&check code with checkstyle,检查错误即可
  三、Checkstyle的结果输出
  检查后会发现代码中出现很多放大镜图标,如下图所示,这就是Checkstyle的输出,具体含义如下:
  1 Type is missing a javadoc commentClass&
缺少类型说明
  2 “{” should be on the previous line&&&
“{” 应该位于前一行。解决方法:把“{”放到上一行去
  3 Methos is missing a javadoc comment
方法前面缺少javadoc注释。解决方法:添加javadoc注释,类似这样:
  * set default mock parameter.(方法说明)
  * @param additionalParameters parameter additional(参数名称)
  * @return data manager(返回值说明)
  * @throws Exception if has error(异常说明)
  4 Expected @throws tag for “Exception”
在注释中希望有@throws的说明
解决方法:在方法前得注释中添加这样一行:* @throws Exception if has error(异常说明)
  5 “.” Is preceeded with whitespace “.”
前面不能有空格。解决方法:把“.”前面的空格去掉
  6 “.” Is followed by whitespace“.”
后面不能有空格。解决方法:把“.”后面的空格去掉
  7 “=” is not preceeded with whitespace
“=” 前面缺少空格。解决方法:在“=”前面加个空格
  8“=” is not followed with whitespace“=”
后面缺少空格。解决方法:在“=”后面加个空格
  9“}” should be on the same line“}”
应该与下条语句位于同一行。解决方法:把“}”放到下一行的前面
  10 Unused @param tag for “unused”
没有参数“unused”,不需注释
解决方法:“* @param unused parameter additional(参数名称)” 把这行unused参数的注释去掉“
  11 Variable “CA” missing javadoc
变量“CA”缺少javadoc注释
解决方法:在“CA“变量前添加javadoc注释:/** CA. */(注意:一定记得加上“.”)
  12 Line longer than 80characters
行长度超过80& 。解决方法:把它分成多行写。必要时候,可以ctrl+shift+f
  13 Line contains a tab character
行含有”tab” 字符。
  14 Redundant “Public” modifier
冗余的“public” 修饰符 。解决方法:去掉“public”修饰符
  15 Final modifier out of order with the JSL suggestion
Final modifier的顺序错误
  16 Avoid using the “.*” form of import
import格式避免使用“.*”。解决方法:可以先不添加import,再需要用到时直接“ctrl + o”导入即可。
  17 Redundant import from the same package
从同一个包中Import内容,多余,删掉即可
  18 Unused import-java.util.list
Import进来的java.util.list没有被使用。解决方法:去掉导入的多余的类
  19 Duplicate import to line 13
重复Import同一个内容。解决方法:去掉导入的多余的类
  20 Import from illegal package
从非法包中 Import内容
  21 “while” construct must use “{}”&
“while” 语句缺少“{}”
  22 Variable “sTest1” must be private and have accessor method
变量“sTest1”应该是private的,并且有调用它的方法
  23 Variable “ABC” must match pattern “^[a-z][a-zA-Z0-9]*$”
变量“ABC”不符合命名规则“^[a-z][a-zA-Z0-9]*$”,解决方法:把这个命名改成符合规则的命名 “aBC”
  24 “(” is followed by whitespace
“(” 后面不能有空格 25“)”is proceeded by whitespace“)” 前面不能有空格。解决方法:把前面或者后面的空格去掉
  25 First sentence should end with a period
解决方法:你的注释的第一行文字结束应该加上一个&.&。
  26 Redundant throws: 'NameNotFoundException' is subclass of 'NamingException'.
'NameNotFoundException '是'NamingException'的子类重复抛出异常。
解决方法:如果抛出两个异常,一个异常类是另一个的子类,那么只需要写父类
去掉NameNotFoundException异常,对应的javadoc注释异常注释说明也需要去掉
  27 Parameter docType should be final.
参数docType应该为final类型, 解决方法:在参数docType前面加个final
  28 Line has trailing spaces.
多余的空行 ,解决方法:去掉这行空行
  29 Must have at least one statement.&
至少一个声明
  解决方法:} catch (NumberFormatException nfe) {
  LOG.error(&Auto Renews the agreement failed&, nfe);//异常捕捉里面不能为空,在异常里面加一句话。如打印等等
  30 '&' is not followed by whitespace.并且又有 '(' is preceded with whitespace.
定义集合和枚举的时候的时候,最后一个“&”后面要有空格,“(”前面不容许有空格。解决方法:去掉泛型
  31 Got an exception - java.lang.RuntimeException: Unable to get class information for @throws tag 'SystemException'.
原因:不合理的throws。
  解决方法:要确保某些类型,如某些类、接口不被throws。把声明的异常去掉。在实现类中抛出异常
  网上参考解决方法:
  1、这是CheckStyle报的错。通常需要Refreh, clean/build这个Project. 如果不行,可以尝试clean all projects, restart Eclipse.
  2、因为编译好的类没有在checkstyle的classpath中.所以, 只要将编译好的class配置到在&checkstyle/&的classpath中就没有这个问题了.另外, 还发现checkstyle的line length好像也有点问题, 明明没有超过120个字符, 却还是报错.无奈, 我把Eclipse中java & code style & formatter中的Maximum line with改成了100, 然后format一下,
基本就没有问题了
  32 File does not end with a newline.
解决方法:删掉报错的类,新建一个同名的类,把代码全部复制过去
  33 Utility classes should not have a public or default constructor.
接口中的内部类中不应该有公共的或者默认的构造方法
  解决方法:在内部类中,定义一个私有的构造方法,然后内部类声明为final类型。如果前面有static,那么final还必须放在static之后
  34 Variable 'functionCode' must be private and have accessor methods.
变量要改成private然后提供访问的方法
  解决方法:给这些变量的修饰符改成private,然后提供set,get方法,并加上对应的方法javadoc注释、参数注释。并在返回值和参数类型前添加final。并把调用了这个变量的地方改成通过方法访问
  35&& 'X' hides a field.
  public class Foo
  public Foo(int bar)
&&&&&&& this.bar =
  public final int getBar()
  全局和局部public Foo(int bar)的bar变量名字重复。
解决方法:把方法里面的参数名称改变下就可以了public Foo(int newBar)
&&&&&&& this.bar = newB
  36 Got an exception - Unexpected character 0xfffd in identifier
  这是因为CheckStyle不能识别制定的编码格式。
  网上参考解决方法:
  1、Eclipse中可以配置,在Other--&checker中可以指定
  2、可以修改checkstyle配置文件:
  &module name=&Checker&&
  &property name=&severity& value=&warning&/&
  &property name=&charset& value=&UTF-8&/&
  &module name=&TreeWalker&&
  如果是UTF-8的话,就添加加粗斜体的那条语句,就可以了。
  37& Got an exception - java.lang.RuntimeException: Unable to get class information for @throws tag *whatever*.
网上参考解决方法:选中CheckSytle的JavaDoc --& Method JavaDoc --& logLoadErrors。如果是CheckStyle自己加载时出错的,打个Log就可以了,不要整出Errors吓人。
还有一处也可能包出同样的错误。Coding Problems --& Redundant Throws --& logLoadErrors选中即可
  38 Expected @param tag for 'dataManager'.
缺少dataManager参数的注释&& 解决方法:在注释中添加@param dataManager DataManager
  39 Parameter X should be final.
public class Foo
  public Foo(int bar)
&&&&&&& this.bar =
  public final int getBar()
  解释:public Foo(int bar)的局部变量,被认为是不可改变的,检查需要加上final关键字定义public Foo(final int bar)此错误,可以忽略不检查。
  40 Redundant 'X' modifier.
  public interface CacheHRTreeService extends Manager {
& * Organization Tree
& * @param orgDto
& * @return
& * @throws Exception
public void setOrganization(OrganizationDTO orgDto) throws E
& * Organization Tree
& * @return
& * @throws Exception
public OrganizationDTO getOrganization() throws E
  解释:多余的字段。public OrganizationDTO getOrganization() throws E此时public为多余的字段,因为interface定义的时候,就是public的。
  需要检查。
  41 Class X should be declared as final.
  解释:对于单例设计模式,要求返回唯一的类对象。但是HRFactory和ContextFactory为优化的两个类,不需求检查。
其他的单例类,依然需要进行检查。
  42 Method 'addChildrenId' is not designed for extension - needs to be abstract, final or empty.
  解释:通过父类继承的,此类有点特殊可以忽略此类。
  43 Variable 'id' must be private and have accessor methods.
  解释:BaseHRDTO类,为父类,属性给子类继承,比较特殊。但是其他的类,声名需要加上范围'private'关键字。需要检查。
  44 Array brackets at illegal position.
  解释:代码写法,习惯不一样。需要检查,仅仅提示
本问题标题:
本问题地址:
温馨提示:本问答中心的任何言论仅代表发言者个人的观点,与希赛网立场无关。请对您的言论负责,遵守中华人民共和国有关法律、法规。如果您的言论违反希赛网问答中心的规则,将会被删除。
暂无合适的专家
&&&&&&&&&&&&&&&
希赛网 版权所有 & &&&&增值电信业务经营许可证湘B2-CheckStyle 跟findbugs 验证代码质量工具_Visual Studio 编程技能_企业中上层谈心声:尽责是最好的学习__脚本百事通
稍等,加载中……
^_^请注意,有可能下面的2篇文章才是您想要的内容:
CheckStyle 跟findbugs 验证代码质量工具
Visual Studio 编程技能
企业中上层谈心声:尽责是最好的学习
CheckStyle 跟findbugs 验证代码质量工具
CheckStyle 和findbugs 验证代码质量工具
CheckStyle是什么?  CheckStyle是SourceForge下的一个项目,提供了一个帮助JAVA开发人员遵守某些编码规范的工具。它能够自动化代码规范检查过程,从而使得开发人员从这项重要,但是枯燥的任务中解脱出来[1]。  2.2. CheckStyle检验的主要内容  CheckStyle默认提供一下主要检查内容:  ·Javadoc注释  ·命名约定  ·标题  ·Import语句  ·体积大小  ·空白  ·修饰符  ·块  ·代码问题  ·类设计  ·混合检查(包活一些有用的比如非必须的System.out和printstackTrace)  从上面可以看出,CheckStyle提供了大部分功能都是对于代码规范的检查,而没有提供象PMD和Jalopy那么多的增强代码质量和修改代码的功能。但是,对于团队开发,尤其是强调代码规范的公司来说,它的功能已经足够强大。  2.3. CheckStyle的主要运行方式  目前,CheckStyle的版本是3.0,与以前的版本不同,它的配置文件是基于XML而非Properties文件。  它的3.0版本提供了两种运行的方式:  ·命令行工具  ·ANT任务  同时,CheckStyle目前有很多针对流行IDE的插件,例如Eclipse、IntelliJ IDEA、JBuilder等。但是,大部分都是基于2.4的版本,新版本的特性不支持,同时配置也较为复杂。  因为一般情况下,如果与开发过程与环境集成起来,编码规范的检查会更加有效,因此,作为ANT任务的运行方式使用的更加普遍。  在ANT的build.xml文件中添加CheckStyle任务的步骤如下:  1. 将checkstyle-all-3.1.jar拷贝到项目的LIB目录;  2. 建立配置文件;  3. 声明CheckStyle任务:<taskdef resource="checkstyletask.properties" classpath="${lib}/checkstyle-all-3.1.jar"/>  4. 建立CheckStyle任务:<target name="checkstyle"><checkstyle c><fileset dir="${src}" includes=" **/*.java" /></checkstyle></target>  2.4. 定制CheckStyle  CheckStyle的执行基于XML配置文件,它的主要组成部分是:  ·Module:整个配置文件就是一棵Module树。根节点是Checker Module。  ·Properties:它来决定一个Module如何进行检查。每个Module都有一个默认值,如果不满足开发需求,可以设定其它的值。  下面是一个示例:<module name="MethodLength"><property name="max" value="60"/></module>  它表示,如果方法或者构造函数的长度超过60行,CheckStyle就会报错。而默认值是150行。  以下是一段CheckStyle对于Maven项目源文件的检查报告:Method 'createExpression' is not designed for extension - needs to be abstract, final or empty. 91Unable to get class information for JellyException. 91Line has trailing spaces. 93Line has trailing spaces. 104Method 'evaluate' is not designed for extension - needs to be abstract, final or empty. 113Parameter context should be final. 113Line has trailing spaces. 130Method 'getExpressionText' is not designed for extension - needs to be abstract, final or empty. 131Line has trailing spaces. 134Line has trailing spaces. 135Method 'toString' is not designed for extension - needs to be abstract, final or empty. 137Method 'isSupportAntVariables' is not designed for extension - needs to be abstract, final or empty. 156Method 'setSupportAntVariables' is not designed for extension - needs to be abstract, final or empty. 168Parameter supportAntVariables should be final. 168'supportAntVariables' hides a field. 168Method 'isValidAntVariableName' is not designed for extension - needs to be abstract, final or empty. 183Parameter text should be final. 183  一般情况下,与IDE集成在一起使用的时候,点击出错的条目,可以跳转到相应的代码。本贴来自ZDNetChina中文社区.cn,本贴地址:.cn/viewthread.php?tid=178617三、CheckStyle的最佳实践  3.1. Sun’s Code Conventions的修改  在CheckStyle的最新发布版本中,有一个对于Sun的Java编码规范的配置文件信息。但是,其中有很多条目并不一定符合项目开发的需要。就算是对于很多优秀的开源项目,按照这个规范来进行检查,也会出现成千上万的错误。  下面提出的一些修改意见,是从实际项目执行过程中总结出来的,可以作为大家的参考。我们以CheckStyle3.0配置文件的顺序来介绍:  1. 去除对于每个包都有一个package.html文件的限制;<!--<module name="PackageHtml"/>-->    2. 修改对于JavaDoc Comments的限定:对于很多使用Code Generator的项目来说,需要将手写代码与生成代码、单元测试代码的检查分开进行;  3. 修改对于体积大小的限制:目前,很多显示器都是17寸,而且打印方面的限制也比以前有所改善,同时,由于代码中Factory等模式的运用,以及有意义的方法名称等约定,默认每行代码的长度(80)是远远不能满足要求;对于方法长度等等,也应该根据项目情况自行决定:<module name="FileLength"/><module name="LineLength"><property name="max" value="120"/></module><module name="MethodLength"><property name="max" value="300"/></module><module name="ParameterNumber"/>  4. 修改对于Throws的的限制:允许Throws Unchecked Exception以及Throws Subclass Of Another Declared Exception。<module name="RedundantThrows"><property name="allowUnchecked" value="true"/><property name="allowSubclasses" value="true"/></module>  5. 修改成员变量的可视性:一般情况下,应该允许Protected Members以及Package Visible Members。<module name="VisibilityModifier"><property name="protectedAllowed" value="true"/><property name="packageAllowed" value="true"/></module>  3.2. CheckStyle应用的最佳实践  采用CheckStyle以后,编码规范的检查就变得及其简单,可以作为一项切实可行的实践加以执行。  一般情况下,在项目小组中引入CheckStyle可以按照下面的步骤进行:  1. 强调Code Review与Code Conventions的重要作用;  2. 介绍CheckStyle;  3. 初步应用CheckStyle:参照CheckStyle附带的配置文件,酌情加以剪裁,在项目的Ant配置文件中,添加CheckStyle任务,可以单独执行;  4. 修改、定型CheckStyle的配置文件:按照基本配置文件执行一段时间(2~3周),听取开发人员的反馈意见,修改配置信息;  5. 作为开发过程的日常实践,强制执行CheckStyle:稳定CheckStyle的配置信息,同时将CheckStyle任务作为Build的依赖任务或者配置源码控制系统(目前,CheckStyle可以与CVS有效集成),使得代码在加入系统之前必须通过检查。  同时需要指出的是,CheckStyle的有效执行需要依赖两个条件:  ·Ant的广泛应用:CheckStyle基于Ant执行的方式比较容易,而且可以在项目内容形成一致的执行环境。同时,也比较容易与其它任务,例如Build等发生关联。  ·IDE Format Code的强大功能:由于CheckStyle本身并没有提供很强大的Code Format等功能,因此,需要借助IDE的帮助,从而使得在发生错误的时候,可以很容易的进行修复。目前,主流的Java IDE都提供了这方面的功能,IDEA在这方面尤其突出。它提供的统一、可定义的Code Format Template(项目小组内部可以使用统一模板)以及方便的快捷键功能(Ctrl+Alt+T:Format Code, Ctrl+Alt+O:Optimize Import等)。  四、结论  利用CheckStyle可以方便的对于编码的Code Conventions进行检查,同时,也有效地减少了Code Review的工作,使得Reviw人员的精力更多的集中到逻辑和性能检查。Checkstyle的结果输出序号
输出内容意义1 Type is missing a javadoc commentClass
缺少类型说明2“{” should be on the previous line “{” 应该位于前一行3Methos is missing a javadoc comment方法前面缺少javadoc注释4Expected @throws tag for “Exception”在注释中希望有@throws的说明5“.” Is preceeded with whitespace “.” 前面不能有空格6“.” Is followed by whitespace“.” 后面不能有空格7“=” is not preceeded with whitespace“=” 前面缺少空格8“=” is not followed with whitespace“=” 后面缺少空格9“}” should be on the same line“}” 应该与下条语句位于同一行10Unused @param tag for “unused”没有参数“unused”,不需注释11Variable “CA” missing javadoc变量“CA”缺少javadoc注释12Line longer than 80characters行长度超过8013Line contains a tab character行含有”tab” 字符14Redundant “Public” modifier冗余的“public” modifier15Final modifier out of order with the JSL suggestionFinal modifier的顺序错误16Avoid using the “.*” form of importImport格式避免使用“.*”17Redundant import from the same package从同一个包中Import内容18Unused import-java.util.listImport进来的java.util.list没有被使用19Duplicate import to line 13重复Import同一个内容20Import from illegal package从非法包中 Import内容21“while” construct must use “{}”“while” 语句缺少“{}”22Variable “sTest1” must be private and have accessor method变量“sTest1”应该是private的,并且有调用它的方法23Variable “ABC” must match pattern “^[a-z][a-zA-Z0-9]*$”变量“ABC”不符合命名规则“^[a-z][a-zA-Z0-9]*$”24“(” is followed by whitespace“(” 后面不能有空格 25“)” is proceeded by whitespace“)” 前面不能有空格不太明白的错误解答1.
'X' hides a field.public class Foo{
public Foo(int bar)
this.bar =
public final int getBar()
}}解释:全局和局部public Foo(int bar)的bar变量名字重复。此错误,可以忽略不检查。2. Parameter X should be final.public class Foo{
public Foo(int bar)
this.bar =
public final int getBar()
}}解释:public Foo(int bar)的局部变量,被认为是不可改变的,检查需要加上final关键字定义public Foo(final int bar)此错误,可以忽略不检查。3. Redundant 'X' modifier.public interface CacheHRTreeService extends Manager { /**
* Organization Tree
* @param orgDto
* @throws Exception
*/ public void setOrganization(OrganizationDTO orgDto) throws E /**
* Organization Tree
* @throws Exception
*/ public OrganizationDTO getOrganization() throws E......}解释:多余的字段。public OrganizationDTO getOrganization() throws E此时public为多余的字段,因为interface定义的时候,就是public的。需要检查。4. - Class X should be declared as final.解释:对于单例设计模式,要求返回唯一的类对象。但是HRFactory和ContextFactory为优化的两个类,不需求检查。其他的单例类,依然需要进行检查。5.
Utility classes should not have a public or default constructor.解释:工具类不必提供默认的构造方法。需要检查,仅仅为提示。6. File does not end with a newline.解释:虽然JAVA程序不要求结尾要用新行,但是习惯上应该要空一行。需要检查,仅仅为提示。7. - Method 'addChildrenId' is not designed for extension - needs to be
abstract, final or empty.解释:通过父类继承的,此类有点特殊可以忽略此类。8. Variable 'id' must be private and have accessor methods.解释:BaseHRDTO类,为父类,属性给子类继承,比较特殊。但是其他的类,声名需要加上范围'private'关键字需要检查。9. -Array brackets at illegal position.解释:代码写法,习惯不一样。需要检查,仅仅提示。FindBugs(http://findbugs.sourceforge.net/)版本1.1.1简介:findbugs是一个在java程序中查找bug的程序,它查找bug模式的实例,也就是可能出错的代码实例,注意findbugs是检查java字节码,也就是*.class文件。自带检测器的介绍:findbugs自带60余种Bad practice,80余种Correntness,1种Internationalization,
12种Malicious code vulnerability,27种Multithreaded correntness,23种Performance,43种Dodgy。Bad practice坏的实践一些不好的实践,下面列举几个:HE:类定义了equals(),却没有hashCode();或类定义了equals(),却使用Object. hashCode();或类定义了hashCode(),却没有equals();或类定义了hashCode(),却使用Object.equals();类继承了equals(),却使用Object.hashCode()。SQL:Statement的execute方法调用了非常量的字符串;或Prepared Statement是由一个非常量的字符串产生。DE:方法终止或不处理异常,一般情况下,异常应该被处理或报告,或被方法抛出。Correctness一般的正确性问题可能导致错误的代码,下面列举几个:NP:空指针被引用;在方法的异常路径里,空指针被引用;方法没有检查参数是否null;null值产生并被引用;null值产生并在方法的异常路径被引用;传给方法一个声明为@NonNull的null参数;方法的返回值声明为@NonNull实际是null。Nm:类定义了hashcode()方法,但实际上并未覆盖父类Object的hashCode();类定义了tostring()方法,但实际上并未覆盖父类Object的toString();很明显的方法和构造器混淆;方法名容易混淆。SQL:方法尝试访问一个Prepared Statement的0索引;方法尝试访问一个ResultSet的0索引。UwF:所有的write都把属性置成null,这样所有的读取都是null,这样这个属性是否有必要存在;或属性从没有被write。Internationalization国际化当对字符串使用upper或lowercase方法,如果是国际的字符串,可能会不恰当的转换。
Malicious code vulnerability可能受到的恶意攻击
如果代码公开,可能受到恶意攻击的代码,下面列举几个:
FI:一个类的finalize()应该是protected,而不是public的。
MS:属性是可变的数组;属性是可变的Hashtable;属性应该是package protected的。
Multithreaded correctness多线程的正确性
多线程编程时,可能导致错误的代码,下面列举几个:
ESync:空的同步块,很难被正确使用。
MWN:错误使用notify(),可能导致IllegalMonitorStateException异常;或错误的使用wait()。No:使用notify()而不是notifyAll(),只是唤醒一个线程而不是所有等待的线程。SC:构造器调用了Thread.start(),当该类被继承可能会导致错误。
Performance性能问题
可能性能不佳的代码,下面列举几个:
DM:方法调用了低效的Boolean的构造器,而应该用Boolean.valueOf(…);用类似Integer.toString(1)代替new Integer(1).toString();方法调用了低效的float的构造器,应该用静态的valueOf方法。SIC:如果一个内部类想在更广泛的地方被引用,它应该声明为static。SS:如果一个实例属性不被读取,考虑声明为static。UrF:如果一个属性从没有被read,考虑从类中去掉。UuF:如果一个属性从没有被使用,考虑从类中去掉。
Dodgy危险的
具有潜在危险的代码,可能运行期产生错误,下面列举几个:
BC:对抽象集合如List、Set的造型;对具体集合如ArrayList、HashSet的造型;未检查或无法保证的造型;CI:类声明为final但声明了protected的属性。DLS:对一个本地变量赋值,但却没有读取该本地变量;本地变量赋值成null,却没有读取该本地变量。ICAST:整型数字相乘结果转化为长整型数字,应该将整型先转化为长整型数字再相乘。INT:没必要的整型数字比较,如X &= Integer.MAX_VALUE。NP:对readline()的直接引用,而没有判断是否null;对方法调用的直接引用,而方法可能返回null。REC:直接捕获Exception,而实际上可能时RuntimeException。ST:从实例方法里直接修改类变量,即static属性。自定义检测器:findbugs提供了强大的自定义检测器的功能,首先我们应该清楚需要检查的案例,findbugs的官方文档里并没有详细的介绍如何自定义,那我们只能直接阅读它的源码了,着重阅读BytecodeScanningDetector和ByteCodePatternDetector的子类型,它们可以检测一般类型的问题。Findbugs利用了Byte Code Engineering Library(即BCEL,Apache上的一个开源项目),以实现其检测器,所有的字节码扫描都是基于visitor模式。我们可以参照findbugs自带的检测器的类的源码,去编写一个自定义的检测器代码,编写完后编译成类文件,同时我们还需要提供两个XML文件,Findbugs.xml和message.xml,在Findbugs.xml里指定检测器和实现类,检测器的缩写、类型如快速或慢速,而message文件里则包括了该检测器的描述信息,可能是html的,然后将源文件、类文件和上面两个XML文件打包成jar文件,放在findbugs home的plugin文件夹下,这样我们就可以使用自定义检查器了。参考文档:FindBugs官方文档(http://findbugs.sourceforge.net/)FindBugs,第1部分:提高代码质量http://www-/developerworks/cn/java/j-findbug1/FindBugs,第2部分:编写自定义检测器http://www-/developerworks/cn/java/j-findbug2/代码静态分析(/foxgem/archive//347444.aspx)Findbugs使用说明&br&目的&br& Findbugs是一个代码质量工具;我们用它来检查源代码中出现的伪问题,以期尽可能在项目的初始阶段将代码问题解决。本文主要介绍Findbugs的eclipse插件的应用。 对应的版本是:Findbugs (0.0.16);eclipse (3.1)&br&&br&概要&br& FindBugs 是一个静态分析工具,它检查类或者 JAR 文件,将字节码与一组缺陷模式进行对比以发现可能的问题。我们利用它在eclipse中的插件来对它所过滤的工程的源代码进行检查。希望在程序员编写代码的过程中,将代码中的缺陷指出来,让编码人员在开发中将它们纠正。达到尽可能在项目编码中将问题解决得目的。而不是在编码结束的时候才用该软件对代码检查,修改。&br&Eclipse插件开发之FindBugs插件:/480/.shtml
Visual Studio 编程技能
Visual Studio 编程技巧
技巧 0 删除文件中的当前行: Home + Shife-End + Delete
技巧 1.1 避免意外复制一个空白行
工具-&选项-&文本编辑器-&所有语言-&常规: 没有选定内容时对空行应用剪切或复制命令
技巧 1.2 通过剪贴板来循环粘贴不同内容
Ctrl-Shift-V: 可以在过去剪切或复制到剪贴板上的20条内容间进行循环粘贴
技巧 1.3 使用 Ctrl+Enter 组合键在上方插入一行, Ctrl+Shift+Enter 组合键在下方插入一行
技巧 1.4 使用 Ctrl+W 组合键选择当前单词
技巧 1.5 使用 Ctrl+Delete 组合键删除下一个单词, Ctrl+Backspace 组合键删除前一个单词
技巧 1.6 使用 Ctrl+L 组合键剪切当前行, Ctrl+Shift+L 组合键删除当前行
如果当前行上没有选择任何内容, shift+delete键将剪切当前行. 如果选择了文本, shift+delete则只会剪切选中的文本
技巧 1.7 删除一行开头的水平空白
编辑-&高级: "删除水平空白"命令. 快捷方式 Ctrl+K Ctrl+\. 这组合命令在用于选择多行并删除每一行开头的空白
技巧 1.8 将代码或文本拖动到新位置
按下鼠标左键, 选择要剪切或者复制的代码块, 而后拖到目的位置, 如果按下Ctrl则实现复制, 不按下Ctrl则实现剪切. 这个操作还可在文件间进行
技巧 1.9 右键拖动代码可将代码移动或复制到某处
选择一段代码块, 点击右键不放, 拖到目的位置后放开右键, 则会弹出菜单选择复制还是剪贴.
技巧 1.10 在编辑器中调换字符, 单词和行的顺序
Ctrl+T 调换字符(和之前的字符), Ctrl+Shift+T 调换单词(和之后的单词), Alt+Shift+T 调换行(和之后的行调换)
技巧 1.11 在编辑器中使用键盘快捷键来改变单词的大小写
Ctrl+Shift+U 变为大写, Ctrl+U 变为小写
技巧 1.12 使用标准工具栏上的撤销堆栈
"撤销"或"重复"按钮的下拉内容可以一次多个命令
技巧 1.13 使用鼠标滚轮在各个方向上滚动
技巧 1.14 在不滚动的情况下跳到编辑器中当前视图的顶部或底部
Ctrl+PgUp 光标移动到当前编辑器视图的顶部, Ctrl+PgDn 光标移到当前编辑器试图的底部, Ctrl+Shift+PgUp 选择当前光标位置与视图顶部之间的所有文本, 同理 Ctrl+Shift+PgDn
技巧 1.15 隐藏编辑器中的垂直和水平滚动条
工具-&选项-&文本编辑器-&常规-&显示 取消"垂直滚动条"和"水平滚动条"选项
技巧 1.16 通过返回标记在编辑器中进行向前和向后定位
标准工具栏中可以找到"向前定位"(Ctrl+Shift+减号)和"向后定位"(Ctrl+减号)图标
做标记的地方
增量式搜索(包括反向)
"转到行"操作, 例如 Ctrl+G键
删除此操作
技巧 1.17 使用撤销操作将光标跳回到上一个插入点
工具 -& 选项 -& 文本编辑器 -& 常规 -& 在撤销列表中包含插入点的移动
技巧 1.18 通过键盘访问导航栏
Ctrl+F2(似乎无用, 可能是Visual Assist的缘故)
工具 -& 选项 -& 文本编辑器 -& 所有语言 -& 常规: 不选择(或选择)"导航栏"选项
技巧 1.19 拆分窗口和新建窗口
菜单 窗口 -& 拆分
水平滑动条的拆分控件
技巧 1.20 F6键在拆分的编辑器视图之间跳转
技巧 1.21 在编辑器内启用 URL 定位
工具 -& 选项 -& 文本编辑器 -& 所有语言 -& 常规 -& 启用单击UML定位
技巧 1.22 使用 Ctrl+G 时不弹出 "转到行" 对话框
Ctrl+D; 输入行号; Ctrl+G
技巧 1.23 启用自动换行
工具 -& 选项 -& 文本编辑器 -& 所有语言 -& 常规 -& 自动换行 -& 显示可视的自动换行标志符号
工具 -& 选项 -& 环境 -& 字体颜色 -& 可见空白: 为自动换行自定义虚字的项前景色
技巧 1.25 增大编辑器中工具提示的字体大小
工具 -& 选项 -& 环境 -& 字体和颜色 -& 显示其设置 -& 编辑器工具提示
技巧 1.26 将宏绑定到键盘快捷键(或者说, 如何快速增大或减小文本编辑器的字体大小)
工具 -& 选项 -& 环境 -& 键盘: 在"显示命令包含" 编辑框中输入宏
技巧 1.29 改变书签的颜色
技巧 1.31 在编辑器中显示行号
工具 -& 选项 -& 文本编辑器 -& 所有语言 -& 常规 -& 行号
技巧 1.32 查看可见空白
编辑 -& 高级 -& 查看空白
Ctrl-R, Ctrl-W
技巧 1.36 隐藏状态栏
工具 -& 选项 -& 环境 -& 常规 -& 显示状态栏
双击显示行, 列和字符的状态栏部分, 可以弹出"转到行"对话框
技巧 2.1 使用编辑器中的块/列选择
流选择: shift+方向键 快选择: Shift+Alt+方向键
技巧 2.2 按 Esc 键时跳转到所选文本的开始处
工具 -& 选项 -& 文本编辑器 -& 常规 -& 按 Esc 键后转到选择定位点
技巧 2.3 使用 Ctrl+= 键选择从当前光标位置到最后一个返回标记之间的所有代码
技巧 2.4 在编辑器中交换当前的定位点位置
Ctlr+K, Ctrl+A --- 选择块的光标位置变化
技巧 2.5 使用键盘快捷键快速注释和取消注释代码
Ctrl+K, Ctrl+C 注释代码, Ctrl+K, Ctrl+U 取消注释代码
技巧 2.6 在编辑器中显示导引线已帮助你设置代码格式
H_C_USER\Software\Microsoft\VisualStudio\Text Editor
创建 Guides 字符串值 RG_SZ 键, 键值的格式是 RGB(x,y,z)n1,...,n13, x,y,z是色值, n是列数, 最多13条导线, 例如 RGB(255,0,0)5,20
技巧 2.12 折叠和展开代码
切换大纲显示展开 --- Ctrl+M, Ctrl+M
切换所有大纲显示 --- Ctrl+M, Ctrl+I
停止大纲显示 --- Ctrl+M, Ctrl+P
启动自动大纲显示
折叠到定义 --- Ctrl+M, Ctrl+O
技巧 2.13 剪切并粘贴一个折叠的代码块
剪贴一个函数, 可以将函数折叠起来, 而后按 Ctrl+L 键剪切当前行
技巧 2.14 在不关闭大纲显示的情况下隐藏大纲显示(选定内容的边距)
工具 -& 选项 -& 文本编辑器 -& 常规 -& 选定内容的边距
技巧 2.17 自动突出分割符
工具 -& 选项 -& 文本编辑器 -& 常规 -& 自动突出显示分隔符
工具 -& 选项 -& 环境 -& 字体和颜色 -& 大括号匹配(突出显示) 修改颜色
工具 -& 选项 -& 环境 -& 字体和颜色 -& 括号匹配(方括号) 修改颜色
技巧 2.20 在意外关机时 Visual Studio 自动恢复文件
工具 -& 选项 -& 环境 -& 自动回复
技巧 2.21 针对指定文件扩展名使用特定语言的语法突出显示功能
工具 -& 选项 -& 文本编辑器 -& 文件扩展名
技巧 2.22 打开文件时重用同一个编辑器窗口
工具 -& 选项 -& 环境 -& 文档 -& 重用当前文档窗口(如果已保存)
技巧 2.23 在编辑器中自动刷新已打开的文档
工具 -& 选项 -& 环境 -& 文档 -& 当文件在该环境外发生更改时进行检测, 下面的另一个选项"自动加载更改(如果已保存)"
技巧 2.24 在 Visual Studio 中编辑只读文件
工具 -& 选项 -& 环境 -& 文档 -& 允许编辑只读文件, 但在试图保存时发出警告
技巧 2.26 自定义"最近的文件"列表中显示的项数(以及在何处找到这些列表)
工具 -& 选项 -& 环境 -& 常规 -& 最近的文件
技巧 2.27 设置书签并在多个书签之间导航
Ctrl+K, Ctrl+K 设置一个书签
Ctrl+K, Ctrl+N 下一个书签
Ctrl+K, Ctrl+P 前一个书签
Ctrl+K, Ctrl+L 删除所有书签
技巧 2.28 在"书签"窗口中, 如何在书签文件夹之间导航
Ctrl+Shift+K, Ctrl+Shift+P 移动到文件夹内的前一书签
Ctrl+Shift+K, Ctrl+Shift+N 移动到文件夹内的下一书签
技巧 2.29 为快速查找的所有结果创建书签
查找对话框有"全部创建书签"按钮
技巧 2.30 使用 Ctrl+J 键调用语句完成
技巧 2.31 显示函数的参数信息 Ctrl+Shift+空格键
技巧 2.32 显示函数的快速信息 Ctrl+K, Ctrl+I
技巧 2.37 默认关闭 IntelliSense
工具 -& 选项 -& 文本编辑器 -& 所有语言 -& 常规 -& 自动列出成员/参数信息
技巧 2.41 浏览代码段和添加新代码段
工具 -& 代码管理器, Ctrl+K, Ctrl+B 组合键
技巧 3.1 体验渐进式搜索的强大功能
按 Ctrl+I 键
开始输入要搜索的文本
再次按 Ctrl+I, 跳到搜索字符串中出现的下一个位置
按 Ctrl+Shift+I, 进行反向搜索
技巧 3.2 在不打开"查找和替换"窗口的情况下, 使用 Ctrl+F3 键搜索当前选中的单词(光标放在要查找的单词之上)
技巧 3.3 不自动搜索当前选中的单词
工具 -& 选项 -& 环境 -& 查找和替换 -&自动用编辑器中的文本填充"查找内容"
现在按 Ctrl+F(快速查找)或者Ctrl+Shift+F(在文件中查找)或Ctrl+H(快速替换)时, "查找内容"组合框将不会自动显示当前单词或选定的文本
技巧 3.4 使用 F3 键盘搜索上次的搜索内容, Shift+F3键则是搜索前一个实例, 只能用于"快速查找"和"在文件中查找"
技巧 3.5 使用 Ctrl+F键在当前文档中进行快速查找
技巧 3.6 使用"查找"组合框在当前文档中进行快速查找
Ctrl+D 定位到"查找"组合框, 输入查找字符串, Enter 向前搜索, Shift+Enter 向后搜索
技巧 3.8 使用 Ctrl+H 键打开"快速替换"窗口
技巧 3.9 在首次搜索到匹配项之后隐藏"快速查找/快速替换"窗口
工具 -& 选项 -& 环境 -& 查找和替换 -& 找到"快速查找"或"快速替换"的匹配项后隐藏"查找和替换"窗口
技巧 3.10 搜索符号
快捷键 Alt+F12
技巧 3.11 通过 Shift+Alt+F12 键使用"查找符号"功能
技巧 3.12 在文件中进行查找, Ctrl+Shift+F 打开"在文件中查找"窗口
技巧 3.14 停止"在文件中查找"搜索, Alt+F3以及S组合键
技巧 3.15 替换文件中出现的所有搜索字符串, Ctrl+Shift+H 打开"在文件中替换"窗口
注意"结果选项"区域中的另一个选项"全部替换后保持已修改的文件的打开状态"
技巧 3.17 使用F8键在"查找结果"窗口内进行定位
技巧 3.18 显示和隐藏查找消息
工具 -& 选项 -& 环境 -& 查找和替换 -& 显示提供相关信息的消息/显示警告消息
技巧 3.19 浏览"查找符号"的结果
Ctrl+Alt+F12 弹出"查找符号结果"窗口
F8, Shift+F8 定位上一个/下一个结果
在"查找符号结果"窗口中按F12键
右键单击符号打开上下文菜单, 选择"浏览定义"
技巧 3.20 在编辑器中搜索隐藏文本
"查找和替换"窗口 -& 查找选项 -& 搜索隐藏文本
技巧 3.22 在搜索时使用通配符和正则表达式
"查找和替换"窗口 -& 查找选项 -& 使用
技巧 4.1 使用 Ctrl+Alt+下箭头 打开文件选项卡频道的文件下拉菜单
技巧 4.2 使用文件选项卡频道上的"除此之外全部关闭", 可设置快捷方式, 绑定命令文件-除此之外全部关闭
技巧 4.3 从文件选项卡频道复制文件的完整路劲
技巧 4.4 直接打开包含活动文件的Windows资源管理器
右键单击任何一个文件选项卡, 选择"打开所在的文件夹"
技巧 4.5 只关闭选定的文件
窗口 -& 窗口... 打开"窗口'对话框
技巧 4.7 使用 Ctrl+Tab键打开IDE导航器, 快速查看并浏览所有打开的文件和工具窗口
技巧 4.8 金庸 IDE 导航器
工具 -& 选项 -& 环境 -& 键盘 -& 显示命令包含 -& 窗口:下一个文档窗口导航 -& 移除
如果要恢复: 显示命令包含 -& 窗口:下一个文档窗口 -& 按快捷键 -& Ctrl+Tab -& 分配 -& 确定
技巧 4.9 使用 Ctrl + F6 键和 Ctrl + Shift + F6 键在打开的文档窗口间导航
技巧 4.10 使用 Ctrl + F4 键关闭编辑器中当前打开的文档
技巧 4.11 进入 MDI 模式
工具 -& 选项 -& 环境 -& 窗口布局 -& 多个文档
技巧 4.17 使用一条命令自动隐藏所有工具窗口
窗口 -& 自动全部隐藏
技巧 4.18 自定义按下工具窗口图钉时的行为, 自动隐藏工具窗口还是整个工具窗口选项卡组
工具 -& 选项 -& 环境 -& 常规 -& "自动隐藏"按钮只影响活动工具窗口
技巧 4.19 在自动隐藏的一栏中右键单击显示自动隐藏的工具窗口
技巧 4.20 双击工具窗口的标题栏可重新停靠该工具窗口
技巧 4.22 加快或键盘工具窗口从停靠位置滑出的速度
工具 -& 选项 -& 环境 -& 常规 -& 动画处理环境工具
技巧 4.24 使用选项卡式文档最大化工具窗口
技巧 4.25 使用 Alt+F7 键和 Alt+Shift+F7 键移到下一个或前一个工具窗口
技巧 4.26 使用 Alt+F6 键和 Alt+Shift+F6 键在打开的工具窗口间循环
技巧 4.27 使用 Ctrl+PgUp 键和 Ctrl+PgDn 键在工具窗口组中的各个工具窗口间导航
技巧 4.28 自定义单击X按钮时对工具窗口或工具窗口选项卡组的操作
工具 -& 选项 -& 环境 -&常规 -& 关闭按钮只影响活动工具窗口
技巧 4.29 使用键盘拖动工具窗口
选定工具窗口, Alt+减号打开工具窗口菜单, 选择移动
技巧 4.30 使用键盘调整工具窗口的大小
在移动工具窗口时, 按一次 Alt 键
按一次空格键, 选择大小
技巧 4.31 访问工具窗口内的工具栏
Shift + Alt 键
技巧 4.32 使用 Shift+Esc 键关闭工具窗口
技巧 4.33 只导出窗口布局
工具 -& 导入和导出设置 -& 导出 -& 常规设置 -& 窗口布局
技巧 4.34 Shift + Alt + Enter 进入全屏模式
技巧 4.35 访问能够自定义的文件窗口布局模式
命令提示符打开要编程的文件
技巧 4.37 隐藏或显示任何工具栏的默认按钮.
工具 -& 自定义 对话框
技巧 4.40 在工具栏的工具提示中显示快捷键
右键单击工具栏 -& 自定义 -& 在屏幕提示中显示快捷键
技巧 4.41 自定义上下文菜单上的命令
工具 -& 自定义 -& 工具栏 -& 上下文菜单
技巧 5.1 从"命令"窗口运行 Visual Studio 命令
Ctrl+Alt+A 键打开"命令"窗口, 或者选择 视图 -& 其他窗口 -& 命令 打开
File.Open C:\Sample\myFile.txt
mandwindow
?i 返回变量i的内容
技巧 5.2 在"命令"窗口中进行搜索
Edit.Find /options /reset
技巧 5.3 记录"命令"窗口的会话
log -on &文件名&
log -off 关闭
技巧 5.4 从"命令"窗口运行外部可执行程序
Tools.Shell
技巧 5.6 使用 F8 键和 Shift+F8 键在"输出"窗口中的错误之间导航
技巧 5.8 使用键盘跳至"输出"窗口内的不同窗格
"输出"窗口 有一个"显示以下输出"下拉列表, 可以使用键盘快捷键绑定
技巧 5.9 在生成期间停止"输出"窗口的显示
工具 -& 选项 -& 项目和解决方案 -& 常规 -& 在生成开始时显示输出窗口
技巧 5.10 在"输出"窗口启用自动换行
"输出"窗口的工具栏有一个图标, 可以用来启用自动换行
技巧 5.11 自定义"输出"窗口的颜色方案
工具 -& 选项 -& 环境 -& 字体和颜色 -& 显示其设置 -& 输出窗口
技巧 5.12 将调试消息重定向到"输出"窗口
工具 -& 选项 -& 调试 -& 常规 -& 将所有输出窗口文本重定向到即时窗口
技巧 5.13 不能在"输出"窗口启用"停止搜索"
技巧 5.14 将代码拖放到工具箱的"常规"选项卡
技巧 5.16 不让工具箱自动填充在解决方案中找到的所有组件
工具 -& 选项 -& Windows 窗体设计器 -& 常规 -& AutoToolboxPopulate -& False
技巧 5.17 使用"*"展开工具箱的全部组件, 使用"/"折叠工具箱的全部组件
技巧 5.18 使用 Ctrl+上箭头 和 Ctrl+下箭头 在工具箱的控件组之间移动
技巧 5.19 按字母顺序对工具箱中的组件排序
技巧 5.20 在工具箱的图标视图和列表视图之间切换
右键单击, 切换列表视图
技巧 5.21 使用"全部显示"找到已隐藏的工具箱控件
右键单击, 全部显示
技巧 5.22 使用 Ctrl+C 键复制工具箱选项卡中的控件, 然后用 Ctrl+V 键将该控件粘贴到另一个工具箱选项卡
技巧 5.23 新建工具箱选项卡
右键单击, 添加新选项卡
技巧 5.24 使用任务列表创建独立于代码的用户任务
用户任务保存在 .suo 文件内
视图 -& 任务列表, 下拉框内为"用户任务", 工具栏"创建用户任务"按钮, 每个任务左边的复选框可表示该任务已完成.
技巧 5.25 为任务列表的用户任务分配优先级
技巧 5.26 在任务列表中创建和查看 TODO 注释
下拉框选择"注释", 如代码有 TODO 注释, 则会显示
技巧 5.27 在任务列表中创建快捷方式
菜单: 编辑 -& 书签 -& 添加任务列表快捷方式
技巧 5.28 在任务列表中显示 HACK, UNDONE和自定义标记
工具 -& 选项 -& 环境 -& 任务列表 -& 标记列表
技巧 5.29 将删除用户任务时的提示禁用
工具 -& 选项 -& 环境 -& 任务列表 -& 确认删除任务复选框
技巧 5.30 在任务列表上显示完整的文件路径
只适用于注释和快捷方式
工具 -& 选项 -& 环境 -& 任务列表 -& 隐藏完整文件路径
技巧 5.31 创建可在不同任务列表类别之间进行导航的键盘快捷键
绑定命令 视图.下一任务 和 视图.上一任务
推荐快捷键 Ctrl+Alt+N 和 Ctrl+Alt+Shift+N
技巧 5.32 使用 Ctrl+Alt+J 键打开"对象浏览器"窗口, 命令为 视图.对象浏览器
技巧 5.33 在"对象浏览器"中只显示解决方案中的组件
左上角的有个"浏览"组合框, 打开组合框下拉列表, 选择"我的解决方案"
技巧 5.34 在"对象浏览器"中创建自定义的组件列表
技巧 5.35 直接从"对象浏览器"向解决方案添加引用
在"对象浏览器"中找到了要添加到解决方案的组件, 在"对象浏览器"中有个工具栏按钮, 单击名为"在解决方案资源管理器中添加到选定项目的引用中"
技巧 5.36 使用前进/后退按钮在"对象浏览器"中导航
对应命令 视图.对象浏览器 "向前" 和命令 视图.对象浏览器 "向后"
Alt+减号 对应后退, Shift+Alt+减号 对应前进
技巧 5.38 自定义"对象浏览器"的"对象"窗格和"成员"窗格
上面的设置按钮下拉菜单 -& 查看命名空间/查看容器
同理还有菜单 显示基类型 以及菜单 显示隐藏类型和成员
同理还有显示继承成员和扩展成员
技巧 5.45 在"对象浏览器"中搜索对象的两种基本方法
"对象浏览器"的第二个工具栏, 功能基本全部与搜索有关
使用"查找和替换"窗口的"查找符号"功能
技巧 5.46 在"对象浏览器"中用F12键跳到选定的定义
等于 转到定义 菜单
技巧 5.47 在"对象浏览器"中使用"查找符号"搜索(Shift+F12)
等于 查找所有引用 菜单
技巧 5.49 将所有"对象浏览器"自定义导出到.vssettings文件中
技巧 5.51 在"对象浏览器"中使用全局命令 视图.前进(Alt+右箭头)和 视图.后退(Alt+左箭头)
技巧 6.1 找出上次重置的开发设置
H_C_USER\Software\Microsoft\VisualStudio\9.0\Profile 键下, 查看 LastResetSettingFile 值
技巧 6.4 在"导入和导出设置" -& "重置"页面的列表中添加自己的文件
位于 \Program Files\Microsoft Visual Studio 9.0\Common7\IDE\Profiles
可添加自己的或修改现有的.vssettings文件
重置为常规开发设置
启用你的偏好设置
覆盖 \Program Files 目录下现有的常规开发设置文件
技巧 6.7 Visual Studio 每次关闭时自动保存所有当前设置
工具 -& 选项 -& 环境 -& 导入和导出设置: 可设置保存位置
技巧 6.11 在列表中添加自己的外部工具
工具 -& 外部工具 -& 添加
标题: 记事本
命令: notepad.exe
参数: myfile.txt
初始目录: $(SolutionDir)
技巧 6.13 在"输出"窗口中显示外部工具的文本
使用命令提示符作为工具 cmd.exe
参数为 /C echo $(CurText)
使用输出窗口
技巧 6.14 使用外部工具标记
目标文件目录是指obj目录, 二进制目录是指bin目录
技巧 6.15 外部工具对话框的"提示输入参数"复选框
技巧 6.16 体验使用"查找"组合框的乐趣
Ctrl+D 转到"查找"组合框
转到行: 输入行号, 而后 Ctrl+G键
转到文件: 输入文件名称, 而后按 Ctrl+Shift+G 键
获取帮助: 输入关键字, 而后按 F1 键
要访问调用堆栈, 输入 &kb
要访问Web页面, 输入 &nav
技巧 6.17 使用 Ctrl+/ 键在"查找"组合框内运行 Visual Studio 命令
不必打开"命令"窗口的情况下运行 Visual Studio 命令
技巧 6.18 在不使用工具窗口或对话框的情况下, 打开解决方案中的文件
Ctrl+/ 转到"查找"组合框
输入 文件.打开文件 文件名
选择一个文件, 然后按Enter键打开文件
输入 allas fo 文件.打开文件 --- 命令别名
这样只需要输入"fo 文件名"即可
技巧 6.20 修改 Visual Studio 起始页上的RSS源
工具 -& 选项 -& 环境 -& 启动 -& 起始页新闻频道
可以使用这个"每日一帖"系列文章: /saraford/rss_tag_Visual+Studio+2008+Tip+of+the+Day.xml
技巧 6.21 自定义 Visual Studio 启动时打开的内容
工具 -& 选项 -& 环境 -& 启动 -& "启动时"组合框
技巧 7.1 Visual Studio 2008 支持 .Net Framework 的多定向
新建项目 -& 模板 -& Net Framework 2.0/Net Framework 3.0/Net Framework 3.5
技巧 7.2 修改默认的新建项目位置
工具 -& 选项 -& 项目和解决方案 -& 常规 -& Visual Studio 项目位置 / Visual Studio 用户项目模板位置 / Visual Studio 用户模板位置
技巧 7.3 在"新建项目"对话框中, 可以在小图标和大图标之间切换
"新建项目"对话框 -& 右上角的"大图标/小图标"按钮
技巧 7.4 使用解决方案文件夹隐藏项目
右键单击解决方案文件夹, 选择"隐藏文件夹"
技巧 7.5 创建临时或"用完即仍"的项目
工具 -& 选项 -& 项目和解决方案 -& 常规 -& 取消选中"创建时保存新项目"
技巧 7.6 隐藏或显示"项目位置不受信任"消息框
工具 -& 选项 -& 项目和解决方案 -& 常规 -& 选中"项目位置不受信任时警告用户"复选框
技巧 7.7 使用简化生成配置
工具 -& 选项 -& 项目和解决方案 -& 显示高级生成配置
如何使用配置管理器的文章
http://saraford.net//did-you-know-how-the-configuration-manager-works-part-1/
http://saraford.net//did-you-know-how-the-configuration-manager-works-part-2/
在Debug配置中的调试器下运行 F5 键(调试.启动)
在Release配置中(无调试器)运行Ctrl+F5键(调试.开始执行不调试)
技巧 7.8 在解决方案资源管理器中显示杂项文件项目
工具 -& 选项 -& 环境 -& 文档 -& 在解决方案资源管理器中显示杂项文件
技巧 7.9 解决方案资源管理器中支持自动查找匹配选择
解决方案资源管理器, 无论在其树视图的什么位置, 只要开始输入文件的完整名称, 焦点就会跳转到相匹配的地方
技巧 7.10 可以在解决方案中添加解决方案
文件 -& 添加 -& 添加现有项目
对象类型 -& 解决方案文件
技巧 7.11 在解决方案资源管理器中重命名文件时, 自动在整个项目中执行重命名
文件 -& 选项 -& 项目和解决方案 -& 常规 -& 重命名文件时提示符号重命名
技巧 7.12 在解决方案资源管理器中隐藏或显示一个解决方案
工具 -& 选项 -& 项目和解决方案 -& 常规 -& 总是显示解决方案
技巧 7.13 让解决方案资源管理器始终显示(或者不显示)编辑器中当前打开的文件
工具 -& 选项 -& 项目和解决方案 -& 常规 -& 在解决方案资源管理器中跟踪活动项
技巧 7.14 无需编辑代码, 只要使用跟踪点就能记录 PrintF() 或 Console.WriteLine() 的信息
右键单击要插入跟踪点的位置 -& 断点 -& 插入跟踪点
技巧 7.17 使用 Ctrl+F9 键启用或禁用断点
技巧 7.18 设置有条件的断点
技巧 7.19 使用断点筛选器中断正确的进程(用于多个进程)
工具 -& 选项 -& 调试 -& 常规 -& 启用断点筛选器
技巧 7.20 按 Ctrl+B 键在目标函数上设置断点
Ctrl+B --- 在函数出终端
"新建断点"窗口
技巧 7.21 按 Ctrl+Alt+B 键打开断点窗口
菜单: 调试 -& 窗口 -& 断点
技巧 7.22 按 Ctrl+Shift+F9 键删除所有断点
菜单: 调试 -& 删除所有断点
技巧 7.23 禁用删除所有断点之前的警告消息
工具 -& 选项 -& 调试 -& 常规 -& 在删除所有断点之前询问
技巧 7.24 使用数据提示编辑变量的内容
命中一个断点时鼠标指针停留在变量上方, 出现工具提示, 单击变量的值进入编辑模式, 修改变量的内容, 而后按Enter键提交修改后的内容
技巧 7.25 在解决方案资源管理器中选择启动项目
解决方案资源管理器中右键单击解决方案 -& 属性 -& 通用属性 -& 启动项目 -& 单启动项目
右键单击一个项目 -& 设为启动项目
技巧 7.26 启动调试多个项目
解决方案资源管理器中右键单击解决方案 -& 属性 -& 通用属性 -& 启动项目 -& 多启动项目
多个项目选择"启动"
技巧 7.27 在一个进程中断时则中断所有进程
工具 -& 选项 -& 调试 -& 常规 -& 一个进程中断时则中断所有进程
技巧 7.28 使用 Ctrl+Shift+F12 键查看错误列表中列出的下一个错误
绑定的命令为: 视图.下一个错误
技巧 7.29 自定义错误列表视图
技巧 7.30 直接从错误列表查看一个错误所在的文档
"错误列表"视图中右键单击一个错误, 在弹出的上下文菜单中选择"显示错误帮助"选项
技巧 7.31 在错误列表和任务列表中进行多列排序(次要排序等)
进行次要排序的步骤
单击作为主要排序的列
按住Shift键单击要作为次要排序的列
清除排序条件, 然后对其他列重复上述步骤
技巧 7.32 将显示错误, 警告和消息的3个按钮绑定到键盘快捷键
工具 -& 选项 -& 环境 -& 键盘 -& 搜索"错误"
错误: Ctrl+Alt+Shift+E
警告: Ctrl+Alt+Shift+W
消息: Ctrl+Alt+Shift+M
技巧 7.33 生成失败后显示或隐藏错误列表
如何让错误列表不出现: 工具 -& 选项 -& 项目和解决方案 -& 常规 -& 若生成完成时有错误, 则始终显示错误列表
技巧 7.34 使用"监视"窗口快速修改变量的值
技巧 7.35 在调试窗口中以十六进制格式查看数值
技巧 7.36 使用"即时"窗口作为一个方便的计算器或调节器的辅助调节器
&script type="text/javascript"&&/script&
企业中上层谈心声:尽责是最好的学习
企业高层谈心声:尽责是最好的学习生活和工作中,不少人认为多出力吃亏,多担责任倒霉,而到头来总是这些人郁郁不得志,甚至穷困潦倒,仍不知觉醒和反思,整天怨天尤人,至死不知个中缘由。
记得今年元月18日,驻鲁全国人大代表审议了《物权法》和《企业所得税法》的草案,我们先集中观看了两法草案的讲解录像,后又分组讨论两法的修订。作为人大代表,我非常认真地把《物权法(草案)及参阅材料》和《企业所得税法(草案)及参阅材料》的内容逐项学习,并划出问题和建议在分组会上提出。财政部、国家税务总局的官员和专家到会介绍情况和听取意见,他们解答了我们的问题,详尽地记录了我们的建议。通过这次讨论会后,我感觉不仅是对两法草案的审订,尽到了人大代表的职责,更是一个学习的过程。这一天的学习使我简直成为两法的“专家”了,尤其是审议《企业所得税法》,对今后企业经营乃至上市大有好处,我想我个人的成长进步,企业的发展发达不都得益于这类看似无回报的尽心尽责和无怨的付出吗?
我们做企业,平时忙于公司的运营,极少有时间抽空研究相关的政策和法律。对于近几年有些知名企业家的经济犯罪,我想很大一部分是对经济法方面的无知,他们有的身价几亿十几亿,不会仅仅因为区区的几千万而成为阶下囚。怎样遵纪守法去经营,怎样避免陷入对经济法的无知陷阱,这次草案的修订讨论会也给了我诸多的启示,有了许多的收获。
像这些社会实践活动,极大地丰富了我的思想,开阔了我的胸怀和眼界,没有这些经历,我的眼界我的胸怀不会提高到现在这个层次,不会达到这样的高度。记得第一次参加全国人民代表大会时,整个参会的十多天我休息时间很少,审议政府工作报告、两院工作报告、国家的发展报告、财政预算报告、国务院机构改革的报告,选举国家主席、国家副主席、国务院总理、国务院副总理、军委主席、军委副主席、人大委员长、人大副委员长、人大常委,表决各部部长,提出了各项议案和建议……在那个非常庄严的一个时刻,坐在神圣的人民大会堂里,全程地参预它,我早已超脱了渺小的自我和我的公司,而是代表着中国太阳能行业,代表着可再生能源行业,作为全国人大代表看问题。我深深地体会到了“国家兴衰,匹夫有责”的责任感。我能感觉到自己作为国家的儿子,与祖国母亲的血脉相连,与祖国母亲的心一同跳动,那种高度非身临其境所难以体会难以言表的。
世上最大的恩,除父母的养育之恩外,还有一个大恩是“知遇之恩”,他人认可你欣赏你信任你,给你机会,让你参加诸多的社会实践,让你尽职尽责,为你创造了丰富的人生阅历,这些阅历这些经历都是人生难得的财富,是没法用金钱衡量的。士为知已者死,这种源动力使你主动地研究这些活动,要吸收更要创造,这本身就是一个很好的学习过程,人的能力就在这种不断创新的变化中有了质的提高。
   但我们有很多人在很多时候,把自己的眼前利益摆在第一位,对额外的工作,多参加了的会议常有抱怨,认为自己多承担了额外的义务,占用了自己的个人学习和成长的时间和精力,从而尽量减少承担义务和尽职责的机会;还有的人参加公司的各项会议,因为不是担任会议的主角,觉得自己在会议中可有可无,对会议下发的文件材料、组织的活动思想及流程不重视不投入,消极地应付会议,不尽参会的职责贡献自己的思想,久而久之这类人在公司的各项活动中形同虚设走向边缘化。在列席全国人大常委会时,我看到常委们对审议国家重大法规和决策时非常专注,他们多是退下来的部长、退休的院士和专家,虽年事已高但思想非常敏锐。我们多数人会认为人大常委会委员是一种虚职,但后来我发现常委会承担着审议各项国家法规和决策的重任。在看到他们审议各项法律,审议报告的时候,他们提出来的建议水平都非常高,我的感觉人大常委会常委的水平比起我们这些人大代表来,就好似全国知名医生比之于省级医生。国家和人民之所以信任他们交给他们重任,不但是因为他们过去在从事行政职务时的贡献多,而是他们始终如一地尽职尽责。从以上例子中也可以看出:不承担社会和团体的责任,就是失去了学习进步的机会,机会的积累将会是一种资格的沉淀,一旦你失去了一种资格。即使以后你再想接受挑战,再想尽一种义务,再想向外输出你的成果,已为时晚矣没有希望了。这也是为什么同是一个班级的同学一个单位的同事,十年下来有人成长“上天”有人落伍“入地”的根本原因,所以尽责是最好的学习。
转搜狐BLOG-皇明太阳能集团------解决方案--------------------UP------解决方案--------------------支持楼主,现在我们太确实一中感恩、惜福的心态了。
如果您想提高自己的技术水平,欢迎加入本站官方1号QQ群:&&,&&2号QQ群:,在群里结识技术精英和交流技术^_^
本站联系邮箱:

我要回帖

更多关于 tab character 的文章

 

随机推荐