728x90

[실행결과]

[소스코드]

<!DOCTYPE html>
<html>
<head>
<title>데모</title>
<style>
    .divTbl     { display: table; width: 100%; }
    .divTblRow  { display: table-row; }
    .divTblCell { display: table-cell; border: 1px solid #999999; padding: 3px 10px; }
    button   { line-height: 17px; margin-top: 10px; }
    textarea { height: 314px; width: 615px; position: fixed; }
</style>
<script src="https://code.jquery.com/jquery-2.1.0.min.js" integrity="sha256-8oQ1OnzE2X9v4gpRVRMb1DWHoPHJilbur1LP9ykQ9H0=" crossorigin="anonymous"></script>
<script>
var com = {
    utils : {}
};

com.utils = {
    
    /**
     * @description 전화번호 포멧으로 리턴한다. ( /2~3/ - /3~4/ - /4/ )
     * @param {string} value 값
     * @return {string} 전화번호 포멧이 적용된 문자열
     */
    telFormat: function ( obj ) {
        var s = obj.value;
        var result = '';
        var numArray = new Array();

        if (s) {
            s = s.replace(/[^0-9]/g, "");

            if( s.startsWith('02') ){
                numArray.push(s.substr(0, 2));
                s = s.substring(2);
            }else{
                numArray.push(s.substr(0, 3));
                s = s.substring(3);
            }

            if( s.length == 7 ){
                numArray.push(s.substr(0, 3));
                numArray.push(s.substr(3));
            }else{
                if( s.length > 8 ){
                    s = s.substring(0, 8);
                }
                numArray.push(s.substr(0, 4));
                numArray.push(s.substr(4));
            }

            result = numArray.filter((val) => val).join("-");

        } else {
            result = s;
        }

        // Log
        $('#txtLog').append('입력값 : |' + obj.value + '| >> 출력값 : |' + result + '| \n'); 

        obj.value = result;
    }

};
</script>
</head>
<body>
<h1>전화번호 포멧 처리</h1>
<div class="divTbl" style="height:330px;">
    <div class="divTblRow">
        <div class="divTblCell" style="width:200px;">

            <input type="text" id="tel" name="tel" onkeyup="com.utils.telFormat(this)" value=""><br/>
            <input type="text" id="tel" name="tel" onkeyup="com.utils.telFormat(this)" value=""><br/>

        </div>
        <div class="divTblCell" style="width:500px">
            <textarea id='txtLog'></textarea>
        </div>
    </div>
<div>
</body>
</html>

[첨부파일]

telFormat.html
0.00MB

 

728x90
반응형
728x90

1. Sections of code should not be commented out.

2. This block of commented-out lines of code should be removed.

[오류내용]

// CASE 1
/* resultMap.put("RESULT_CD", output.get("result_cd")); */

// CASE 2
/*
	for(int i=0; i<10; i++){
    	...~~~~~~
        ...~~~~~~~~~
    }
 */

// CASE 3
/*
	resultMap.put(RESULT_MSG, output.get("result_msg"));
	// 정상적으로 API가 성공한 경우
	if(output.get("result_cd").equals(RESULT_CODE_200)) {
		resultMap.put("STATUS", output.get("status"));
	} 
 */

[해결방법]

프로그래밍 주석은 삭제처리하면 된다.

이유는 납득이 안간다. ㅋㅋ

쓰레기 코드가 있어서 좋을건 없지만 지우면 된다.

 

728x90
반응형
728x90

1. Source files should not have any duplicated blocks.

2. This block of commented-out lines of code should be removed.

[오류내용]

// CASE 1
/* resultMap.put("RESULT_CD", output.get("result_cd")); */

// CASE 2
/*
	for(int i=0; i<10; i++){
    	...~~~~~~
        ...~~~~~~~~~
    }
 */

// CASE 3
/*
	resultMap.put(RESULT_MSG, output.get("result_msg"));
	// 정상적으로 API가 성공한 경우
	if(output.get("result_cd").equals(RESULT_CODE_200)) {
		resultMap.put("STATUS", output.get("status"));
	} 
 */

[해결방법]

프로그래밍 주석은 삭제처리하면 된다.

이유는 납득이 안간다. ㅋㅋ

쓰레기 코드가 있어서 좋을건 없지만 지우면 된다.

 

728x90
반응형
728x90

1. Modifiers should be declared in the correct order.

2. Reorder the modifiers to comply with the Java Language Specification.

[오류내용]

// CASE 1
private final static String DS_SEARCH = "dsSearch";

// CASE 2
final static String DS_SEARCH = "dsSearch";

// CASE 3
final String DS_SEARCH = "dsSearch";

[해결방법]

자바에서는 표준문법을 따르길 원하며 위와 같이 썼을 경우 문제가 발생되지 않은 경우도 있지만 프로그래밍의 가독성을 위해서라도 아래와 같은 순서대로 선언해서 쓰기를 권장한다.

  1. Annotations
  2. public
  3. protected
  4. private
  5. abstract
  6. static
  7. final
  8. transient
  9. volatile
  10. synchronized
  11. native
  12. strictfp
// CASE 1
private static final String DS_SEARCH = "dsSearch";

// CASE 2
public String DS_SEARCH = "dsSearch";

// CASE 3
private String DS_SEARCH = "dsSearch";

 

아래 링크도 참고하시면 좋을듯..

https://sealove3904.tistory.com/m/30

 

[소나큐브] Field names should comply with a naming convention

[오류내용] 아래 오류 5가지 케이스에 모두 해당하는 동일한 해결방안으로 간다. 1. Rename this field "GET_TOKEN_URL" to match the regular expression '^[a-z][a-zA-Z0-9]*$'. 2. Make this final field static too. 3. Field names shoul

sealove3904.tistory.com

 

728x90
반응형
728x90

[오류내용]

Immediately return this expression instead of assigning it to the temporary variable "result".
Local variables should not be declared and then immediately returned or thrown

[해결방법]

return xxxxxAppService.selectList("XXXX.selectHolidayList", paramDto);

 

728x90
반응형
728x90

[오류내용]

Null pointers should not be dereferenced
A "NullPointerException" could be thrown; "map" is nullable here.

[해결방법]

		HashMap<String, Object> map = new HashMap<>(); 
		
		if(dsList.getRowCount() > 0) {    //공지사항 수신팀 등록
			map = (HashMap<String, Object>) dsList.getRowToMap(0);
			resultCount += commonAppService.insert("AFSZ2030F00.savePwiImtmL",map);
		}
		
		String pwiImtrNo = StringUtil.nvl(map.get("PWI_IMTR_NO"), "");  //공지사항 번호

 

프로젝트마다 Object 나 String 변수 Null 체크하는 유틸을 사용하면 된다.

물론 오픈소스 사용도 가능하다.

728x90
반응형
728x90

[오류내용]

Remove this unused import 'javax.transaction.Transactional'.
Unnecessary imports should be removed.

[해결방법]

해당 클래스에서 사용하지 않은 import 이므로 라인 삭제로 해결하면 된다.

 

 

 

728x90
반응형
728x90

[오류내용]

Format specifiers should be used instead of string concatenation.

Printf-style format strings should be used correctly.

 

[해결방안]

CASE 1 : 

logger.debug( "ifKey1 : {}", ifKey2 );

CASE 2 : 

System.out.println( String.format("ifKey1 : %s", ifKey2) );

 

 

 

 

 

slf4j Logger 사용법은 아래 링크 참고하길 바란다.

https://www.slf4j.org/api/org/slf4j/helpers/MessageFormatter.html

 

MessageFormatter (SLF4J 2.0.1 API)

Formats messages according to very simple substitution rules. Substitutions can be made 1, 2 or more arguments. For example, MessageFormatter.format("Hi {}.", "there") will return the string "Hi there.". The {} pair is called the formatting anchor. It serv

www.slf4j.org

 

String.format 관련 자세한 사용법은 아래 링크 참고하길 바란다.

https://sealove3904.tistory.com/31?category=968915 

 

String.format() 사용방법

API 문서를 번역하면 지정된 형식 문자열과 인수를 사용하여 형식이 지정된 문자열을 반환합니다. 반환한 로케일 항상 Locale.getDefault() 입니다. [실행결과] [첨부파일] 더 자세한 내용은 아래 링크

sealove3904.tistory.com

 

 

728x90
반응형
728x90

[오류내용]

Use isEmpty() to check whether the collection is empty or not.

Collection.isEmpty() should be used to test for emptiness

 

[해결방안]

로직상으로는 위와 같이 체크해도 문제는 없었으나  size() 로 체크할 경우 시간비용이 많이 든다고 한다.

ArrayList 의 isEmpty() 를 사용해보았으나 list 값이 null 일 경우 java.lang.NullPointerException 이 발생했다.

 

아파치에서 제공해주는 모듈(org.apache.commons.collections.CollectionUtils)을 사용해서 테스트하니 list 가 null, list.size == 0 일 경우 모두 체크해주었다.

 

수정된 코드는 아래와 같이 하면 된다.

if( !CollectionUtils.isEmpty(list) ) {

    ~~~~~~~~~~~

}

 

 

728x90
반응형

+ Recent posts