создать список исходных файлов, не зарегистрированных ни в одном проекте - PullRequest
0 голосов
/ 19 апреля 2011

Существует большое решение MSVC c ++. Состоит из десятков проектов.
Как я могу создать список файлов .h, .cpp, которые нарушают одно из следующих правил согласованности:
- файл (.cpp, .h) существует, но не зарегистрирован ни в одном проекте
- файл (.cpp, .h) включен, но не зарегистрирован в проекте
- проект регистрирует исходный файл, который не находится в каталоге проектов

Каталог решения прост. Это одноуровневый набор каталогов в базе решений dir, каждый каталог - это один проект, если это помогает.

Ответы [ 2 ]

1 голос
/ 21 апреля 2011

Единственное решение, которое вам нужно сделать, это написать сценарий, чтобы пройтись по всем каталогам вашего проекта и прочитать все ваши файлы .vcproj (файлы, подобные XML).

Если вы используете Python,Я советую вам использовать модули xml.dom и xml.dom.minidom для чтения файлов .vcproj и функции os.walk для просмотра каталогов вашего проекта.

Необходимые данные для прототипа файла .vcprojдля вас это:

<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioProject Name=......>
  <Files>
    <Filter Filter="cpp;c;cc;cxx;........>
      <File RelativePath="YOUR.cpp file here"/>
      ...
    </Filter>
    <Filter Filter="h;hpp;hxx;........>
      <File RelativePath="YOUR.h file here"/>
      ...
    </Filter>
  </Files>
</VisualStudioProject>
1 голос
/ 20 апреля 2011

Какую версию VS вы используете?

Не уверен, что вы подразумеваете под "зарегистрированным в любом проекте", но вот отправная точка: вы можете получить список всех файлов .h и .cpp, выполнив (рекурсивные) списки каталогов из корневого каталога.Поскольку файлы решения и проекта представляют собой просто файлы .xml (по крайней мере, в более поздних версиях VS), вы можете просто использовать регулярные выражения для извлечения всех ссылочных файлов .h и .cpp, а затем перекрестной ссылки на список, который вы получили, делая каталогсписки с теми, которые вы можете анализировать из файлов проекта.В вашем случае ваша простая структура каталогов делает поиск немного проще.

Если под вторым пунктом вы подразумеваете «включенный из другого источника или заголовка», то, я думаю, вам нужно прочитать все файлы .h и .cpp ивыполните поиск операторов #include, но это сделает программу немного более сложной.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...