Подсчет различных строк в коде C # - PullRequest
6 голосов
/ 07 апреля 2011

Мне нужно оценить усилия по локализации, необходимые для устаревшего проекта.Я ищу инструмент, который я мог бы указать на каталог, и он будет:

  • Анализировать все * .cs файлы в структуре каталога
  • Извлечь все строковые литералы C # изкод
  • Подсчитать общее количество вхождений строк

Знаете ли вы какой-нибудь инструмент, который мог бы это сделать?Написание было бы просто, но если можно сэкономить время, то почему бы не сохранить его?

Ответы [ 4 ]

5 голосов
/ 07 апреля 2011

Используйте ILDASM для декомпиляции вашего .DLL / .EXE.

Я просто использую опции для дампа всего, и вы получаете файл .il с разделом «Строка пользователя»:

User Strings
-------------------------------------------------------
70000001 : (14) L"Starting up..."
7000001f : (12) L"progressBar1"
70000039 : (21) L"$this.BackgroundImage"
70000065 : (10) L"$this.Icon"
7000007b : ( 6) L"Splash"

Теперь, если вы хотите узнать, сколько раз используется определенная строка.Ищите «ldstr» следующим образом:

IL_003c:  /* 72   | (70)000001       */ ldstr      "Starting up..." /* 70000001 */

Я думаю, что это будет намного проще разобрать как C #.

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

Сделав быстрый поиск, я нашел следующий инструмент, который может или не может быть полезен для вас.

http://www.devincook.com/goldparser/

Я также нашел другого SO-пользователя, который пытался сделать что-то подобное.

Regex для анализа исходного кода C #, чтобы найти все строки

0 голосов
/ 07 апреля 2011

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

Если это так, то вы можете использовать решение локализации по умолчанию в .NET, то есть

resource.resx,

resource.fr.resx,

resources.es.resx

магазиныстроки для разных локалей.

Обновлено:

Реальная реализация зависит от архитектуры / технологии вашего проекта, файлы ресурсов не лучший способ сделать это, но этоЭто самый простой и рекомендуемый способ в .NET.

Как и в этой статье

Еще несколько учебных пособий Еще несколько уроков

0 голосов
/ 07 апреля 2011

Что ж, если у вас есть жестко закодированные строки, вы должны сначала знать, что вы делаете в i18n (их нетрудно кодировать может быть довольно болезненным).Еще одна проблема: вам нужно считать переводимые слова, а не отдельные строки, то есть входные данные для поставщиков переводов.И хотя строка может показаться дублированной, она может быть переведена по-разному в зависимости от контекста, поэтому вам не нужно заботиться о «различном», вам просто нужно сосчитать все слова ... Вот как работает локализация для каждогоопыт.

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