Overview
Correctness | |
40 | warning DefaultLocale: Implied default locale in case conversion |
7 | warning SimpleDateFormat: Implied locale in date format |
2 | error WrongConstant: Incorrect constant |
31 | error LongLogTag: Too Long Log Tags |
1 | warning GradleDependency: Obsolete Gradle Dependency |
Security | |
4 | warning TrustAllX509TrustManager: Insecure TLS/SSL trust manager |
Compliance | |
1 | error ExpiredTargetSdkVersion: TargetSdkVersion No Longer Supported |
Performance | |
11 | warning
Recycle: Missing recycle() calls |
1 | warning ObsoleteSdkInt: Obsolete SDK_INT Version Check |
2 | warning HandlerLeak: Handler reference leaks |
Usability:Icons | |
1 | warning IconMissingDensityFolder: Missing density folder |
Disabled Checks (38) |
Implied default locale in case conversion
../../src/main/java/com/artncore/commons/DataClasses.java:524:
521 { 522 NowPw += ConNowPw[i]; 523 } 524 return Double.parseDouble(String.format("%.0f", NowPw)); 525 } 526 527 /**../../src/main/java/com/artncore/commons/DataClasses.java:542:
539 NowPw += ConNowPw[i]; 540 } 541 NowPw += LightNowPw; 542 return Double.parseDouble(String.format("%.0f", NowPw)); 543 } 544 545 /**../../src/main/java/com/artncore/commons/DataClasses.java:1225:
1222 /** 디버깅 메시지 출력 */ 1223 public String ToDebugString() 1224 { 1225 if(bMinute30) return String.format("%d:30", Hour); 1226 else return String.format("%d:00", Hour); 1227 } 1228 }../../src/main/java/com/artncore/commons/DataClasses.java:1226:
1223 public String ToDebugString() 1224 { 1225 if(bMinute30) return String.format("%d:30", Hour); 1226 else return String.format("%d:00", Hour); 1227 } 1228 }../../src/main/java/com/artncore/commons/DataClasses.java:6189:
6186 String temp_time; 6187 if(time != null) 6188 { 6189 temp_time = String.format("%04d-%02d-%02d %02d:%02d:%02d",time.get(Calendar.YEAR),time.get(Calendar.MONTH)+1, time.get(Calendar.DAY_OF_MONTH),time.get(Calendar.HOUR_OF_DAY), time.get(Calendar.MINUTE), time.get(Calendar.SECOND)); 6190 } 6191 else 6192 {+ 35 More Occurrences...
DefaultLocale
Correctness
Warning
Priority 6/10
Implied locale in date format
../../src/main/java/org/apache/commons/net/ftp/parser/FTPTimestampParserImpl.java:118:
115 // e.g. if today is Jan 1 2001 and the short date is Feb 29 116 String year = Integer.toString(now.get(Calendar.YEAR)); 117 String timeStampStrPlusYear = timestampStr + " " + year; 118 SimpleDateFormat hackFormatter = new SimpleDateFormat(recentDateFormat.toPattern() + " yyyy", 119 recentDateFormat.getDateFormatSymbols()); 120 hackFormatter.setLenient(false); 121 hackFormatter.setTimeZone(recentDateFormat.getTimeZone());../../src/main/java/org/apache/commons/net/ftp/parser/FTPTimestampParserImpl.java:175:
172 */ 173 private void setDefaultDateFormat(String format) { 174 if (format != null) { 175 this.defaultDateFormat = new SimpleDateFormat(format); 176 this.defaultDateFormat.setLenient(false); 177 } 178 }../../src/main/java/org/apache/commons/net/ftp/parser/FTPTimestampParserImpl.java:196:
193 */ 194 private void setRecentDateFormat(String format) { 195 if (format != null) { 196 this.recentDateFormat = new SimpleDateFormat(format); 197 this.recentDateFormat.setLenient(false); 198 } 199 }../../src/main/java/org/apache/commons/net/ftp/parser/FTPTimestampParserImpl.java:274:
271 if (recentFormatString == null) { 272 this.recentDateFormat = null; 273 } else { 274 this.recentDateFormat = new SimpleDateFormat(recentFormatString, dfs); 275 this.recentDateFormat.setLenient(false); 276 }../../src/main/java/org/apache/commons/net/ftp/parser/FTPTimestampParserImpl.java:282:
279 if (defaultFormatString == null) { 280 throw new IllegalArgumentException("defaultFormatString cannot be null"); 281 } 282 this.defaultDateFormat = new SimpleDateFormat(defaultFormatString, dfs); 283 this.defaultDateFormat.setLenient(false); 284 285 setServerTimeZone(config.getServerTimeZoneId());../../src/main/java/org/apache/commons/net/ftp/parser/MLSxEntryParser.java:128:
125 // YYYYMMDDHHMMSS[.sss] 126 SimpleDateFormat sdf; // Not thread-safe 127 if (factvalue.contains(".")){ 128 sdf = new SimpleDateFormat("yyyyMMddHHmmss.SSS"); 129 } else { 130 sdf = new SimpleDateFormat("yyyyMMddHHmmss"); 131 }../../src/main/java/org/apache/commons/net/ftp/parser/MLSxEntryParser.java:130:
127 if (factvalue.contains(".")){ 128 sdf = new SimpleDateFormat("yyyyMMddHHmmss.SSS"); 129 } else { 130 sdf = new SimpleDateFormat("yyyyMMddHHmmss"); 131 } 132 TimeZone GMT = TimeZone.getTimeZone("GMT"); // both need to be set for the parse to work OK 133 sdf.setTimeZone(GMT);
SimpleDateFormat
Correctness
Warning
Priority 6/10
Incorrect constant
../../src/main/java/com/artncore/WallPadDataMgr/wallpaddbmgr.java:2552:
2549 { 2550 //e.printStackTrace(); 2551 LogUtil.errorLogInfo("", TAG, e); 2552 wdb = CTX.openOrCreateDatabase(dbpath, SQLiteDatabase.OPEN_READWRITE, null); 2553 wdb.setVersion(DatabaseVersion); 2554 if (wdb != null) 2555 {../../src/main/java/com/artncore/WallPadDataMgr/wallpaddbmgr.java:2593:
2590 //e.printStackTrace(); 2591 LogUtil.errorLogInfo("", TAG, e); 2592 //wdb = CTX.openOrCreateDatabase(dbpath, DBfalg, null); 2593 wdb = CTX.openOrCreateDatabase(dbpath, SQLiteDatabase.OPEN_READWRITE, null); 2594 wdb.setVersion(DatabaseVersion); 2595 if (wdb != null) 2596 {
WrongConstant
Correctness
Error
Priority 6/10
Too Long Log Tags
../../src/main/java/com/artncore/WallPadDataMgr/WallpadConcentAccSaveData.java:141:
138 int valConCount = Integer.parseInt(AllData[0]); 139 if(valConCount != concount) 140 { 141 Log.w(TAG, "[ConcentAccDataClass] Concent Count Not Match !!!"); 142 return; 143 }../../src/main/java/com/artncore/WallPadDataMgr/WallpadConcentAccSaveData.java:147:
144 145 if( (AllData.length - 1) != (valConCount*2) ) 146 { 147 Log.w(TAG, "[ConcentAccDataClass] Concent Data LEN Not Match !!!"); 148 return; 149 }../../src/main/java/com/artncore/WallPadDataMgr/WallpadConcentAccSaveData.java:192:
189 // 1.1. id 190 if((id <= 0) || (id > 15)) 191 { 192 Log.w(TAG, "[Update] Param - id Out Of Range !!! (id:" + id + ")"); 193 return -1; 194 }../../src/main/java/com/artncore/WallPadDataMgr/WallpadConcentAccSaveData.java:316:
313 { 314 if(Data == null) 315 { 316 Log.w(TAG, "[Set_ConAccDbData] Concent.Data NULL !!!"); 317 return APIErrorCode.INVALIDPARAMETER; 318 }../../src/main/java/com/artncore/WallPadDataMgr/WallpadConcentAccSaveData.java:339:
336 values.put("concentcount", ConcentCount); 337 values.put("value", AccStr); 338 339 Log.w(TAG, "[Set_ConAccDbData] Update - num : " + seqnum); 340 Log.w(TAG, "[Set_ConAccDbData] Update - ConcentCount : " + ConcentCount); 341 Log.w(TAG, "[Set_ConAccDbData] Update - value : " + AccStr);+ 26 More Occurrences...
LongLogTag
Correctness
Error
Priority 5/10
Obsolete Gradle Dependency
../../build.gradle:17:
Does not apply to variants: release_secured
14 * of the Gradle plugin for the buildscript. 15 */ 16 dependencies { 17 classpath 'com.android.tools.build:gradle:4.1.1' 18 } 19 } 20Applies to variants: debug, release
Does not apply to variants: release_secured
GradleDependency
Correctness
Warning
Priority 4/10
Insecure TLS/SSL trust manager
../../src/main/java/org/apache/commons/net/ftp/FTPSTrustManager.java:39:
36 * No-op 37 */ 38 // @Override 39 public void checkClientTrusted(X509Certificate[] certificates, String authType) 40 { 41 return; 42 }../../src/main/java/kr/co/icontrols/sslapi/SSLClient.java:111:
108 return myTrustedAnchors; 109 } 110 @Override 111 public void checkClientTrusted(X509Certificate[] certs, String authType) {} 112 @Override 113 public void checkServerTrusted(X509Certificate[] certs, String authType) {} 114 }../../src/main/java/kr/co/icontrols/sslapi/SSLClient.java:113:
110 @Override 111 public void checkClientTrusted(X509Certificate[] certs, String authType) {} 112 @Override 113 public void checkServerTrusted(X509Certificate[] certs, String authType) {} 114 } 115 };../../src/main/java/org/apache/commons/net/util/TrustManagerUtils.java:49:
46 * Never generates a CertificateException. 47 */ 48 // @Override 49 public void checkClientTrusted(X509Certificate[] certificates, String authType) 50 { 51 return; 52 }
TrustAllX509TrustManager
Security
Warning
Priority 6/10
TargetSdkVersion No Longer Supported
../../build.gradle:35:
32 33 defaultConfig { 34 minSdkVersion 11 35 targetSdkVersion 14 36 } 37 38 sourceSets {
ExpiredTargetSdkVersion
Compliance
Fatal
Priority 8/10
Missing recycle() calls
../../src/main/java/com/artncore/WallPadDataMgr/WallPadRemoteCallUserData.java:72:
69 // 컬럼 개수 (방문객원격통화 1차/2차 테이블 비교) 70 String query = "select * from " + RemoteCallUserTBL + ";"; 71 if (wdb != null) { 72 Cursor cursor = wdb.rawQuery(query, null); 73 int nColumnCnt = cursor.getColumnCount(); 74 Log.i(TAG, "[WallPadRemoteCallUserData] nColumnCnt [" + nColumnCnt + "]"); 75 for (int i = 0; i < nColumnCnt; i++) {../../src/main/java/com/artncore/WallPadDataMgr/WallpadDevStatus.java:66:
63 String query = "select type from "+DevStatusItemTBL+" group by type;"; 64 if(wdb!=null) 65 { 66 Cursor cursor = wdb.rawQuery(query, null); 67 String retval = ""; 68 int count = 0; 69 while (cursor.moveToNext())../../src/main/java/com/artncore/WallPadDataMgr/WallpadDevStatus.java:93:
90 //create table " + SettingTBL + " (type text, name text unique, cnt INTEGER, value text);"; 91 String query = "select count() from "+DevStatusItemTBL+" ;"; 92 if(wdb!=null) { 93 Cursor cursor = wdb.rawQuery(query, null); 94 95 if (cursor.moveToNext()) { 96 return cursor.getInt(0);../../src/main/java/com/artncore/WallPadDataMgr/WallpadDevStatus.java:118:
115 String query = "select name from "+DevStatusItemTBL+" where type = \""+groupname+"\";"; 116 if(wdb!=null) 117 { 118 Cursor cursor = wdb.rawQuery(query, null); 119 try 120 { 121 String retval = "";../../src/main/java/com/artncore/WallPadDataMgr/WallpadScheduleData.java:245:
242 String query = "select seqnum, inqnum, inqttype, inqctype, inqatype, inqitype, inqyear, inqmonth, inqday, inqhour, inqmsg from "+ScheduleTBL+" order by seqnum asc;"; 243 if(wdb!=null) 244 { 245 Cursor cursor = wdb.rawQuery(query, null); 246 247 while (cursor.moveToNext()) 248 {+ 6 More Occurrences...
Recycle
Performance
Warning
Priority 7/10
Obsolete SDK_INT Version Check
ObsoleteSdkInt
Performance
Warning
Priority 6/10
Handler reference leaks
../../src/main/java/com/artncore/wallpadapi/WallPadAPI.java:1885:
1882 1883 LoadingDriver(nLightType); 1884 1885 BlinkHandler = new Handler() 1886 { 1887 @SuppressLint("HandlerLeak") 1888 public void handleMessage(Message msg)../../src/main/java/com/artncore/wallpadimap/WallPadiMAPNotifyAPIBlock.java:79:
76 { 77 Looper.prepare(); 78 mLoop = Looper.myLooper(); 79 Mhandler = new Handler(){ 80 public void handleMessage(Message msg) 81 {
HandlerLeak
Performance
Warning
Priority 4/10
Missing density folder
IconMissingDensityFolder
Icons
Usability
Warning
Priority 3/10
Disabled Checks
One or more issues were not run by lint, either
because the check is not enabled by default, or because
it was disabled with a command line flag or via one or
more
lint.xml
configuration files in the project directories.
Suppressing Warnings and Errors
Lint errors can be suppressed in a variety of ways:
1. With a
2. With a
3. With a //noinspection comment in the source code
4. With ignore flags specified in the
5. With a
6. With a
7. With the --ignore flag passed to lint.
To suppress a lint warning with an annotation, add a
To suppress a lint warning with a comment, add a
To suppress a lint warning in an XML file, add a
To suppress a lint warning in a
Here we specify a comma separated list of issue id's after the disable command. You can also use
To suppress lint warnings with a configuration XML file, create a file named
The format of the
To suppress lint checks from the command line, pass the --ignore flag with a comma separated list of ids to be suppressed, such as:
For more information, see https://developer.android.com/studio/write/lint.html#config
1. With a
@SuppressLint
annotation in the Java code2. With a
tools:ignore
attribute in the XML file3. With a //noinspection comment in the source code
4. With ignore flags specified in the
build.gradle
file, as explained below5. With a
lint.xml
configuration file in the project6. With a
lint.xml
configuration file passed to lint via the --config flag7. With the --ignore flag passed to lint.
To suppress a lint warning with an annotation, add a
@SuppressLint("id")
annotation on the class, method or variable declaration closest to the warning instance you want to disable. The id can be one or more issue id's, such as "UnusedResources"
or {"UnusedResources","UnusedIds"}
, or it can be "all"
to suppress all lint warnings in the given scope.To suppress a lint warning with a comment, add a
//noinspection id
comment on the line before the statement with the error.To suppress a lint warning in an XML file, add a
tools:ignore="id"
attribute on the element containing the error, or one of its surrounding elements. You also need to define the namespace for the tools prefix on the root element in your document, next to the xmlns:android
declaration:xmlns:tools="http://schemas.android.com/tools"
To suppress a lint warning in a
build.gradle
file, add a section like this:android { lintOptions { disable 'TypographyFractions','TypographyQuotes' } }
Here we specify a comma separated list of issue id's after the disable command. You can also use
warning
or error
instead of disable
to change the severity of issues.To suppress lint warnings with a configuration XML file, create a file named
lint.xml
and place it at the root directory of the module in which it applies.The format of the
lint.xml
file is something like the following:<?xml version="1.0" encoding="UTF-8"?> <lint> <!-- Ignore everything in the test source set --> <issue id="all"> <ignore path="\*/test/\*" /> </issue> <!-- Disable this given check in this project --> <issue id="IconMissingDensityFolder" severity="ignore" /> <!-- Ignore the ObsoleteLayoutParam issue in the given files --> <issue id="ObsoleteLayoutParam"> <ignore path="res/layout/activation.xml" /> <ignore path="res/layout-xlarge/activation.xml" /> <ignore regexp="(foo|bar)\.java" /> </issue> <!-- Ignore the UselessLeaf issue in the given file --> <issue id="UselessLeaf"> <ignore path="res/layout/main.xml" /> </issue> <!-- Change the severity of hardcoded strings to "error" --> <issue id="HardcodedText" severity="error" /> </lint>
To suppress lint checks from the command line, pass the --ignore flag with a comma separated list of ids to be suppressed, such as:
$ lint --ignore UnusedResources,UselessLeaf /my/project/path
For more information, see https://developer.android.com/studio/write/lint.html#config