Я разрабатываю инструмент для анализа и предоставления некоторой статистики о исходном коде других людей, инструмент сможет распознавать многие вещи в коде! Прямо сейчас я застрял на подсчете количества комментариев по коду, мой текущий код:Подсчитайте количество комментариев в java
public static void main(String[] args) {
String line = "";
int count = 0;
try {
BufferedReader br = new BufferedReader(new FileReader("comments.txt"));
while ((line = br.readLine()) != null) {
if (line.startsWith("//")) {
count++;
} else if (line.startsWith("/*")) {
count++;
while (!(line = br.readLine()).endsWith("'*\'")) {
count++;
break;
}
}
}
br.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
System.out.println("count=" + count);
}
Чтобы проверить код, я использую тестовый файл. Но код дает мне неправильный результат в обоих файлах, например; Я получаю три в следующем файле
Yes
//comment
yes
yes
/*
if
random
test
test
*/
Хотя ответ должен быть двух комментариев!
В следующем файле, он показывает мне, что у меня есть пять комментариев, а я до сих пор на самом деле есть два
Yes
//comment
yes
yes
/*
if
random
test
test
/*
*/
не ответ, но родственный: посмотрите на [Sonar] (http://www.sonarqube.org/) и [Codepro AnalytiX] (https://developers.google.com/java-dev-tools/codepro/doc/features/metrics/metrics) – Nivas
Ваш код не учитывает количество комментариев, но (пытается подсчитать) количество строк комментариев , '' '* \' "' Должен быть '' */"'. Кроме того, во внутреннем цикле вы не проверяете NULL-строки.Лучше придерживаться 1 цикла и установить логическое значение, чтобы указать, если вы находитесь внутри многострочного комментария '/ * .. * /'. – Kenney
Комментарии BTW могут появляться в любом месте в строке. на самом деле у вас может быть несколько комментариев по строке. –