2009-11-22 29 views
6

是否有一個工具告訴我在我的一個或多個屬性文件中有多餘的鍵和值。在屬性文件中查找重複鍵和值的工具

+1

而不是工具,您可能需要考慮集成測試。聽起來很奇怪,但我寫了一個(使用JUnit)來幫助防止屬性文件和我們的第三方翻譯人員出現問題。 – 2009-11-24 14:01:02

+0

簡單易用的方法..get codePro AnalytiX來自Google,它是一個eclipse插件。您可以審計您的代碼,它會在屬性文件中找到所有重複鍵。 – SPD 2011-12-29 21:27:20

+0

我發現了幾個月back.Thanks您的評論:)。 – 2011-12-31 22:25:19

回答

0

編寫一個文件可能是最簡單的:對於每個文件以及該文件中的每個屬性,將屬性鍵/值對放入Map中,但只有在確保該鍵尚未位於Map中之後纔可以。如果是,則打印出文件名,密鑰和兩個值。

+1

雅,我寫了一個groovy.But它更好地重用和創建,如果我們有一個。 – 2009-11-22 17:21:40

1

我不知道是否有現有的工具,但你應該能夠用你熟悉的語言編寫一個簡短的Java程序或腳本,應該立即做到這一點。那麼你也可以將它用於未來的使用。

快速谷歌搜索產生了以下http://www.javanb.com/netbeans/1/19793.html

這有一個GUI工具和腳本,將做到這一點。

+0

我也發現它,但似乎太舊 – 2009-11-22 17:22:20

+2

太舊了?你的意思是什麼?如果它有效,那麼它現在就可以運行。或者屬性文件格式有時會改變? – jitter 2009-11-22 17:36:28

4
/** 
* 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); 
    } 
} 
1

的NetBeans有一個sort line tools插件,它具有以除去重複項的選項。如果屬性排成一列,則可以很好地工作。

更重要的是,對屬性進行排序使得該文件更易讀。

相關問題