Инструмент для поиска дубликатов ключей и значений в файле свойств
Есть ли инструмент, который сообщает мне избыточные ключи и значения, которые есть в моем файле одного или нескольких свойств.
6 ответов
Существует задача Ant RscBundleCheck, которая проверяет наличие дубликатов ключей в наборе файлов ресурсов:
http://rscbundlecheck.sourceforge.net/
Это был бы простой способ интегрировать проверку на наличие дублирующихся свойств в процесс сборки.
/**
* Purpose: Properties doesn't detect duplicate keys. So this exists.
* @author shaned
*/
package com.naehas.tests.configs;
import java.util.Properties;
import org.apache.log4j.Logger;
public class NaehasProperties extends Properties
{
private static final long serialVersionUID = 1L;
private static final Logger log = Logger.getLogger(NaehasProperties.class);
public NaehasProperties()
{
super();
}
/**
* @param defaults
*/
public NaehasProperties(Properties defaults)
{
super(defaults);
}
/**
* Overriding the HastTable put() so we can check for duplicates
*
*/
public synchronized Object put(Object key, Object value)
{
// Have we seen this key before?
//
if (get(key) != null)
{
StringBuffer message = new StringBuffer("Duplicate key found: " + key + " with value: " + value);
message.append(". Original value is: " + (String) get(key));
log.error(message.toString());
// Setting key to null will generate an exception and cause an exit.
// Can not change the signature by adding a throws as it's not compatible
// with HashTables put().
//
// If you commented out this line, you will see all the occurrences of the duplicate key
// as the put will overwrite the past encounter.
//
key = null;
}
return super.put(key, value);
}
}
Я не знаю, есть ли существующий инструмент, но вы должны быть в состоянии написать короткую Java-программу или скрипт на языке, который вам удобен, который должен сделать это в кратчайшие сроки. Тогда у вас также будет его для использования в будущем.
Быстрый поиск в Google дал следующее http://www.javanb.com/netbeans/1/19793.html
здесь есть инструмент с графическим интерфейсом и скрипт, который это сделает.
На Netbeans есть плагин инструментов линии сортировки, который имеет возможность удалять дубликаты. Работает отлично, если свойства являются одной подкладкой.
Более того, сортировка свойств делает этот файл более читабельным.
Проще всего написать один: для каждого файла и для каждого свойства в этом файле поместите пару ключ / значение свойства в карту, но только после того, как убедитесь, что ключа еще нет в карте. Если это так, распечатайте имя файла, ключ и два значения.
Если вы используете IDE, вы можете найти хороший инструмент среди их плагинов / функций.
Eclipse имеет плагин ResourceBundle Editor, который управляет файлами свойств:
http://www.eclipseplugincentral.com/Web_Links-index-req-viewlink-cid-331.html
IntelliJ IDEA 8 и выше также может управлять файлами свойств и проверять наличие дублирующихся записей.
Я использую два хороших инструмента
unival npm package: это инструмент командной строки для обнаружения повторяющихся ключей, значений или строк.
Команда npm для установки пакета:
npm i unival
unival extension: если вы используете vscode, это чрезвычайно полезное расширение для обнаружения дубликатов на лету.