2009-07-07 4 views
3

Существуют ли какие-либо инструменты (бесплатные/коммерческие), которые могут проверять приложение для интернационализации? (Или локализации-готовности, если вы предпочитаете)Инструмент статического анализа для выявления вопросов интернационализации

В первую очередь интересует:

Mulitlingual испытаний Осуществление

 
    Examples: 
    * [javascript] alert('Oops wrong choice!'); 
    * [java] String msg = resourcebundle.getString("key.x").concat("4"); 
    * [jdbc] String query=".. order by abc"; //should be NLS_SORT or equiv. 

Дата внедрения тестов

 
    Examples: 
    * SimpleDateFormat used without Locale 
    * Apache's DateFormatUtils used 

Числовые тесты реализации

 
    Examples: 
    * NumberFormat used without Locale 

тесты на JavaScript проверки

 
    Examples: 
    * [javascript] checkIsDecimal { //decimal point checked against "." } 
    * [javascript] hardcoded character range [A-z] 

Приветствия.

+0

Можете ли вы привести конкретный пример проверки для каждой из четырех категорий? –

+0

Я добавил несколько примеров с головы. Надеюсь, это поможет –

ответ

0

Я изучил анализаторы кода IntelliJ IDEA, и у него есть те, которые вы запросили. Это коммерческая среда разработки, специализирующаяся на Java, но также известна и на других языках.

http://www.jetbrains.com/idea/

+0

Возможно, я что-то пропустил: http://www.jetbrains.com/idea/documentation/inspections.jsp не делает баллы 3 и 4. –

1

Основываясь на ваших примерах, вы в основном хотят, чтобы диагностировать функции, которые производят выход, вход которого не каким-то образом интернационализированы.

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

Для случая jdbc вы хотите определить ограничения порядка , которые не являются языковыми.

Для различных дат, вы хотите, чтобы подпрограммы даты, которые , как известно, создают ответы на конкретные запросы.

Проверка javascript сложнее догадываться о намерениях; Предположите, что вы хотите диагностировать функции, которые известны для подключения к определенной локали; это похоже на дата. Для проверок диапазона вы хотите убрать что-либо , которое сравнивает символ с другим при меньшем или большем.

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

Почему вы не можете написать регулярное выражение для поиска (hueristically) для плохих случаев?

Для случая диапазона, вам просто нужно признать выражения в виде [ехр] < [буквальный символа] или [ехр] < [буквальной струны]. Регулярное выражение для поиска только "< '.+», Казалось бы адекватным

Есть ли общие случаи, что они пропустили бы

EDIT (от комментариев ниже:.?„Я использую регулярное выражение, но ...“) Если вы хотите инструмент, который глубже, чем regexp, вам довольно много нужно перейти к разбору языка, разрешению имени/типа и иметь анализ потока данных. Было бы полезно, поскольку вы хотите обрабатывать многочисленные (компьютерные) языки, инструмент должен быть многоязычным И, похоже, вы хотите настроить его для проверки на наличие конкретных случаев, касающихся вашей заявки.

DMS Software Reengineering Toolkit имеет все эти свойства, включая парсеры для Java, JavaScript и SQL. Он предназначен для настройки, , поэтому вам нужно сделать это заранее, чтобы использовать его.

+0

К сожалению, я использую регулярное выражение для поиска этих плохих случаев, но любил бы pmd, findbugs-тип программного обеспечения. Делает для хорошего компонента постоянной интеграции –

+0

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

2

Взгляните на Globalyzer - http://lingoport.com/globalyzer - как раз это инструмент для статического анализа кода, специально для интернационализации. Он также работает с различными языками программирования. Поддерживает обнаружение и коррекцию для встроенных строк (возможности экстернализации строк), потенциальные методы/функции/классы, связанные с локалью, в зависимости от языка программирования и требований, а также другие проблемы, такие как шаблоны программирования и встроенные изображения. Существуют стандартные «наборы правил», которые дают вам хороший старт, а затем вы можете настроить свои правила как для обнаружения, так и для фильтрации проблем. Кроме того, есть базовая база данных, которая помогает вам отслеживать или отслеживать проблемы i18n при работе с ними. Существует серверный компонент, в котором вы создаете и делитесь своими наборами правил с членами вашей команды, а затем с клиентами и клиентами командной строки, которые запускаются локально на вашем компьютере, для анализа вашего источника, поэтому вы не отправляете какой-либо код или не публикуете отчет на своей локальной машине.

+0

Интересный .. Можете ли вы подтвердить свою команду (исходя из вашего профиля, я предполагаю, что вы из lingoport), что он поймает все проблемы, перечисленные мной в моем вопросе. Я приму ваш ответ, отправлю подтверждение. –