내 목표는 자바 소스 파일을 분석하여 비 주석 코드가 포함 된 행 번호를 찾는 것입니다. StreamTokenizer는 slashStarComments()와 slashSlashComments()를 가지고 있기 때문에 주석과 코드가없는 라인을 걸러 내기 위해 사용할 것이라고 생각했습니다.StreamTokenizer를 사용하여 Java 주석 필터링
아래 프로그램은 주석이 아닌 각 줄에 대해 해당 줄에 줄 번호와 문자열 토큰을 인쇄합니다.
, Category.java을 그것은 시간의 가장을 작동하지만, 때로는하지 ... 예를 들어, 행 번호의 log4j에서 다음 소스 파일에 주석 행 144 태초 땐 생략 얻을 : http://logging.apache.org/log4j/1.2/xref/org/apache/log4j/Category.html 때때로 StreamTokenizer가 javadoc 주석 끝에있는 일부 행을 건너 뛴 것처럼 보입니다.
여기 내 코드입니다 : StreamTokenizer 그것처럼 행동하는 이유
import java.io.FileReader; import java.io.IOException; import java.io.Reader; import java.io.StreamTokenizer; public class LinesWithCodeFinder { public static void main(String[] args) throws IOException { String filePath = args[0]; Reader reader = new FileReader(filePath); StreamTokenizer tokenizer = new StreamTokenizer(reader); tokenizer.slashStarComments(true); tokenizer.slashSlashComments(true); tokenizer.eolIsSignificant(false); int ttype = 0; int lastline = -1; String s = ""; while (ttype != StreamTokenizer.TT_EOF) { ttype = tokenizer.nextToken(); int lineno = tokenizer.lineno(); String sval = ttype == StreamTokenizer.TT_WORD ? tokenizer.sval : ""; if (lineno == lastline) { s += " " + sval; } else { if (lastline != -1) System.out.println(lastline + "\t" + s); s = sval; } lastline = lineno; } } }
사람이 이해합니까?
의견을 필터링하는 방법에 대한 대안 아이디어는 인정 될 것입니다.