Подсчет количества строк в тестовых классах
Я разрабатываю инструмент, который распознает тестовые классы и подсчитывает количество строк в этих классах. Инструмент также посчитает строки бизнес-кода и сравнит оба результата, вот мой код:
for (File f : list) {
if (f.isDirectory()) {
walk(f.getAbsolutePath());
}
if (f.getName().endsWith(".java")) {
System.out.println("File:" + f.getName());
countFiles++;
Scanner testScanner = new Scanner(f);
while (testScanner.hasNextLine()) {
String test = testScanner.nextLine();
if (test.contains("org.junit") || test.contains("org.mockito")) {
System.out.println("this is a test class");
testCounter++;
break;
}
}
Scanner sc2 = new Scanner(f);
while (sc2.hasNextLine()) {
count++;
Подсчет бизнес-кода с использованием (count++) работает отлично, но подсчет количества кода в тестовых классах не работает, используя (testCounter++), который возвращает количество тестовых классов, а не количество строк в этих классах! А что я могу сделать?
Спасибо
2 ответа
Предполагая, что вы хотите посчитать количество строк, которые содержат либо org.junit or org.mockito
тогда вы хотите сделать
while (testScanner.hasNextLine()) {
String test = testScanner.nextLine();
if (test.contains("org.junit") || test.contains("org.mockito"))
{
hasTestLines = true;
}
count++;
}
if (hasTestLines) {
System.out.println(String.format ("there were %d lines in file %s which also had org.junit||org.mockito",
count, f.getName());
}
else {
System.out.println(String.format ("there were %d lines in file %s which did NOT have org.junit||org.mockito",
count, f.getName());
}
Вы увеличиваете testCounter только тогда, когда сталкиваетесь со строками пакета 'org.junit' или 'org.mockito'. Найдя, вы увеличиваете и вырываетесь из цикла.
Конечно, вы не ожидаете, что каждая строка в коде будет содержать эти строки.