Skip to content

Commit

Permalink
--taskid=ID20231017
Browse files Browse the repository at this point in the history
优化注释的添加位置
  • Loading branch information
xinluke committed Oct 17, 2023
1 parent b340765 commit 0c357b5
Show file tree
Hide file tree
Showing 3 changed files with 46 additions and 6 deletions.
44 changes: 38 additions & 6 deletions src/main/java/com/wangym/lombok/job/impl/CommentJob.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@
import org.springframework.util.FileCopyUtils;

import java.io.*;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

Expand All @@ -21,24 +23,28 @@ public CommentJob() {
@Override
public void exec(File file) throws IOException {
//按行读取文件
StringBuffer sb = new StringBuffer();
List<String> stringList = new ArrayList<>();
boolean changeFlag = false;
try (BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(file), "utf-8"))) {
String line;
while ((line = reader.readLine()) != null) {
//判断是否包含行尾注释,将行尾注释提到上一行
if (processLine(line, sb)) {
if (processLine(line, stringList)) {
changeFlag = true;
}
}
}
//如果文件内容发生变化,重新写入文件
if (changeFlag) {
StringBuffer sb = new StringBuffer();
for (String s : stringList) {
sb.append(s).append("\n");
}
FileCopyUtils.copy(sb.toString().getBytes("utf-8"), file);
}
}

private boolean processLine(String text, StringBuffer sb) {
private boolean processLine(String text, List<String> lines) {
Pattern pattern = Pattern.compile("^(\\s*)(.*?;)\\s*(//.*)$"); // 匹配行尾注释
Matcher matcher = pattern.matcher(text);

Expand All @@ -47,14 +53,40 @@ private boolean processLine(String text, StringBuffer sb) {
String code = matcher.group(2); // 获取代码部分
String comment = matcher.group(3); // 获取行尾注释

sb.append(commentAlignment + comment + "\n");
sb.append(commentAlignment + code + "\n");
addToHead(lines, commentAlignment + comment);
lines.add(commentAlignment + code);
return true;
} else {
sb.append(text + "\n");
lines.add(text);
return false;
}
}

private void addToHead(List<String> lines, String text) {
//for倒序循环遍历,找到第一个不是注解的行
int index = 0;
for (int i = lines.size() - 1; i >= 0; i--) {
if (!isAnnotaion(lines.get(i))) {
break;
} else {
//记录最后一个注解的位置
index = i;
}

}
if (index != 0) {
lines.add(index, text);
} else {
lines.add(text);
}
}

private boolean isAnnotaion(String text) {
//判断是否是注解
Pattern pattern = Pattern.compile("^\\s*@\\D*$");
Matcher matcher = pattern.matcher(text);
return matcher.find();
}


}
5 changes: 5 additions & 0 deletions src/test/java/com/wangym/lombok/CommentJobTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -22,4 +22,9 @@ public void handle() throws IOException {
job.exec(new ClassPathResource("LoggerExample.java").getFile());
}

@Test
public void handle1() throws IOException {
job.exec(new ClassPathResource("SystemOutPrintExample.java").getFile());
}

}
3 changes: 3 additions & 0 deletions src/test/resources/SystemOutPrintExample.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
package com.wangym.lombok.job.impl;

public class SystemOutPrintExample {
@JsonProperty(value = "open_id")
private String name;//这是一个单行注释2


public void test() {
System.out.println("hello world");
Expand Down

0 comments on commit 0c357b5

Please sign in to comment.