2016-04-08 18 views
1

Bazen, alan ek açıklamalarla çalıştırılırsa, lint yanlış uyarılar üretir. bilinen bir örnek için:Belirli durumları yok saymak için lint nasıl yapılandırılır?

@SerializedName("id") @Expose private Integer id; 

alan id sadece gson.fromJson ile atanır(). Böyle bir işlem tiftik için görünmez, dolayısıyla variable id is never assigned
uyarısı atıyor Bu nedenle, bu özel durumda, alanın atanmış olup olmadığını kontrol etmek için @SearializedName no'lu ek açıklığa sahipse, lütfen lint'i yapılandırmak istiyorum (lütfen @SuppressWarnings("unused") numaralı ham maddeyi önerme Her alan için manuel olarak ayarlanmalı ve eğer alan hiç kullanılmıyorsa, çekleri engelleyecektir)

cevap

2

Gson, çalışma zamanında gerçekleşen yansımayı kullanarak alanları serileştirir. Yani UnusedAssignment muayene aşağıdaki koşullardan herhangi biri değişkenleri bulur:

  • görevden sonra okunan geçmez değişken
  • değeri her zaman bir sonraki değişken okumadan önce başka atama yazılır
  • değişken başlatıcısı gereksizdir (yukarıdaki iki nedenden biri için) - değişken asla kullanılmaz. Bu özel muayene için uyarılar kurtulmak için

Sizin tek seçenek lint.xml güncelleyerek veya @SuppressWarnings("unused") aracılığıyla onları da bastırmaktır. Bu şeylerden herhangi birini yapmak istemiyorsanız, @SerializedName ek açıklamalarıyla alanları yok sayan bir custom Lint inspection yazmak mümkün olabilir.

Bu yaklaşımın dezavantajı, Gson tarafından serileştirilmemiş bir sınıfta @SerializedName kullanmak istiyorsanız, bir değişken kullanılmadığında artık bir uyarı almayacaksınız. Ayrıca, GSON model sınıflarınızın en üstüne @SuppressWarnings("unused") eklemekten çok daha karmaşıktır.

İlgili konular