You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在JavaDoc中使用含TODO的视图名而不触发Sonar告警?

Solutions for SonarQube's squid:S1135 False Positive with Oracle View Names

I’ve dealt with this exact false positive before—SonarQube’s squid:S1135 rule is great for catching forgotten TODOs, but it can get confused when "TODO" is part of a legitimate identifier like your Oracle view V_THINGS_TODO. Here are several clean, maintainable fixes that avoid the hacky "replace O with 0" workaround:

1. Wrap the View Name in JavaDoc's {@code} Tag

SonarQube’s rule often skips scanning text marked as code in JavaDoc. By wrapping your view name with the {@code} tag, you signal that this is a code identifier, not a TODO comment:

/**
 * Retrieves data from the {@code V_THINGS_TODO} Oracle view.
 * @return List of records from the view
 */
public List<Thing> getTodoThings() {
    // ... implementation
}

Pros: Simple, maintains full readability, no need to modify Sonar settings or code structure.
Cons: Depends on Sonar respecting JavaDoc code tags (most recent versions do, but test it first).

2. Suppress the Rule for the Specific Element

If the {@code} tag doesn’t resolve the issue, you can directly tell SonarQube to ignore this rule for the method/class containing the JavaDoc. Use Sonar’s built-in suppression comments:

// sonar:ignore=squid:S1135
/**
 * Retrieves data from the V_THINGS_TODO Oracle view.
 * @return List of records from the view
 */
public List<Thing> getTodoThings() {
    // ... implementation
}

Or keep the suppression within JavaDoc:

/**
 * Retrieves data from the V_THINGS_TODO Oracle view.
 * <!-- sonar:ignore=squid:S1135 -->
 * @return List of records from the view
 */
public List<Thing> getTodoThings() {
    // ... implementation
}

Pros: Targeted fix that doesn’t affect other parts of the codebase.
Cons: Adds a suppression comment, which might feel cluttered if you have many such views.

3. Configure SonarQube to Ignore This Specific Identifier

For a project-wide fix, adjust the squid:S1135 rule’s settings in your SonarQube instance to exclude the V_THINGS_TODO string (or a pattern matching your view naming convention):

  • Go to your project in SonarQube → Quality Profiles → Find the profile using squid:S1135 → Edit Rule
  • In the rule’s configuration, add an exception for "Text to ignore" with the value V_THINGS_TODO
  • If you have multiple views with "TODO" in their names, use a regex pattern like V_.*_TODO to cover all of them

Pros: Fixes the issue everywhere without modifying code.
Cons: Requires access to SonarQube configuration, and you’ll need to craft precise patterns to avoid missing real TODO comments.

4. Use a Constant for the View Name

Define the view name as a static constant in your code, then reference it in JavaDoc instead of writing the literal string. This keeps the "TODO" out of the JavaDoc text entirely:

/**
 * Name of the Oracle view for tracking things to do.
 */
public static final String THINGS_TODO_VIEW = "V_THINGS_TODO";

/**
 * Retrieves data from the {@link #THINGS_TODO_VIEW} view.
 * @return List of records from the view
 */
public List<Thing> getTodoThings() {
    // ... implementation using THINGS_TODO_VIEW
}

Pros: Improves code maintainability (easy to update the view name if it changes) and eliminates the Sonar false positive entirely.
Cons: Adds a constant definition, which is extra work for a single view, but pays off if you reference the view multiple times.


内容的提问来源于stack exchange,提问作者rilent

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 08:48:21