Как можно было бы измерить размер проекта JSP? - PullRequest
3 голосов
/ 11 октября 2011

Учитывая существующий проект JSP, я хотел бы почувствовать сложность / размер части «вида» проекта. Вот что я сделал до сих пор:

  • Получил список JSP, которые были скомпилированы с рабочего сервера за последние x месяцев (что исключает «мертвые» jsps).
  • Написал быстрый сканер, чтобы найти файлы фрагментов JSP, импортированные в скомпилированные страницы.
  • Вытащил размер файла и отметку времени из файловой системы.

Итак, теперь у меня есть список страниц и фрагментов, импортированных на эти страницы, а также их размер и время последней компиляции и изменения.

Но мне действительно нужно знать, насколько сложна страница; на некоторых из этих страниц много Java-кода. Это большой проект, поэтому просмотр каждой страницы и размера будет утомительным и, возможно, не таким точным.

Я собирался написать другой сканер, который измерял бы код между <% и%>, но мне было интересно, есть ли какой-нибудь генератор метрик, который уже мог бы это сделать. Я хотел бы, чтобы он выводил, насколько «большой» была страница и насколько «большим» был код на странице. Смысл в том, чтобы отделить маленькие, средние, большие и огромные страницы, поэтому абсолютное измерение менее важно, чем относительное.

EDIT: Написал другой сканер для подсчета количества строк JavaScript, строк Java (Scriptlet), строк HTML и случаев использования taglib. Таким образом, используя результаты сканера, у меня есть некоторые параметры, которые указывают на «сложность». Не очень чисто, но пока все нормально.

1 Ответ

1 голос
/ 12 октября 2011

Итак, проблема в том, что у вас есть разброс кода Java, вкрапленный в html, поэтому никакой стандартный инструмент метрик работать не будет.

Не совсем в готовом виде, но наша Система поиска исходного кода может подойти довольно близко. Это инструмент для поиска больших баз кода путем индексации исходного кода с использованием лексического точного извлечения языка. Здесь уместно то, что он вычисляет SLOC, количество комментариев, показатели Halstead и Cyclomatic для файлов, которые он индексирует, поэтому вы получаете метрики, если просто игнорируете функцию поиска. Метрики генерируются в файл XML (с одной «записью» на исходный файл), поэтому вы можете выполнять с ними любую дальнейшую обработку. См. Обсуждение показателей на связанной веб-странице.

Хотя у нас есть лексер JSP, он еще не тестировался с поисковой системой. Мы создали десятки лексеров, поэтому нам должно быть довольно легко это сделать (и мы будем рады это сделать). Это даст ответ, который вы хотите получить напрямую.

Если вы не хотите идти по этому пути, вы можете просто реализовать идею извлечения кода между <% и%>, выгрузки его в файлы, параллельные исходным файлам JSP, и передайте этот код поисковой системе через его (производственный) экстрактор лексемы Java для поисковой системы и получите ваши метрики таким образом. Лексеры очень надежны в отношении искаженных файлов, поэтому тот факт, что извлеченные фрагменты Java в совокупности могут не быть вполне законными, не будет беспокоить это немного.

...