Добавление одного и того же комментария к каждому файлу кода в решении Visual Studio - PullRequest
2 голосов
/ 24 декабря 2008

Справочная информация. Мы используем VS 2008 и выполняем обновление с TFS 2005 до 2008.

У нас есть решение, которое содержит несколько проектов и в целом содержит сотни файлов кода. Мы хотим добавить один и тот же текст в качестве комментария ко всем этим файлам (сообщение об авторских правах). Кто-нибудь знает быстрый / легкий / эффективный способ сделать это? Кроме того, есть ли способ сделать это через TFS, чтобы у нас не было проверки и проверки каждого файла?

Я нашел некоторый код в CodeProject для создания макроса, который делает это, но вы должны открывать каждый файл отдельно, а затем запускать макрос для каждого, чего мы надеялись избежать.

Спасибо.

Ответы [ 5 ]

2 голосов
/ 24 декабря 2008

Для вас, ребята, должно быть тривиально написать простую программу, которая перебирает все каталоги и все файлы кода (при условии * .cs или тому подобное) и добавляет текст в начало.

На его сборку, тестирование и запуск требуется менее 20 минут.

Что касается TFS, просто выполните команду извлечения из верхней части дерева. Он проверит каждый файл в системе контроля версий. Когда вы закончите, вы также можете зарегистрироваться сверху.

Предполагая, что C #, посмотрите на System.IO.Directory.GetDirectories () ...

0 голосов
/ 08 сентября 2011

У меня есть опубликованный код , который делает именно то, что вы пытаетесь выполнить в 20 строках.

Ссылка на этот код включена ниже:


 1:         static void Main(string[] args)
 2:         {
 3:             string path = "C:\\...TopLevelFolder";
 4:             string copyright = "//Copyright © 2011 Rex Cardan, Ph.D";
 5:             string[] files = Directory.GetFiles(path, "*.cs",
 6:                                          SearchOption.AllDirectories);
 7:             foreach (string file in files)
 8:             {
 9:                 if (file.Split('\\')[file.Split('\\').Length-1]!= "AssemblyInfo.cs")
 10:                 {
 11:                     using (StreamWriter sw = File.AppendText(file))
 12:                     {
 13:                         sw.WriteLine("\r\n");
 14:                         sw.WriteLine(copyright);
 15:                         //Normalize Line Endings
 16:                         sw.WriteLine("\r\n");
 17:                     }
 18:                 }
 19:             }
 20:         }

0 голосов
/ 29 декабря 2008

[Есть ли способ сделать это через TFS, чтобы у нас не было проверки и проверки каждого файла?

Это хорошая идея, чтобы это изменение было частью истории изменений файлов. Итак, вы do хотите проверить и проверить все файлы.

Сообщение в блоге Кевина Пилч-Биссона " Форматирование всех файлов C # в решении " является хорошим ресурсом. Вы можете изменить этот алгоритм для внесения изменений.

0 голосов
/ 24 декабря 2008

Если у вас установлен Cygwin , вы можете использовать следующий скрипт Bash:

# Process all .cpp and .h files under the directory tree at $PROJECTROOT
# To add other file types, add more "-o -name \*.ext" clauses.
# $COPYRIGHTFILE is the file containing your copyright message
COPYRIGHTLENGTH=$(wc -l $COPYRIGHTFILE)
for file in $(find $PROJECTROOT -name \*.cpp -o -name \*.h); do
    if diff <(head -n $COPYRIGHTLENGTH $file) $COPYRIGHTFILE; then
        (cat $COPYRIGHTFILE; cat $file) > /tmp/file
        mv /tmp/file $file
    fi
done

Он находит каждый файл .cpp или .h в дереве каталогов $ PROJECTROOT, сравнивает начало с сообщением об авторских правах, и, если оно отличается, добавляет авторские права на файл через временный файл.

ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: не проверено, сначала протестируйте и используйте на свой страх и риск.

0 голосов
/ 24 декабря 2008

Я думаю, что один из подходов (благодаря главе 3 «Прагматический программист» - манипулирование текстом) - это создание сценария, который выполняет эту работу за вас, может быть, Python, PowerShell или Perl.

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