自动修复声纳规则

Automatically fix sonar rule

我正在寻找自动修复此规则的方法:

checkstyle:javadoc.SummaryJavadocCheck

我有超过 1000 个在第一行末尾没有点的 javadoc。我不想一个一个地编辑文件,但也许在 bash 中我可以替换 /** 后面没有点的第一行?

有人可以帮我解决这个或另一个问题吗?

编辑 1:

无效的 javadoc :

/**
 * Javadoc comment
 *
 * @return object an object
 */

更正 javadoc

/**
 * Javadoc comment.
 *
 * @return object an object
 */

Sonar 想要在线末端的一个点。不重要,只是想知道是否可行。

谢谢

您可以使用 awksed,或纯 bash:完全匹配 /** 然后在下一行没有点的情况下添加一个点。 sedbash 以下版本:

sed 版本:

sed -i.bak '/^\/\*\*$/{n;s/\([^\.]\)$/./;}' file1 file2 ...

解释:

-i.bak 内联编辑文件,并创建备份 (.bak)。

/^\/\*\*$/ 仅匹配恰好包含 /**.

的行

{...} sed 命令块

n 在模式 space.

中追加下一行

s/\([^\.]\)$/./ 将非“.”(\([^\.]\)$)最后一个字符替换为自身和一个点(.)。

纯bash解:

#!/bin/bash

while read -r line; do
    if [[ $line =~ ^/\*\*$ ]]; then
        read -r line2
        [[ $line2 =~ \.$ ]] || line2="$line2."
        printf -v line "%s\n%s" "$line" "$line2"
    fi
    printf "%s\n" "$line"
done

要执行与 sed 的 -i.bak 相同的操作,您可以将 bash 版本与类似的东西一起使用:

for file in *.java; do
   cp -p "$file" "$file.bak"
   ./script.bash < "$file.bak" > "$file"
done