代码复审 - 发行说明


1.0 已知问题
   1.1 用户定义的规则不能包含说明和示例
   1.2 可能从“代码复审详细信息”视图中除去匹配
   1.3 无法为结构化分析快速修正新建类
   1.4 不能查看某些包中的源代码
   1.5 未始终显示行号
   1.6 JSDK 或 J2EE 类中的内部数据变量不应出现在数据流路径中
   1.7 可能根据设计原理/复杂性规则将深度设置为负值
   1.8 在参数中使用非美国 ASCII 字符创建规则时发生编码问题
   1.9 未正确报告结构化分析规则的进度
   1.10 主视图中的“停止/启动”按钮相混
   1.11 对于规则“避免使用 java.lang.String.compareTo () 来比较区分语言环境的字符串”的快速修正提出的解决方案不正确
   1.12 J2EE 模板规则(总是在调用 [方法 B] 之后调用 [方法 A])的某些实例化存在问题
   1.13 J2EE 模板规则(总是在调用 [方法 B] 之后调用 [方法 A])可能存在问题
   1.14 用户定义的“避免定义方法”规则的误报
   1.15 采用方法的模板在输入方法名时不起作用
   1.16 尝试配置服务器数据时出现显著的错误窗口
   1.17 Linux 操作系统中的首选项页问题

1.0 已知问题

1.1 用户定义的规则不能包含说明和示例

当使用规则模板创建用户定义的规则时,不能包含说明和示例。

1.2 可能从“代码复审详细信息”视图中除去匹配

如果在循环相关性类别中撤销规则找到的匹配,则会从“代码复审详细信息”视图除去匹配。不应除去匹配,但应更新为状态“未解决”。要变通此问题,请在循环相关性类别中选择规则并运行工作区分析。

1.3 无法为结构化分析快速修正新建类

通常,您可以用两种方法解决结构化分析快速修正的代码问题:1)选择可以将有问题的代码移至其中的现有类,或者 2)新建一个类,将有问题的代码移至其中。如果选择第二个选项,会有错误阻止快速修正的完成。

要变通此问题,请在应用快速修正之前新建一个类,并在代码复审重构向导中选择该类。

1.4 不能查看某些包中的源代码

根据某些 J2EE 最优方法规则,将不能查看包含在下列包中的源代码:
1. com.ibm
2. COM.ibm
3. sun
4. sunw
5. java
6. javax
7. org.apache
8. com.sun
9. org.omg
10. org.ietf
11. org.w3c
12. org.xml

1.5 未始终显示行号

在“代码复审”视图中,对于 J2EE 最优方法规则检测到的一些结果,并未始终显示其行号。如果双击结果,就会显示正确的行号。

1.6 JSDK 或 J2EE 类中的内部数据变量不应出现在数据流路径中

数据流路径显示数据更改的依赖性历史,这些数据更改导致出现问题,规则结果突出显示了该问题。数据流路径出现在“路径”选项卡中。有时数据流路径显示 JSDK 或 J2EE 类中提供的内部数据结构。例如,您会看到修改了 java.lang.Object[]variable,而不是说修改了类型为 java.lang.Vector 的变量。java.lang.Object[]variable 是 java.lang.Vector 实现中的一个内部字段,如果看到此专用信息显示在选项卡上,可能会令人费解。

1.7 可能根据设计原理/复杂性规则将深度设置为负值

在“设计原理”规则类别中,可设置复杂性规则的深度。例如,可将规则“避免嵌套一个以上的类”设置为“避免嵌套三个以上的类”。要使该规则正常工作,必须使用正数来表示深度。但是,复杂性规则目前并不能确保深度设置为正数。要避免发生此问题,不要输入无效输入内容,如零或负数。

1.8 在参数中使用非美国 ASCII 字符创建规则时发生编码问题

通过在参数中使用非美国 ASCII 字符的模板创建规则时存在编码问题。例如,在选择了带有本地字符的类型或方法的情况下会发生这种情况。因为此编码问题, 使用这些属性及非美国 ASCII 字符创建的规则在运行时会生成异常。

1.9 未正确报告结构化分析规则的进度

未为“结构化分析”规则正确报告“代码复审”进度(即,进度对话框始终报告进度为 100%)。您必须等待“代码复审”完成。

1.10 主视图中的“停止/启动”按钮相混

有时在启动“代码复审”时,“启动/停止”按钮会显示一个图标,该图标是启动和停止的组合。

1.11 对于规则“避免使用 java.lang.String.compareTo () 来比较区分语言环境的字符串”快速修正提出的解决方案不正确

对于规则“避免使用 java.langString.compareTo () 来比较区分语言环境字符串”快速修正提出了两个解决方案以修正该规则所针对的问题locale-sensitive。建议<使用 com.ibm.icu.text.Collator>的解决方案不正确。该解决方案应为<使用 java.text.Collator>。

1.12 J2EE 模板规则(总是在调用 [方法 B] 之后调用 [方法 A])的某些实例化存在问题

如果使用 J2EE 规则模板“总是在调用 [方法 B] 之后调用 [方法 A]”创建新规则,并且缺省情况下 [方法 B] 是工作空间上的构造函数,则在代码复审中运行该规则时,它不会产生任何规则结果。

1.13 J2EE 模板规则(总是在调用 [方法 B] 之后调用 [方法 A])可能存在问题

通过 J2EE 最优方法模板规则“总是在调用 [方法 B] 之后调用 [方法 A]”为特定对象实例创建新规则时,可能会在您对其定义规则的下一个特定实例中产生不正确的规则结果。如果从模式“总是在调用 [方法 B] 之后调用 [方法 A]”中选择方法,在该模式的 J2EE 代码中,这些方法的对象实例的生命周期大于被分析的 servlet 的生命周期,则您可能会发现不正确的规则结果。例如,考虑以下代码:

public void doGet( HttpServletRequest request, HttpServletResponse response ) throws ServletException, IOException {

// Some code here.... final ServletOutputStream outStream = response.getOutputStream(); //... No call to response.flushBuffer after. }

您为它创建了以下规则:“总是在调用 ServletResponse.getOutputStream() 之后调用 ServletResponse.flushBuffer()”。因为响应对象这一实例的生命周期大于 servlet 本身,所以这可能导致代码复审分析出现问题。您可能会发现其它 servlet 中有一些结果针对于当前 servlet 的问题。注意,为这种特定对象实例创建规则是有问题的。

1.14 用户定义的“避免定义方法”规则的误报

如果使用规则模板“避免定义方法”创建了新规则,并且您选择了具有标准名称的方法,则在代码复审中仅使用方法的名称和参数。规则模板的重点在于方法特征符,所以包和类名信息是无关紧要的。

1.15 采用方法的模板在输入方法名时不起作用

通过提供的规则模板创建新规则时,不要输入方法的名称。通过使用浏览器来选择该方法。

1.16 尝试配置服务器数据时出现显著的错误窗口

如果在配置服务器数据时出现显著的错误窗口,则关闭 .java 文件对应页面(页面代码),然后重试配置该数据。

1.17 Linux 操作系统中的首选项页问题

在 Linux 中的“首选项”页上,如果选择的代码复审包含大量规则,您可能无法查看所有规则类别和规则详细信息。这一问题的变通方法是在“首选项”页上选择“快速代码复审”,关闭“首选项”页然后重新打开它。然后可选择任何代码复审并正确显示它。

返回到主自述文件