From 8283fd879c2b07b41906ffeb7bb2f9dd12c9607a Mon Sep 17 00:00:00 2001 From: wangym Date: Mon, 16 Oct 2023 11:36:20 +0800 Subject: [PATCH] =?UTF-8?q?--taskid=3DID20231016=20add=20rule=EF=BC=9ASing?= =?UTF-8?q?le=20line=20comments=20in=20a=20method=20should=20be=20put=20ab?= =?UTF-8?q?ove=20the=20code=20to=20be=20commented,=20by=20using=20//=20and?= =?UTF-8?q?=20multiple=20lines=20by=20using=20/*=20*/.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../wangym/lombok/job/impl/CommentJob.java | 55 +++++++++++++++++++ .../com/wangym/lombok/CommentJobTest.java | 25 +++++++++ src/test/resources/LoggerExample.java | 2 +- 3 files changed, 81 insertions(+), 1 deletion(-) create mode 100644 src/main/java/com/wangym/lombok/job/impl/CommentJob.java create mode 100644 src/test/java/com/wangym/lombok/CommentJobTest.java diff --git a/src/main/java/com/wangym/lombok/job/impl/CommentJob.java b/src/main/java/com/wangym/lombok/job/impl/CommentJob.java new file mode 100644 index 0000000..d339c6f --- /dev/null +++ b/src/main/java/com/wangym/lombok/job/impl/CommentJob.java @@ -0,0 +1,55 @@ +package com.wangym.lombok.job.impl; + +import com.wangym.lombok.job.AbstractJob; +import org.springframework.stereotype.Component; +import org.springframework.util.FileCopyUtils; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileReader; +import java.io.IOException; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +@Component +public class CommentJob extends AbstractJob { + + public CommentJob() { + super(".java"); + } + + @Override + public void exec(File file) throws IOException { + //按行读取文件 + StringBuffer sb = new StringBuffer(); + try (BufferedReader reader = new BufferedReader(new FileReader(file))) { + String line; + while ((line = reader.readLine()) != null) { + //判断是否包含行尾注释,将行尾注释提到上一行 + processLine(line, sb); + } + } + //如果文件内容发生变化,重新写入文件 + if (!sb.toString().equals(FileCopyUtils.copyToString(new FileReader(file)))) { + FileCopyUtils.copy(sb.toString().getBytes("utf-8"), file); + } + } + + private void processLine(String text, StringBuffer sb) { + Pattern pattern = Pattern.compile("^(\\s*)(.*?;)\\s*(//.*)$"); // 匹配行尾注释 + Matcher matcher = pattern.matcher(text); + + if (matcher.find()) { + String commentAlignment = matcher.group(1); // 获取注释对齐部分 + String code = matcher.group(2); // 获取代码部分 + String comment = matcher.group(3); // 获取行尾注释 + + sb.append(commentAlignment + comment + "\n"); + sb.append(commentAlignment + code + "\n"); + } else { + sb.append(text + "\n"); + } + } + + +} diff --git a/src/test/java/com/wangym/lombok/CommentJobTest.java b/src/test/java/com/wangym/lombok/CommentJobTest.java new file mode 100644 index 0000000..51e8a8a --- /dev/null +++ b/src/test/java/com/wangym/lombok/CommentJobTest.java @@ -0,0 +1,25 @@ +package com.wangym.lombok; + +import com.wangym.lombok.job.impl.CommentJob; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.core.io.ClassPathResource; +import org.springframework.test.context.junit4.SpringRunner; + +import java.io.IOException; + +@RunWith(SpringRunner.class) +@SpringBootTest +public class CommentJobTest { + + @Autowired + private CommentJob job; + + @Test + public void handle() throws IOException { + job.exec(new ClassPathResource("LoggerExample.java").getFile()); + } + +} diff --git a/src/test/resources/LoggerExample.java b/src/test/resources/LoggerExample.java index cebb2eb..8ae669f 100644 --- a/src/test/resources/LoggerExample.java +++ b/src/test/resources/LoggerExample.java @@ -8,7 +8,7 @@ public class LoggerExample { public void test() { int a = 5; - double b = 6d; + double b = 6d; //这个是行尾注释,会被提到上一行 double b1 = 6.1; long c = 7; long c2 = 8l;