KR101051600B1 - 아밥 소스코드의 코드 검사를 수행하는 코드검사 수행시스템 - Google Patents

아밥 소스코드의 코드 검사를 수행하는 코드검사 수행시스템 Download PDF

Info

Publication number
KR101051600B1
KR101051600B1 KR1020100028128A KR20100028128A KR101051600B1 KR 101051600 B1 KR101051600 B1 KR 101051600B1 KR 1020100028128 A KR1020100028128 A KR 1020100028128A KR 20100028128 A KR20100028128 A KR 20100028128A KR 101051600 B1 KR101051600 B1 KR 101051600B1
Authority
KR
South Korea
Prior art keywords
abab
code
source code
defect
symbol
Prior art date
Application number
KR1020100028128A
Other languages
English (en)
Inventor
이헌기
Original Assignee
주식회사 소프트 포 소프트
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 주식회사 소프트 포 소프트 filed Critical 주식회사 소프트 포 소프트
Priority to KR1020100028128A priority Critical patent/KR101051600B1/ko
Priority to US13/634,751 priority patent/US8875110B2/en
Priority to JP2013501169A priority patent/JP5791698B2/ja
Priority to CN201080065453.2A priority patent/CN102804147B/zh
Priority to AU2010350247A priority patent/AU2010350247B2/en
Priority to PCT/KR2010/002061 priority patent/WO2011122724A1/ko
Priority to EP20100849046 priority patent/EP2555117A4/en
Application granted granted Critical
Publication of KR101051600B1 publication Critical patent/KR101051600B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3604Software analysis for verifying properties of programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/75Structural analysis for program understanding

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Stored Programmes (AREA)
  • Debugging And Monitoring (AREA)

Abstract

본 발명은 아밥 소스코드의 코드 검사를 수행하는 코드검사 수행시스템에 관한 것으로서, 더욱 상세하게는 독일 SAP 회사에서 만든 ABAP/4 언어는 클라이언트 서버 환경인 SAP R/3 기반으로 기업의 전사적 자원관리패키지시스템(ERP, Enterprise Resource Planning) 등을 개발하는데 사용하는 4세대 언어이지만, Java 등의 4세대 언어와 다르게 아밥 프로그래밍에 대한 정형화된 대소문자 구별(Case-sensitive)과 코딩 포맷(Format)의 제한이 없어, 아밥 언어 및 SAP R/3에 대한 아밥 개발자의 오해, 오용 그리고 실수 등으로 발생하는 시스템 고장 및 정지, 데이터 손실 및 변형, 과대한 성능 저하, 기능의 틀린 행동 및 결과, 복잡한 코드 구조 및 철자 오류 등의 코딩 결함을 검사하여 아밥 어플리케이션의 유지보수성, 성능성, 정확성, 안정성 및 보안성 등을 신뢰할 수 있도록 하는 아밥(ABAP) 소스코드의 코드 검사를 수행하는 코드검사 수행시스템에 관한 것이다.
본 발명인 아밥 소스코드의 코드 검사를 수행하는 코드검사 수행시스템은,
코드 검사 대상인 아밥 소스 코드를 어휘, 구문 및 의미 분석하여 각각 추상구문트리와 심볼테이블의 자료구조에 저장하는 아밥소스코드문법분석부와;
아밥규칙관리모듈에서 선택된 코딩 규칙들에 관련된 소스코드 및 문법구조를 상기 자료구조 기반으로 프로그램경로분석모듈에서 코드 결함을 검사하여 위반된 코드결함을 수정할 수 있도록 코드결함 보고서를 생성하는 아밥소스코드결함검사부;를 포함하여 구성되는 것을 특징으로 한다.
본 발명을 통해 아밥 소프트웨어에 포함되어 있는 다양한 코드 결함들을 소스코드만으로 정적 분석하여 실제 실행시 발생할 수 있는 코드 결함을 사전에 탐지할 수 있는 효과를 제공하게 된다.

Description

아밥 소스코드의 코드 검사를 수행하는 코드검사 수행시스템{Systems for Performing Code Inspection on ABAP Source Code.}
본 발명은 아밥 소스코드의 코드 검사를 수행하는 코드검사 수행시스템에 관한 것으로서, 더욱 상세하게는 독일 SAP 회사에서 만든 ABAP/4 언어는 클라이언트 서버 환경인 SAP R/3 기반으로 기업의 전사적 자원관리패키지시스템(ERP, Enterprise Resource Planning) 등을 개발하는데 사용하는 4세대 언어이지만, Java 등의 4세대 언어와 다르게 아밥 프로그래밍에 대한 정형화된 대소문자 구별(Case-sensitive)과 코딩 포맷(Format)의 제한이 없어, 아밥 언어 및 SAP R/3에 대한 아밥 개발자의 오해, 오용 그리고 실수 등으로 발생하는 시스템 고장 및 정지, 데이터 손실 및 변형, 과대한 성능 저하, 기능의 틀린 행동 및 결과, 복잡한 코드 구조 및 철자 오류 등의 코딩 결함을 검사하여 아밥 어플리케이션의 유지보수성, 성능성, 정확성, 안정성 및 보안성 등을 신뢰할 수 있도록 하는 아밥(ABAP) 소스코드의 코드 검사를 수행하는 코드검사 수행시스템에 관한 것이다.
아밥 소프트웨어에 포함되어 있는 다양한 코드 결함들을 검사할 수 있는 방법에는 소스 코드만으로 정적 분석하여 실제 실행시 발생할 수 있는 코드 결함을 사전에 탐지하는 코드검사와 소스코드를 실행하여 그 결과값을 기반으로 코드 결함을 찾는 테스팅 기법이 있다.
코드 검사 기법은 테스팅 이전에 코드 결함을 제거함으로써 개발기간 단축, 테스팅의 비용 절감 및 기간 단축할 뿐만 아니라 일관성이 있는 코딩 포맷기반 어플리케이션 개발로 향후 유지보수 비용을 절감할 수 있기 때문에 특히 효율적이다.
종래의 아밥 코드검사는 코드 개발 후(컴파일 후) 코드결함을 수작업으로 코드를 검토하는 방법과 프로그램을 실행하여 실시간으로 보안 취약점을 찾아주는 테스팅 기법인 코드 프로파일러(Code Profiler)가 있으나, 코드 개발 단계에서(컴파일 이전) 코드를 실행하지 않고 아밥 코드 그 자체만으로 아밥 어플리케이션의 유지보수성, 성능성, 정확성, 안정성 및 보안성 등에 위반한 코드들을 탐지하지는 못하고 있다.
따라서 본 발명은 상기와 같은 종래 기술의 문제점을 감안하여 제안된 것으로서, 본 발명의 목적은 아밥 소스코드를 미리 정의된 아밥 문법(BNF)에 따라서 어휘 및 구문 분석하여 추상구문트리의 트리 자료구조를 구축하고, 추상구문트리에서 의미 분석하여 심볼테이블의 테이블 자료구조를 구축하는데 있다.
본 발명의 다른 목적은 아밥 코드검사 도구의 소스코드 결함검사는 다양한 코딩 규칙들에 관련된 소스코드의 결함들을 상기에서 구축된 테이블 및 트리 자료구조기반으로 검사하여 위반된 코드결함을 수정할 수 있도록 코드결함 보고서를 제공하는데 그 목적이 있다.
본 발명이 해결하고자 하는 과제를 달성하기 위하여,
본 발명의 일실시예에 따른 아밥 소스코드의 코드 검사를 수행하는 코드검사 수행시스템은,
코드 검사 대상인 아밥 소스 코드를 어휘, 구문 및 의미 분석하여 각각 추상구문트리와 심볼테이블의 자료구조에 저장하는 아밥소스코드문법분석부와;
아밥규칙관리모듈에서 선택된 코딩 규칙들에 관련된 소스코드 및 문법구조를 상기 자료구조 기반으로 프로그램경로분석모듈에서 코드 결함을 검사하여 위반된 코드결함을 수정할 수 있도록 코드결함 보고서를 생성하는 아밥소스코드결함검사부;를 포함하여 구성되어 본 발명의 과제를 해결하게 된다.
이상의 구성 및 작용을 지니는 본 발명에 따른 아밥 소스코드의 코드 검사를 수행하는 코드검사 수행시스템은 아밥 소프트웨어에 포함되어 있는 다양한 코드 결함들을 소스코드만으로 정적 분석하여 실제 실행시 발생할 수 있는 코드 결함을 사전에 탐지할 수 있는 효과를 제공하게 된다.
또한, 아밥 언어 및 SAP R/3에 대한 아밥 개발자의 오해, 오용 그리고 실수 등으로 발생하는 시스템 고장 및 정지, 데이터 손실 및 변형, 과대한 성능 저하, 기능의 틀린 행동 및 결과, 복잡한 코드 구조 및 철자 오류 등의 코딩 결함을 테스팅 이전에 제거함으로써 개발기간 단축, 테스팅의 비용 절감 및 기간 단축할 뿐만 아니라 일관성이 있는 코딩 포맷기반 어플리케이션 개발로 향후 유지보수 비용을 절감할 수 있는 더 나은 효과를 얻을 수 있다.
도 1은 본 발명의 일실시예에 따른 아밥 소스코드의 코드 검사를 수행하는 코드검사 수행시스템의 전체 블록도이다.
도 2는 본 발명의 일실시예에 따른 아밥 소스코드의 코드 검사를 수행하는 코드검사 수행시스템의 수행 방법을 나타낸 흐름도이다.
도 3은 본 발명의 일실시예에 따른 아밥 소스코드의 코드 검사를 수행하는 코드검사 수행시스템의 검사 대상인 아밥 소스코드 파일을 선택하는 화면 예시도이다.
도 4는 본 발명의 일실시예에 따른 아밥 소스코드의 코드 검사를 수행하는 코드검사 수행시스템의 코드 검사 대상 아밥 소스코드의 예시도이다.
도 5는 본 발명의 일실시예에 따른 아밥 소스코드의 코드 검사를 수행하는 코드검사 수행시스템의 어휘분석모듈의 예시도이다.
도 6은 본 발명의 일실시예에 따른 아밥 소스코드의 코드 검사를 수행하는 코드검사 수행시스템의 구문분석모듈의 예시도이다.
도 7a는 본 발명의 일실시예에 따른 아밥 소스코드의 코드 검사를 수행하는 코드검사 수행시스템의 추상구문트리의 자료구조의 예시도이다.
도 7b는 본 발명의 일실시예에 따른 아밥 소스코드의 코드 검사를 수행하는 코드검사 수행시스템의 추상구문트리의 예시도이다.
도 8은 본 발명의 일실시예에 따른 아밥 소스코드의 코드 검사를 수행하는 코드검사 수행시스템의 심볼테이블 자료구조의 클래스 다이어그램이다.
도 9는 본 발명의 일실시예에 따른 아밥 소스코드의 코드 검사를 수행하는 코드검사 수행시스템의 구문 및 의미 분석을 실행하는 디스플레이의 스크린 샷이다.
도 10은 본 발명의 일실시예에 따른 아밥 소스코드의 코드 검사를 수행하는 코드검사 수행시스템의 코딩 규칙들을 선택하는 화면 예시도이다.
도 11은 본 발명의 일실시예에 따른 아밥 소스코드의 코드 검사를 수행하는 코드검사 수행시스템의 제어 흐름 경로패턴의 코드 검사를 실행한 후, 코드결함 보고서 화면을 나타낸 예시도이다.
도 12는 본 발명의 일실시예에 따른 아밥 소스코드의 코드 검사를 수행하는 코드검사 수행시스템의 제어 및 자료 흐름 경로패턴의 코드 검사를 실행한 후, 코드결함 보고서 화면을 나타낸 예시도이다.
도 13은 본 발명의 일실시예에 따른 아밥 소스코드의 코드 검사를 수행하는 코드검사 수행시스템의 제어 흐름 및 호출 경로패턴의 코드 검사를 실행한 후, 코드결함 보고서 화면을 나타낸 예시도이다.
상기 과제를 달성하기 위한 본 발명의 아밥 소스코드의 코드 검사를 수행하는 코드검사 수행시스템은,
코드 검사 대상인 아밥 소스 코드를 어휘, 구문 및 의미 분석하여 각각 추상구문트리와 심볼테이블의 자료구조에 저장하는 아밥소스코드문법분석부와;
아밥규칙관리모듈에서 선택된 코딩 규칙들에 관련된 소스코드 및 문법구조를 상기 자료구조 기반으로 프로그램경로분석모듈에서 코드 결함을 검사하여 위반된 코드결함을 수정할 수 있도록 코드결함 보고서를 생성하는 아밥소스코드결함검사부;를 포함하여 구성되는 것을 특징으로 한다.
이때, 상기 아밥소스코드문법분석부는,
검사 대상인 아밥 소스코드 파일들을 파일 단위로 읽어 미리 정의된 아밥 문법(BNF)에 따라서 아밥 소스코드를 일련의 문자열을 의미하는 토큰 단위(키워드, 식별자, 심볼식별자, 상수, 연산자)로 분리하는 어휘분석모듈과,
각 파일 단위로 분리된 토큰들의 구문(문법)이 미리 정의된 아밥 문법에 위반되는 지를 검사하여 문법오류가 있으면 관련 파일의 문법 오류메시지를, 문법오류가 없으면 문장의 구문들을 분석해서 구문들 간의 제어 흐름 관계의 의미를 부여하여 각 파일 단위의 구문구조들을 추출하는 구문분석모듈과,
상기 구문분석모듈에서 추출된 정보를 각 파일 단위로 트리 자료구조에 저장하는 추상구문트리저장처리모듈과,
상기 추상구문트리저장처리모듈에서 각 파일을 구성하는 심볼 유형(클래스, 메소드, 변수, 형, 함수, 이벤트, 다이아로그, 처리블락)들과 그들 간의 연결관계 정보 및 결함 검사에 필요한 각 심볼 유형의 결함패턴 구조들을 추출하는 의미분석모듈과,
상기 의미분석모듈에서 추출된 정보를 각 파일의 구성 요소인 심볼들의 테이블 자료구조에 저장하는 심볼테이블저장처리모듈을 포함하여 구성되는 것을 특징으로 한다.
이때, 상기 아밥소스코드결함검사부는,
결함 심각도 및 프로그래밍 특성에 따라 다양한 코딩 규칙 카테고리(아밥 및 SQL 코딩 스타일, 코딩 표준, 아키텍처 표준, SQL 표준, 런-타임 에러, 보안 취약점)들과 각 규칙의 심볼 유형, 결함패턴구조 유형, 그리고 결함조건 유형들을 아밥 규칙관리모듈의 처리에 의해 저장 및 관리되는 아밥규칙데이터베이스와,
상기 아밥규칙데이터베이스에서 코딩 규칙들을 선택하고, 선택된 규칙들과 관련된 심볼과 결함패턴구조에 대응되는 심볼테이블의 심볼 값들을 각 파일별로 검색하고, 검색된 각 심볼값 별로 대응되는 모든 문법구조 및 소스코드를 추상구문트리에서 추출하여 프로그램경로분석모듈에 전달하는 아밥규칙관리모듈과,
상기 추출된 각 심볼 값의 문법구조 및 소스코드를 선택된 규칙의 프로그램 경로 패턴(제어 흐름, 제어 및 자료 흐름, 또는 제어 흐름 및 호출), 결함패턴구조와 결함 조건에 의해 결함 검사하는 프로그램경로분석모듈과,
상기 선택된 코드 규칙에 위반된 결함이 있으면 코드결함보고서를 생성하는 코드결함보고서생성모듈을 포함하여 구성되는 것을 특징으로 한다.
이때, 상기 아밥소스코드문법분석부는,
구문 분석된 토큰을 각 파일 단위로 입력받아 상향식 구문분석기법(Bottom-up Syntax Analysis)인 LR(1) 파서 알고리즘으로 토큰의 문법적 구조로 분석해서 각 파일 단위로 구문 구조들 간의 제어 흐름 관계를 추출하여 추상구문트리의 자료구조에 저장하는 것을 특징으로 한다.
이때, 상기 아밥소스코드문법분석부는,
추상구문트리의 자료구조에서 각 파일을 구성하는 심볼 유형들과 그들 간의 심볼 연결 관계, 타입(Type) 정보, 이름 연결 관계를 추출하고, 결함 검사에 필요한 각 심볼 유형의 결함패턴 구조 정보들을 심볼테이블의 자료구조에 저장하는 것을 특징으로 한다.
이때, 상기 아밥소스코드문법분석부는,
아밥 소스코드를 분석할 때 아밥 파일(*.abap)이 있는 상위 디렉토리를 선택하면 하위 디렉토리를 포함한 모든 아밥 파일들을 검사 대상으로 수행하거나, 하나의 파일을 선택하여도 검사 대상으로 수행하는 것을 특징으로 한다.
이때, 상기 프로그램경로분석모듈은,
아밥규칙데이터베이스에서 정의된 코딩 규칙의 프로그램 경로 패턴, 결함패턴구조와 결함 조건 하에 아밥규칙관리부에 의해 추출된 각 심볼 값의 문법구조 및 소스코드에서 관련된 코딩 규칙의 코드결함을 식별하는 기능을 수행하는 것을 특징으로 한다.
이때, 상기 아밥규칙관리모듈은,
아밥규칙데이터베이스에서 각 카테고리별 코딩 규칙을 선택 그리고 세부 옵션을 설정하고, 선택된 규칙들에서 관련된 심볼과 결함패턴구조에 대응되는 심볼테이블의 심볼 값들을 각 파일별로 검색하고, 검색된 각 심볼 값 별로 대응되는 모든 문법구조 및 소스코드를 추상구문트리에서 추출하여 프로그램경로분석모듈에 전달하는 기능을 수행하는 것을 특징으로 한다.
이때, 상기 아밥규칙데이터베이스는,
다양한 카테고리(아밥 및 SQL 코딩 스타일, 코딩 표준, 아키텍처 표준, SQL 표준, 런-타임 에러, 보안 취약점)의 코딩 규칙들을 저장해 놓은 데이터베이스로써, 각 규칙별로 카테고리 유형, 심볼 유형, 프로그램 경로 패턴, 결함패턴구조 유형, 결함 조건, 규칙 이름, 규칙 ID, 에러 타입, 에러 메세지의 자료 구조로 이루어져 있으며, 또한 아밥규칙관리모듈에 의해 규칙의 추가 또는 변경을 관리되는 것을 특징으로 한다.
이하, 본 발명에 의한 아밥 소스코드의 코드 검사를 수행하는 코드검사 수행시스템의 실시예를 통해 상세히 설명하도록 한다.
도 1은 본 발명의 일실시예에 따른 아밥 소스코드의 코드 검사를 수행하는 코드검사 수행시스템의 전체 블록도이다.
도 1에 도시한 바와 같이, 본 발명인 아밥 소스코드의 코드 검사를 수행하는 코드검사 수행시스템은,
코드 검사 대상인 아밥 소스 코드를 어휘, 구문 및 의미 분석하여 각각 추상구문트리와 심볼테이블의 자료구조에 저장하는 아밥소스코드문법분석부(100)와;
아밥규칙관리모듈에서 선택된 코딩 규칙들에 관련된 소스코드 및 문법구조를 상기 자료구조 기반으로 프로그램경로분석모듈에서 코드 결함을 검사하여 위반된 코드결함을 수정할 수 있도록 코드결함 보고서를 생성하는 아밥소스코드결함검사부(200);를 포함하여 구성된다.
이때, 상기 아밥소스코드문법분석부(100)는,
검사 대상인 아밥 소스코드 파일들을 파일 단위로 읽어 미리 정의된 아밥 문법(BNF)에 따라서 아밥 소스코드를 일련의 문자열을 의미하는 토큰 단위(키워드, 식별자, 심볼식별자, 상수, 연산자)로 분리하는 어휘분석모듈(110)과,
각 파일 단위로 분리된 토큰들의 구문(문법)이 미리 정의된 아밥 문법에 위반되는 지를 검사하여 문법오류가 있으면 관련 파일의 문법 오류메시지를, 문법오류가 없으면 문장의 구문들을 분석해서 구문들 간의 제어 흐름 관계의 의미를 부여하여 각 파일 단위의 구문구조들을 추출하는 구문분석모듈(120)과,
상기 구문분석모듈에서 추출된 정보를 각 파일 단위로 트리 자료구조에 저장하는 추상구문트리저장처리모듈(130)과,
상기 추상구문트리저장처리모듈에서 각 파일을 구성하는 심볼 유형(클래스, 메소드, 변수, 형, 함수, 이벤트, 다이아로그, 처리블락)들과 그들 간의 연결관계 정보 및 결함 검사에 필요한 각 심볼 유형의 결함패턴 구조들을 추출하는 의미분석모듈(140)과,
상기 의미분석모듈에서 추출된 정보를 각 파일의 구성 요소인 심볼들의 테이블 자료구조에 저장하는 심볼테이블저장처리모듈(150)을 포함하여 구성되는 것을 특징으로 한다.
이때, 상기 아밥소스코드결함검사부(200)는,
결함 심각도 및 프로그래밍 특성에 따라 다양한 코딩 규칙 카테고리(아밥 및 SQL 코딩 스타일, 코딩 표준, 아키텍처 표준, SQL 표준, 런-타임 에러, 보안 취약점)들과 각 규칙의 심볼 유형, 결함패턴구조 유형, 그리고 결함조건 유형들을 아밥 규칙관리모듈의 처리에 의해 저장 및 관리되는 아밥규칙데이터베이스(210)와,
상기 아밥규칙데이터베이스에서 코딩 규칙들을 선택하고, 선택된 규칙들과 관련된 심볼과 결함패턴구조에 대응되는 심볼테이블의 심볼 값들을 각 파일별로 검색하고, 검색된 각 심볼값 별로 대응되는 모든 문법구조 및 소스코드를 추상구문트리에서 추출하여 프로그램경로분석모듈에 전달하는 아밥규칙관리모듈(220)과,
상기 추출된 각 심볼 값의 문법구조 및 소스코드를 선택된 규칙의 프로그램 경로 패턴(제어 흐름, 제어 및 자료 흐름, 또는 제어 흐름 및 호출), 결함패턴구조와 결함 조건에 의해 결함 검사하는 프로그램경로분석모듈(230)과,
상기 선택된 코드 규칙에 위반된 결함이 있으면 코드결함보고서를 생성하는 코드결함보고서생성모듈(240)을 포함하여 구성되는 것을 특징으로 한다.
본 발명의 검사 대상인 아밥 소스 코드를 어휘, 구문 및 의미 분석하여 각각 추상구문트리와 심볼테이블의 자료구조에 저장하는 아밥소스코드문법분석부와 아밥 규칙관리모듈에서 선택된 코딩 규칙들에 관련된 소스코드 및 문법구조를 상기 자료구조기반으로 프로그램경로분석모듈에서 코드 결함을 검사하여 위반된 코드결함을 수정할 수 있도록 코드결함보고서를 생성하는 아밥소스코드결함검사부로 크게 구분되어진다.
상기 아밥소스코드문법분석부의 기능은 다음과 같다.
도 3과 같이 사용자에 의해 도 4와 같은 아밥 파일(*.abap)이 있는 상위 디렉토리를 선택하면 하위 디렉토리를 포함한 모든 아밥 파일들을 검사 대상으로, 또는 도 4의 예제 아밥 파일과 같이 하나의 파일을 선택하여 검사 대상으로 하고, 선택된 파일들을 읽어와서 인덱스를 설정하고, 검사 대상인 모든 아밥 소스코드 파일들의 인덱스 순서로 어휘분석모듈(110)에 전달한다.
참고적으로 도 4의 왼쪽의 행 번호는 설명의 편의상 기록한 것이다.
이때, 상기 어휘분석모듈은 도 4의 예제 소스와 같은 검사 대상인 아밥 파일들을 파일 단위로 읽어, 미리 정의된 아밥 문법의 아밥 베커스 표준 형식(Backus Normal Form, BNF)에 따라서 아밥 소스코드를 일련의 문자열을 의미하는 토큰 단위로 분리하여 구문분석모듈(120)에 전달한다.
상기 기능을 수행하기 위해 어휘분석모듈의 토큰은 문법적으로 더 이상 나눌 수 없는 기본적인 언어 요소를 가르키며, 키워드(keyword), 식별자 (identifier), 심볼식별자(symbol-identifier), 상수(constant), 연산자(operator)의 기호로 구분되어 각 토큰에 부여한다.
도 5에 도시한 바와 같이, 입력된 도 4의 첫번째와 네번째 라인의 문장을 문자열인 토큰으로 변환하여 각 토큰별로 토큰의 기호를 부여한 예이다.
단, 줄 종결자(end), 공백, 그리고 주석은 토큰이 아니다.
상기 구문분석모듈은 도 5의 예제와 같은 구문 분석된 토큰을 각 파일 단위로 입력받아 토큰들의 구문이 미리 정의된 아밥 문법(BNF)에 위반되는 지를 분석하여 문법오류가 있으면 관련 파일의 문법 오류메시지를 아밥 문법 에러메시지로 통보하고, 문법 오류가 없으면 상향식 구문분석기법(Bottom-up Syntax Analysis)인 LR(1) 파서 알고리즘으로 토큰의 문법적 구조를 분석해서 각 파일 단위로 구문 구조들 간의 제어 흐름 관계를 추출하여 추상구문트리의 자료구조에 추상구문트리저장처리모듈(130)의 처리에 의하여 저장하고, 생성된 추상구문트리의 문법 구조 정보를 각 파일 단위로 의미분석모듈에 전달한다.
상기 문법 검사의 실시예로서 도 6은 토큰화된 도 4의 네번째 라인의 클래스 선언 문장에서 클래스 BNF에 위반된 문법적 에러가 없는지를 점검한다.
추가적으로 모든 아밥의 한 문장의 끝은 항상 "." 연산자의 종결자가 있어야 한다.
만약, 아밥 문법에 위반된 파일들은 도 9와 같이 에러 파일(Erroneous Files)의 파일 수 및 에러 위치를 표시하고 의미분석 대상에서 제외한다.
상기 추상구문트리 생성의 실시예로서 도 7b은 도 4의 예제 소스를 구문분석한 후 생성된 트리 자료구조이다.
전술한 바와 같은 추상구문트리의 자료구조는 도 7a에서 살펴보면, 각 파일의 각 노드는 의미적 한 단위인 문장(Statement)을 나타내며, 각 문장은 소스의 물리적 위치(ID), 표현식(Expression, 문법구조 및 소스코드)과 문장 간의 연결 관계(부모노드(father, 자신의 노드 깊이보다 앞에 있는 노드), 자식노드(child, 자신의 노드 깊이보다 다음 있는 노드), 다음노드(next, 자신의 노드와 같은 깊이에 있는 노드), 이전노드(pervious, 자신의 노드와 같은 깊이에 있는 노드), 나열노드 (list, 자신의 노드와 같은 깊이에 있고 동시에 동일 소스 라인에 있는 노드))의 자료구조로 이루어진다.
도 7b와 같이 노드들 간의 연결 관계는 노드들 간의 제어 흐름을 방향성 그래프처럼 도식화한 것으로 각 노드들은 노드들 간의 제어 흐름의 연결(link)을 나타내고 있고, 다음 노드(next)가 없는 노드는 문장의 끝을 나타낸다.
상기 의미분석모듈(140)은 도 7b의 추상구문트리의 자료구조에서 각 파일을 구성하는 심볼 유형들과 그들 간의 심볼 연결 관계, 타입(Type) 정보, 이름 연결 관계를 추출하고 심볼테이블저장처리모듈(150)에 의해 결함 검사에 필요한 각 심볼 유형의 결함패턴 구조 정보들을 심볼테이블의 자료구조에 저장한다.
또한, 아밥규칙관리모듈(220)에서 선택된 코딩 규칙을 수행하기 위해 먼저 심볼테이블의 자료 구조를 검색한다.
전술한 바와 같은 심볼테이블의 자료구조를 살펴보면, 서브시스템 (Subsystem), 파일(File), 클래스(Class), 메소드(Method), 변수(Variable), 형(Form), 함수 (Function), 이벤트(Events), 다이아로그(Dialog), 처리블락 (Processing Block)의 클래스 자료구조로 이루어진다.
도 8과 같이 각 클래스는 클래스 이름, 속성 이름, 메소드 이름으로 구성되어 있고, 연결선은 클래스 간의 관계를 나타내고 있다.
메소드들은 각 심볼 유형의 문법 구조 및 소스코드를 추상구문트리에서 읽어오는 기능을 수행한다.
다음은 아밥소스코드결함검사부(200)를 구체적으로 설명하도록 하겠다.
상기 아밥규칙데이터베이스(210)는 도 10과 같이 6개 카테고리의 다양한 코딩 규칙들을 저장해 놓은 데이터베이스로 아밥규칙관리모듈(220)에 의해 규칙의 추가 또는 변경 등을 관리하게 된다.
상기 아밥규칙데이터베이스의 구조를 살펴보면 카테고리 유형, 심볼 유형, 프로그램 경로 패턴, 결함패턴구조 유형, 결함 조건, 규칙 이름, 규칙 ID, 에러 타입, 에러 메세지의 자료 구조로 이루어진다.
또한 코딩 규칙의 카테고리는 아밥 및 SQL 코딩 스타일, 코딩 표준, 아키텍처 표준, SQL 표준, 런타임 에러, 보안 취약점으로 구분된다.
각 카테고리별 코딩 규칙의 이름과 설명에 대한 실시예는 다음과 같다.
(1)아밥 및 SQL 코딩 스타일
-Indentation(단위마다 들여쓰기를 해야한다)
-Line Length(라인당 100이내로 작성해야 한다)
-Hard-Coding(하드코딩은 하지 말아야 한다)
(2)코딩 표준
-Variable Naming(변수 명명규칙을 준수해야 한다)
-Recursive Calls (재귀호출은 하지 말아야 한다)
-Form Obsolete Statements (form 문장은 사용하지 말아야 한다)
(3)아키텍처 표준
-Return Value Testing on SQL Statement(SQL문 사용후 error에 대한 점검을 해야 한다)
-Forbidden External Subroutine Invocation(다른 프로그램의 서브루틴은 호출하지 말아야 한다)
-Using Commit and Rollback on Try Block(Try문에 commit work를 기술하면 catch 구문에 rollback work를 기술해야 한다)
(4)SQL 표준
-Forbidden Nested Select Statement(다중 select문장은 기술하지 말아야 한다)
-Forbidden Multiple Table Join(3개 이상 Table을 join하지 말아야 한다)
-Select Statement with an GroupBy Function(Select 구문 사용시 groupby 함수를 사용하지 말아야 한다)
(5)런타임 에러
-Division by zero(나눗셈 연산시 0 으로 나누지 말아야 한다)
-Unassigned Field Symbol(Field symbol은 사용전 반드시 초기화해야 한다)
-Infinite Loops(루프문 작성시 반드시 exit 코드를 기술해야 한다)
(6)보안 취약점
-Call of System Function(시스템 함수는 사용하지 말아야 한다)
-Call of Transactions(Call Transaction 문장은 사용하지 말아야 한다)
-Use of Database Hints(Select 문장 사용시 hints 구문을 사용하지 말아야 한다)
아밥규칙관리모듈(220)은 도 10과 같이 아밥규칙데이터베이스에서 각 카테고리별 코딩 규칙을 선택 그리고 세부 옵션을 설정하고, 선택된 규칙들에서 관련된 심볼과 결함패턴구조에 대응되는 심볼테이블의 심볼 값들을 각 파일별로 검색하고, 검색된 각 심볼 값 별로 대응되는 모든 문법구조 및 소스코드를 추상구문트리에서 추출하여 프로그램경로분석모듈(230)에 전달한다.
상기 프로그램경로분석모듈은 아밥규칙데이터베이스에서 정의된 코딩 규칙의 프로그램 경로 패턴, 결함패턴구조와 결함 조건 하에 상기 아밥규칙관리모듈에 의해 추출된 각 심볼 값의 문법구조 및 소스코드에서 관련된 코딩 규칙의 코드결함을 식별하는 기능을 수행하며, 검출된 결함들은 각각 소스코드의 위치와 연결된 코드결함 보고서에 전달하여 최종 사용자에게 도 11, 12, 13과 같이 실시예의 코드결함 정보를 제공한다.
상기와 같은 기능을 수행하기 위해 프로그램경로분석모듈의 프로그램 경로 패턴은 제어 흐름, 제어 및 자료 흐름, 그리고 제어 흐름 및 호출로 구분되고, 아밥규칙데이터베이스에서 정의된 모든 코딩 규칙들은 오직 하나의 프로그램 경로 패턴에 속한다.
상기 각 프로그램 경로 패턴에 의해 프로그램경로분석모듈에서 결함을 검사하는 실시예는 다음과 같다.
(1) 제어 흐름의 프로그램 경로 패턴기반 결함 검사(도 11 참조)
- 규칙명 및 결함 조건 (Infinite Loops, 루프문 작성시 반드시 exit 코드를 기술해야 한다) : 아밥규칙데이터베이스
- From 심볼에서 루프문이 있는지를 검색: 아밥규칙관리모듈 및 심볼테이블
- From 심볼에 관련 문법구조 및 소스코드를 읽어 옴 : 추상구문트리
- 루프문에서 Exit 코드가 있는지를 제어 흐름 경로로 분석 : 프로그램경로 분석모듈
- 루프문에서 Exit 코드가 없으면, 코드결함으로 식별하여 결함보고서 생성 : 코드결함보고서생성모듈
- 아밥 소스예제
FORM foo.
data i type i value 1.
data sum type i value 0.
do. "Violation : shall be exited from loops.
if sum > 10 .
sum = sum + i.
endif.
enddo.
ENDFORM.
(2) 제어 및 자료 흐름의 프로그램 경로 패턴기반 결함 검사(도 12 참조)
- 규칙명 및 결함 조건 (Unassigned Field Symbol, Field symbol은 사용전 반드시 초기화해야 한다) : 아밥규칙데이터베이스
- From 심볼에서 Field-symbol이 있는지를 검색 : 아밥규칙관리모듈 및 심볼테이블
- From 심볼에 관련 문법구조 및 소스코드를 읽어 옴 : 추상구문트리
- 문장중에 있는 Field-symbol이 초기화했는지를 제어 및 자료 흐름 경로로 분석 : 프로그램경로분석모듈
- 선언문에 초기화되지 않았다면, 코드결함으로 식별하여 결함보고서 생성 : 코드결함보고서
-아밥 소스예제
FORM foo.
FIELD-SYMBOLS : <fs1> type any. "Violation : shall be assigned.
data : tp_value type string value 'any value is acceptable
data : tp_fieldname type string value 'tp_value'.
if <fs1> is ASSIGNED.
write / 'assigned'.
else.
write / 'unassinged'.
endif.
write <fs1>.
ENDFORM.
(3) 제어 흐름 및 호출의 프로그램 경로 패턴기반 결함 검사(도13 참조)
- 규칙명 및 결함 조건(Recursive Calls, 재귀호출은 하지 말아야 한다) : 아밥규칙데이터베이스
- Method 심볼에서 재귀 호출이 있는지를 검색: 아밥규칙관리모듈 및 심볼테이블
- Method 심볼에 관련 문법구조 및 소스코드를 읽어 옴: 추상구문트리
- 메소드 내부에서 자기 자신을 호출하는 메소드가 있는지를 제어 흐름 및 호출 경로로 분석 : 프로그램경로분석모듈
-재귀 호출이 있다면, 코드결함으로 식별하여 결함보고서 생성 : 코드결함 보고서
-아밥 소스예제
METHOD foo.
data i type i value 1.
data sum type i value 0.
write / 'unassinged'.
foo(). " Violation : shall not be recursive
ENDMETHOD.
도 2는 본 발명의 일실시예에 따른 아밥 소스코드의 코드 검사를 수행하는 코드검사 수행시스템의 수행 방법을 나타낸 흐름도이다.
즉, 아밥규칙관리모듈의 아밥 및 SQL 코딩 스타일, 코딩 표준, 아키텍처 표준, SQL 표준, 런타임 에러, 보안 취약점의 규칙 중에서 선택된 규칙에 대한 결함 검사를 수행하여 코드결함 보고서를 생성하는 상세 처리 흐름도이다.
S101은 도 1의 아밥규칙관리모듈에서 선택된 아밥 규칙들을 규칙 인덱스를 설정한다.
S102는 S101의 설정된 코딩 규칙들의 인덱스 순서로 검사 대상인 모든 파일에 대하여 S103 부터 S119까지 코드결함 검사를 반복 수행하고, 규칙 인덱스의 마지막까지 위 과정을 반복적으로 수행한다.
S103은 S102에서 하나의 규칙에 대한 카테고리 유형, 심볼 유형, 프로그램 경로 패턴, 결함패턴구조 유형, 결함 조건, 규칙 이름, 규칙 ID, 에러 타입, 에러 메세지의 자료 구조 정보를 전달받는다.
전달받은 하나의 프로그램 경로 패턴을 S109, S111, 또는 S113에게 통보하고, 심볼 유형, 결함패턴구조 유형 및 결함 조건은 S106에게 전달한다.
S104는 심볼 테이블의 파일 클래스에서 검색된 파일들을 아밥 파일인덱스를 설정한다.
S105는 S104의 검색된 아밥 파일인덱스 순서로 검사 대상인 모든 심볼에 대하여 S106 부터 S118까지 코드결함 검사를 반복 수행하고, 파일인덱스의 마지막까지 위 과정을 반복적으로 수행한다.
S106은 S103의 한 규칙의 심볼 유형 및 결함패턴구조 유형의 정보와 S105에서 전달한 하나의 파일 이름에 근거하여 그 파일에서 구성되어 있는 심볼들의 값들을 심볼테이블에서 검색하여 심볼값 인덱스를 설정한다.
S107은 S106의 심볼값 인덱스 순서로 값을 읽어와 S108에 전달하고, S108은 심볼값에 관련된 모든 문법구조 및 소스코드를 추상구문트리에서 검색하고, 또한 S103으로부터 받은 결함패턴구조 유형을 S110, S112 또는 S114에게 전달한다.
S109가 S103으로부터 제어 흐름의 경로 패턴을 통보받았다면, S110은 S108로부터 검색된 심볼값의 문법구조 및 소스코드를 대상으로 S103으로부터 받은 결함패턴구조 유형 및 결함 조건하에서 코드 검사한 결과를 S115로 통보한다.
S111이 S103으로부터 제어 및 자료 흐름의 경로 패턴을 통보받았다면, S112은 S108로부터 검색된 심볼값의 문법구조 및 소스코드를 대상으로 S103으로부터 받은 결함패턴구조 유형 및 결함 조건하에서 코드 검사한 결과를 S115로 통보한다.
S113이 S103으로부터 제어 흐름 및 호출의 경로 패턴을 통보받았다면, S114은 S108로부터 검색된 심볼값의 문법구조 및 소스코드를 대상으로 S103으로부터 받은 결함패턴구조 유형 및 결함 조건하에서 코드 검사한 결과를 S115로 통보한다.
상기 S115는 검사한 심볼값의 소스코드에서 결함이 있다면 S116으로 전달하고, 결함이 없으면 S118로 이동한다.
S116은 발견된 각 결함들의 소스 위치를 추상구문트리의 물리적 위치(ID)에서 검색하여 S117로 전달한다.
S117은 S116에 의해 전달된 결함과 소스위치를 결함저장소에 저장하고, S118로 이동한다.
S118은 S106의 심볼값 인덱스에서 다음 심볼값이 있으면, S107로 이동하고, 없으면, 다음 파일의 코드검사를 위해 S119로 이동한다.
S119는 S104의 파일인덱스에서 다음 파일이 있으면, S105로 이동하고, 없으면, 다음 규칙을 적용하기 위해 S120로 이동한다.
S120은 S101의 규칙인덱스에서 다음 규칙이 있으면, S102로 이동하고, 없으면, 코드 결함 검사를 종료한다.
상기와 같은 구성 및 동작을 통해 아밥 소프트웨어에 포함되어 있는 다양한 코드 결함들을 소스코드만으로 정적 분석하여 실제 실행시 발생할 수 있는 코드 결함을 사전에 탐지할 수 있는 효과를 제공하게 된다.
이상에서와 같은 내용의 본 발명이 속하는 기술분야의 당업자는 본 발명의 기술적 사상이나 필수적 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시 예들은 모든 면에서 예시된 것이며 한정적인 것이 아닌 것으로서 이해해야만 한다.
본 발명의 범위는 상기 상세한 설명보다는 후술하는 특허청구범위에 의하여 나타내어지며, 특허청구 범위의 의미 및 범위 그리고 그 등가 개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.
100 : 아밥소스코드문법분석부
110 : 어휘분석모듈
120 : 구문분석모듈
130 : 추상구문트리저장처리모듈
140 : 의미분석모듈
150 : 심볼테이블저장처리모듈
200 : 아밥소스코드결함검사부
210 : 아밥규칙데이터베이스
220 : 아밥규칙관리모듈
230 : 프로그램경로분석모듈
240 : 코드결함보고서생성모듈

Claims (9)

  1. 코드 검사 대상인 아밥 소스 코드를 어휘, 구문 및 의미 분석하여 각각 추상구문트리와 심볼테이블의 자료구조에 저장하는 아밥소스코드문법분석부와;
    아밥규칙관리모듈에서 선택된 코딩 규칙들에 관련된 소스코드 및 문법구조를 상기 자료구조 기반으로 프로그램경로분석모듈에서 코드 결함을 검사하여 위반된 코드결함을 수정할 수 있도록 코드결함 보고서를 생성하는 아밥소스코드결함검사부;를 포함하여 구성되는 것을 특징으로 하는 아밥 소스코드의 코드 검사를 수행하는 코드검사 수행시스템.
  2. 제 1항에 있어서,
    상기 아밥소스코드문법분석부는,
    검사 대상인 아밥 소스코드 파일들을 파일 단위로 읽어 미리 정의된 아밥 문법(BNF)에 따라서 아밥 소스코드를 일련의 문자열을 의미하는 토큰 단위(키워드, 식별자, 심볼식별자, 상수, 연산자)로 분리하는 어휘분석모듈과,
    각 파일 단위로 분리된 토큰들의 구문(문법)이 미리 정의된 아밥 문법에 위반되는 지를 검사하여 문법오류가 있으면 관련 파일의 문법 오류메시지를, 문법오류가 없으면 문장의 구문들을 분석해서 구문들 간의 제어 흐름 관계의 의미를 부여하여 각 파일 단위의 구문구조들을 추출하는 구문분석모듈과,
    상기 구문분석모듈에서 추출된 정보를 각 파일 단위로 트리 자료구조에 저장하는 추상구문트리저장처리모듈과,
    상기 추상구문트리저장처리모듈에서 각 파일을 구성하는 심볼 유형(클래스, 메소드, 변수, 형, 함수, 이벤트, 다이아로그, 처리블락)들과 그들 간의 연결관계 정보 및 결함 검사에 필요한 각 심볼 유형의 결함패턴 구조들을 추출하는 의미분석모듈과,
    상기 의미분석모듈에서 추출된 정보를 각 파일의 구성 요소인 심볼들의 테이블 자료구조에 저장하는 심볼테이블저장처리모듈을 포함하여 구성되는 것을 특징으로 하는 아밥 소스코드의 코드 검사를 수행하는 코드검사 수행시스템.
  3. 제 1항에 있어서,
    상기 아밥소스코드결함검사부는,
    결함 심각도 및 프로그래밍 특성에 따라 다양한 코딩 규칙 카테고리(아밥 및 SQL 코딩 스타일, 코딩 표준, 아키텍처 표준, SQL 표준, 런-타임 에러, 보안 취약점)들과 각 규칙의 심볼 유형, 결함패턴구조 유형, 그리고 결함조건 유형들을 아밥 규칙관리모듈의 처리에 의해 저장 및 관리되는 아밥규칙데이터베이스와,
    상기 아밥규칙데이터베이스에서 코딩 규칙들을 선택하고, 선택된 규칙들과 관련된 심볼과 결함패턴구조에 대응되는 심볼테이블의 심볼 값들을 각 파일별로 검색하고, 검색된 각 심볼값 별로 대응되는 모든 문법구조 및 소스코드를 추상구문트리에서 추출하여 프로그램경로분석모듈에 전달하는 아밥규칙관리모듈과,
    상기 추출된 각 심볼 값의 문법구조 및 소스코드를 선택된 규칙의 프로그램 경로 패턴(제어 흐름, 제어 및 자료 흐름, 또는 제어 흐름 및 호출), 결함패턴구조와 결함 조건에 의해 결함 검사하는 프로그램경로분석모듈과,
    상기 선택된 코드 규칙에 위반된 결함이 있으면 코드결함보고서를 생성하는 코드결함보고서생성모듈을 포함하여 구성되는 것을 특징으로 하는 아밥 소스코드의 코드 검사를 수행하는 코드검사 수행시스템.
  4. 제 1항에 있어서,
    상기 아밥소스코드문법분석부는,
    구문 분석된 토큰을 각 파일 단위로 입력받아 상향식 구문분석기법(Bottom-up Syntax Analysis)인 LR(1) 파서 알고리즘으로 토큰의 문법적 구조로 분석해서 각 파일 단위로 구문 구조들 간의 제어 흐름 관계를 추출하여 추상구문트리의 자료구조에 저장하는 것을 특징으로 하는 아밥 소스코드의 코드 검사를 수행하는 코드검사 수행시스템.
  5. 제 1항에 있어서,
    상기 아밥소스코드문법분석부는,
    추상구문트리의 자료구조에서 각 파일을 구성하는 심볼 유형들과 그들 간의 심볼 연결 관계, 타입(Type) 정보, 이름 연결 관계를 추출하고, 결함 검사에 필요한 각 심볼 유형의 결함패턴 구조 정보들을 심볼테이블의 자료구조에 저장하는 것을 특징으로 하는 아밥 소스코드의 코드 검사를 수행하는 코드검사 수행시스템.
  6. 제 1항에 있어서,
    상기 아밥소스코드문법분석부는,
    아밥 소스코드를 분석할 때 아밥 파일(*.abap)이 있는 상위 디렉토리를 선택하면 하위 디렉토리를 포함한 모든 아밥 파일들을 검사 대상으로 수행하거나, 하나의 파일을 선택하여도 검사 대상으로 수행하는 것을 특징으로 하는 아밥 소스코드의 코드 검사를 수행하는 코드검사 수행시스템.
  7. 제 3항에 있어서,
    상기 프로그램경로분석모듈은,
    아밥규칙데이터베이스에서 정의된 코딩 규칙의 프로그램 경로 패턴, 결함패턴구조와 결함 조건 하에 아밥규칙관리부에 의해 추출된 각 심볼 값의 문법구조 및 소스코드에서 관련된 코딩 규칙의 코드결함을 식별하는 기능을 수행하는 것을 특징으로 하는 아밥 소스코드의 코드 검사를 수행하는 코드검사 수행시스템.
  8. 제 3항에 있어서,
    상기 아밥규칙관리모듈은,
    아밥규칙데이터베이스에서 각 카테고리별 코딩 규칙을 선택 그리고 세부 옵션을 설정하고, 선택된 규칙들에서 관련된 심볼과 결함패턴구조에 대응되는 심볼테이블의 심볼 값들을 각 파일별로 검색하고, 검색된 각 심볼 값 별로 대응되는 모든 문법구조 및 소스코드를 추상구문트리에서 추출하여 프로그램경로분석모듈에 전달하는 기능을 수행하는 것을 특징으로 하는 아밥 소스코드의 코드 검사를 수행하는 코드검사 수행시스템.
  9. 제 3항에 있어서,
    상기 아밥규칙데이터베이스는,
    다양한 카테고리(아밥 및 SQL 코딩 스타일, 코딩 표준, 아키텍처 표준, SQL 표준, 런-타임 에러, 보안 취약점)의 코딩 규칙들을 저장해 놓은 데이터베이스로써, 각 규칙별로 카테고리 유형, 심볼 유형, 프로그램 경로 패턴, 결함패턴구조 유형, 결함 조건, 규칙 이름, 규칙 ID, 에러 타입, 에러 메세지의 자료 구조로 이루어져 있으며, 아밥규칙관리모듈에 의해 규칙의 추가 또는 변경을 관리되는 것을 특징으로 하는 아밥 소스코드의 코드 검사를 수행하는 코드검사 수행시스템.
KR1020100028128A 2010-03-29 2010-03-29 아밥 소스코드의 코드 검사를 수행하는 코드검사 수행시스템 KR101051600B1 (ko)

Priority Applications (7)

Application Number Priority Date Filing Date Title
KR1020100028128A KR101051600B1 (ko) 2010-03-29 2010-03-29 아밥 소스코드의 코드 검사를 수행하는 코드검사 수행시스템
US13/634,751 US8875110B2 (en) 2010-03-29 2010-04-05 Code inspection executing system for performing a code inspection of ABAP source codes
JP2013501169A JP5791698B2 (ja) 2010-03-29 2010-04-05 アバップソースコードのコード検査遂行システム
CN201080065453.2A CN102804147B (zh) 2010-03-29 2010-04-05 执行abap源代码的代码检查的代码检查执行***
AU2010350247A AU2010350247B2 (en) 2010-03-29 2010-04-05 Code inspection executing system for performing a code inspection of ABAP source codes
PCT/KR2010/002061 WO2011122724A1 (ko) 2010-03-29 2010-04-05 아밥 소스코드의 코드 검사를 수행하는 코드검사 수행시스템
EP20100849046 EP2555117A4 (en) 2010-03-29 2010-04-05 SYSTEM EXECUTING CODE INSPECTION TO PERFORM CODE INSPECTION ON ABAP SOURCE CODES

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020100028128A KR101051600B1 (ko) 2010-03-29 2010-03-29 아밥 소스코드의 코드 검사를 수행하는 코드검사 수행시스템

Publications (1)

Publication Number Publication Date
KR101051600B1 true KR101051600B1 (ko) 2011-07-22

Family

ID=44720389

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020100028128A KR101051600B1 (ko) 2010-03-29 2010-03-29 아밥 소스코드의 코드 검사를 수행하는 코드검사 수행시스템

Country Status (7)

Country Link
US (1) US8875110B2 (ko)
EP (1) EP2555117A4 (ko)
JP (1) JP5791698B2 (ko)
KR (1) KR101051600B1 (ko)
CN (1) CN102804147B (ko)
AU (1) AU2010350247B2 (ko)
WO (1) WO2011122724A1 (ko)

Cited By (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101225577B1 (ko) * 2010-12-07 2013-01-24 한국과학기술연구원 어셈블리 언어 코드의 분석 장치 및 방법
KR101470097B1 (ko) * 2012-12-17 2014-12-10 부산대학교 산학협력단 코딩 스타일에 기초한 소스코드 시각화 장치 및 방법
KR101507469B1 (ko) 2015-01-06 2015-04-03 (주)싸이버텍 소스 코드 분석 서비스 제공 방법
WO2016032234A1 (ko) * 2014-08-27 2016-03-03 주식회사 파수닷컴 소스 코드 분석 장치, 이를 위한 컴퓨터 프로그램, 그 기록매체
KR101623174B1 (ko) * 2014-08-27 2016-05-20 주식회사 파수닷컴 소스 코드 분석 장치, 이를 위한 컴퓨터 프로그램, 그 기록매체
KR20180026103A (ko) 2016-09-02 2018-03-12 단국대학교 산학협력단 자바 어플리케이션의 바이트코드 기반 입력값 검증장치 및 그 방법
CN109871319A (zh) * 2019-01-18 2019-06-11 深圳壹账通智能科技有限公司 项目代码扫描方法、装置、计算机设备及存储介质
CN110688307A (zh) * 2019-09-09 2020-01-14 平安普惠企业管理有限公司 JavaScript代码检测方法、装置、设备和存储介质
CN111209004A (zh) * 2019-12-30 2020-05-29 北京健康之家科技有限公司 代码转换方法及装置
CN111258562A (zh) * 2020-01-13 2020-06-09 中国平安财产保险股份有限公司 Java代码质量检查方法、装置、设备和存储介质
KR20200071413A (ko) * 2018-12-11 2020-06-19 한국전자통신연구원 학습용 데이터 생성 장치, 소스 코드 오류 분석 장치 및 방법
KR20210017632A (ko) * 2019-08-09 2021-02-17 주식회사 한화 텍스트 및 키워드 마이닝을 통한 디버깅을 수행하는 장치 및 그 방법
KR20210081280A (ko) * 2019-12-23 2021-07-01 충남대학교산학협력단 프로그램 제어 흐름 그래프 재건 시스템 및 방법
CN113590129A (zh) * 2021-07-17 2021-11-02 西北工业大学 一种基于同步反应式构件的代码自动生成方法
US12039297B2 (en) 2021-06-30 2024-07-16 Samsung Sds Co., Ltd. Code inspection interface providing method and apparatus for implementing the method

Families Citing this family (52)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8776017B2 (en) * 2010-07-26 2014-07-08 Check Point Software Technologies Ltd Scripting language processing engine in data leak prevention application
US8666999B2 (en) * 2011-08-02 2014-03-04 Rockwell Automation Technologies, Inc. Search utility program for software developers
CN103377045B (zh) * 2012-04-27 2016-12-14 国际商业机器公司 用于翻译验证测试的方法和***
GB2506162A (en) * 2012-09-24 2014-03-26 Ibm Searching source code
US9378377B1 (en) * 2013-03-13 2016-06-28 Hrl Laboratories, Llc System for information flow security inference through program slicing
US8984485B2 (en) * 2013-05-01 2015-03-17 International Business Machines Corporation Analysis of source code changes
US9569187B2 (en) 2013-10-08 2017-02-14 International Business Machines Corporation Irreducible modules
US9298450B2 (en) 2013-10-25 2016-03-29 International Business Machines Corporation Associating a visualization of user interface with source code
CN103914304B (zh) * 2014-04-10 2017-02-22 国家电网公司 一种基于sap平台的不同结构类型参数转换方法
US9323742B2 (en) * 2014-06-09 2016-04-26 Xerox Corporation Method and apparatus for providing semantic data architecture
KR101579493B1 (ko) * 2015-01-08 2015-12-23 주식회사 파수닷컴 소스코드 이관제어 방법 및 이를 위한 컴퓨터 프로그램, 그 기록매체
CN106201861A (zh) * 2015-05-07 2016-12-07 阿里巴巴集团控股有限公司 一种代码质量的检测方法及装置
US10740096B2 (en) * 2015-10-28 2020-08-11 Qomplx, Inc. Meta-indexing, search, compliance, and test framework for software development
US11531538B2 (en) * 2015-10-28 2022-12-20 Qomplx, Inc. Meta-indexing, search, compliance, and test framework for software development using smart contracts
US11531539B2 (en) * 2015-10-28 2022-12-20 Qomplx, Inc. Automated compliance and testing framework for software development
CN106997320A (zh) * 2016-01-22 2017-08-01 阿里巴巴集团控股有限公司 代码评审过程中的代码显示方法和装置
US9723489B1 (en) * 2016-04-19 2017-08-01 Synack, Inc. Automated vulnerability discovery in mobile device applications
CN106294156B (zh) * 2016-08-11 2018-12-07 北京邮电大学 一种静态代码缺陷检测分析方法及装置
CN106293764B (zh) * 2016-08-22 2019-05-07 江苏电力信息技术有限公司 一种通过abap语法解析获取引用自定义对象的方法
KR101850303B1 (ko) * 2016-09-13 2018-05-31 슈어소프트테크주식회사 소스 코드 위배 수정 방법 및 이를 실행하기 위한 프로그램을 기록한 컴퓨터로 판독가능한 기록매체
US10594574B2 (en) * 2016-11-07 2020-03-17 Hewlett Packard Enterprise Development Lp Middlebox modeling
CN106874386B (zh) * 2017-01-12 2020-07-28 深圳市汉云科技有限公司 文件解析方法及装置
CN107402764B (zh) * 2017-07-28 2020-09-08 南京南瑞继保电气有限公司 一种图形化页面程序功能特征码计算刷新方法
CN107678954A (zh) * 2017-09-22 2018-02-09 江苏海事职业技术学院 一种程序作业评测方法和装置
CN109857628A (zh) * 2017-11-30 2019-06-07 北京高德云图科技有限公司 动态ui业务端代码性能检测方法及装置
CN109213490B (zh) * 2018-09-05 2022-10-25 深圳市腾讯网络信息技术有限公司 一种程序处理方法、装置以及相关设备
CN109871313A (zh) * 2018-12-30 2019-06-11 贝壳技术有限公司 基于特定时间的代码检查方法及装置
CN110109675A (zh) * 2019-04-30 2019-08-09 翟红鹰 智能合约处理方法、装置以及计算机可读存储介质
US11562090B2 (en) * 2019-05-28 2023-01-24 International Business Machines Corporation Enforcing sensitive data protection in security systems
US11182155B2 (en) * 2019-07-11 2021-11-23 International Business Machines Corporation Defect description generation for a software product
CN110851139B (zh) * 2019-11-07 2023-04-18 北京字节跳动网络技术有限公司 用于检查代码的方法、装置和电子设备
CN111338929A (zh) * 2019-12-05 2020-06-26 国网辽宁省电力有限公司信息通信分公司 一种业务应用***性能评测及其解析技术方法
CN111143204B (zh) * 2019-12-19 2021-06-29 支付宝(杭州)信息技术有限公司 一种小程序代码扫描方法和装置
CN111143330B (zh) * 2019-12-27 2023-10-03 湖南亚信软件有限公司 一种多模态数据库解析引擎的实现方法及装置
CN111552968B (zh) * 2020-04-21 2023-06-13 中国电力科学研究院有限公司 基于模型检查的嵌入式终端软件代码漏洞检测方法及装置
CN111610999A (zh) * 2020-05-26 2020-09-01 北京字节跳动网络技术有限公司 一种检查方法、装置、计算机设备及存储介质
CN111709026B (zh) * 2020-06-10 2023-10-24 深圳知释网络技术有限公司 静态安全检测方法、装置、计算机设备和存储介质
CN112035359B (zh) * 2020-08-31 2023-05-02 抖音视界有限公司 程序测试方法、装置、电子设备及存储介质
CN112231212B (zh) * 2020-10-16 2023-05-09 湖南皖湘科技有限公司 一种检测程序代码语法错误的方法
CN112416367B (zh) * 2020-11-19 2022-06-21 云南电网有限责任公司信息中心 基于软件逆向拆解和分析的应用资源变更影响分析***
CN112632546A (zh) * 2020-12-31 2021-04-09 华数传媒网络有限公司 广电行业自动化代码分析方法
CN112733156B (zh) * 2021-01-29 2024-04-12 中国人民解放军国防科技大学 基于代码属性图的软件脆弱性智能检测方法、***及介质
CN113791757B (zh) * 2021-07-14 2023-08-22 北京邮电大学 软件需求和代码映射方法及***
US20230019933A1 (en) * 2021-07-15 2023-01-19 Watershed Informatics, Inc. User interface controls for visual software modification
CN117897694A (zh) * 2021-08-24 2024-04-16 超聚变数字技术有限公司 静态分析方法、装置和设备及计算机可读存储介质
CN113778899A (zh) * 2021-09-28 2021-12-10 广州四三九九信息科技有限公司 一种在Lua代码编译前检查语法错误和性能的方法
CN114116517A (zh) * 2021-12-06 2022-03-01 北京字节跳动网络技术有限公司 前端项目分析方法、装置、介质及电子设备
CN114385491B (zh) * 2021-12-30 2024-06-18 大连理工大学 一种基于深度学习的js转译器缺陷检测方法
CN115543854A (zh) * 2022-11-24 2022-12-30 博智安全科技股份有限公司 源代码安全分析方法、装置、设备、可读存储介质
CN116049835B (zh) * 2023-03-08 2023-06-23 中汽智联技术有限公司 汽车固件的安全漏洞检测方法、设备和存储介质
CN116680705B (zh) * 2023-07-31 2023-12-12 中国人民解放军国防科技大学 基于特征提取的Rust程序缺陷自动检测方法及***
CN117421009B (zh) * 2023-12-19 2024-04-19 深圳市航盛电子股份有限公司 信号代码生成方法、装置、终端设备以及存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100501936B1 (ko) 2003-05-07 2005-07-18 삼성전자주식회사 소스 코드 검사 시스템 및 방법
KR20090028368A (ko) * 2007-09-14 2009-03-18 주식회사 신한은행 테스트 결과 로그를 이용한 프로그램 테스트 결과 분석방법 및 시스템과 이를 위한 프로그램 기록매체
KR20090028366A (ko) * 2007-09-14 2009-03-18 주식회사 신한은행 프로그램 소스코드 테스트 방법 및 시스템과 이를 위한프로그램 기록매체

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6029002A (en) * 1995-10-31 2000-02-22 Peritus Software Services, Inc. Method and apparatus for analyzing computer code using weakest precondition
DE10041111A1 (de) * 2000-08-22 2002-03-14 Infineon Technologies Ag Verfahren zum Überarbeiten eines in einer Programmiersprache verfaßten Computerprogramms
US6873935B2 (en) 2003-03-03 2005-03-29 Microsoft Corporation System and method for statically checking source code
JP2005056183A (ja) * 2003-08-05 2005-03-03 Nec Corp ルール検査システム、ルール検査装置、ルール検査方法、及びルール検査プログラム
JP4693044B2 (ja) 2005-08-18 2011-06-01 株式会社日立ソリューションズ ソースコード脆弱性検査装置
WO2007084780A2 (en) * 2006-01-20 2007-07-26 Aptana, Inc. Type inference system and method
US7945905B2 (en) * 2006-06-02 2011-05-17 Accenture Global Services Limited Quality inspector tool
US20080196012A1 (en) * 2007-02-12 2008-08-14 Panaya Ltd. System and methods for static analysis of large computer programs and for presenting the results of the analysis to a user of a computer program
US8261248B2 (en) * 2007-11-05 2012-09-04 Sap Ag System and method of executing a dynamic program in a structured environment
JP2009211503A (ja) 2008-03-05 2009-09-17 Nec Corp ソースコード検証装置、及びソースコード検証方法
US20100153933A1 (en) * 2008-12-17 2010-06-17 Karsten Bohlmann Path Navigation In Abstract Syntax Trees
WO2010145058A1 (zh) * 2009-06-19 2010-12-23 深圳Tcl新技术有限公司 一种电视机实现文件浏览的方法
US8527955B2 (en) * 2009-09-11 2013-09-03 International Business Machines Corporation System and method to classify automated code inspection services defect output for defect analysis
US8572566B2 (en) * 2010-05-11 2013-10-29 Smartshift Gmbh Systems and methods for analyzing changes in application code from a previous instance of the application code

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100501936B1 (ko) 2003-05-07 2005-07-18 삼성전자주식회사 소스 코드 검사 시스템 및 방법
KR20090028368A (ko) * 2007-09-14 2009-03-18 주식회사 신한은행 테스트 결과 로그를 이용한 프로그램 테스트 결과 분석방법 및 시스템과 이를 위한 프로그램 기록매체
KR20090028366A (ko) * 2007-09-14 2009-03-18 주식회사 신한은행 프로그램 소스코드 테스트 방법 및 시스템과 이를 위한프로그램 기록매체

Cited By (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101225577B1 (ko) * 2010-12-07 2013-01-24 한국과학기술연구원 어셈블리 언어 코드의 분석 장치 및 방법
KR101470097B1 (ko) * 2012-12-17 2014-12-10 부산대학교 산학협력단 코딩 스타일에 기초한 소스코드 시각화 장치 및 방법
WO2016032234A1 (ko) * 2014-08-27 2016-03-03 주식회사 파수닷컴 소스 코드 분석 장치, 이를 위한 컴퓨터 프로그램, 그 기록매체
KR101623174B1 (ko) * 2014-08-27 2016-05-20 주식회사 파수닷컴 소스 코드 분석 장치, 이를 위한 컴퓨터 프로그램, 그 기록매체
US10496516B2 (en) 2014-08-27 2019-12-03 Sparrow Co., Ltd. Source code analysis device, computer program for same, and recording medium thereof
KR101507469B1 (ko) 2015-01-06 2015-04-03 (주)싸이버텍 소스 코드 분석 서비스 제공 방법
KR20180026103A (ko) 2016-09-02 2018-03-12 단국대학교 산학협력단 자바 어플리케이션의 바이트코드 기반 입력값 검증장치 및 그 방법
KR102546424B1 (ko) * 2018-12-11 2023-06-23 한국전자통신연구원 학습용 데이터 생성 장치, 소스 코드 오류 분석 장치 및 방법
KR20200071413A (ko) * 2018-12-11 2020-06-19 한국전자통신연구원 학습용 데이터 생성 장치, 소스 코드 오류 분석 장치 및 방법
CN109871319A (zh) * 2019-01-18 2019-06-11 深圳壹账通智能科技有限公司 项目代码扫描方法、装置、计算机设备及存储介质
KR20210017632A (ko) * 2019-08-09 2021-02-17 주식회사 한화 텍스트 및 키워드 마이닝을 통한 디버깅을 수행하는 장치 및 그 방법
KR102243258B1 (ko) 2019-08-09 2021-04-21 주식회사 한화 텍스트 및 키워드 마이닝을 통한 디버깅을 수행하는 장치 및 그 방법
CN110688307B (zh) * 2019-09-09 2023-11-17 国信金宏信息咨询有限责任公司 JavaScript代码检测方法、装置、设备和存储介质
CN110688307A (zh) * 2019-09-09 2020-01-14 平安普惠企业管理有限公司 JavaScript代码检测方法、装置、设备和存储介质
KR20210081280A (ko) * 2019-12-23 2021-07-01 충남대학교산학협력단 프로그램 제어 흐름 그래프 재건 시스템 및 방법
KR102461532B1 (ko) * 2019-12-23 2022-11-03 충남대학교 산학협력단 프로그램 제어 흐름 그래프 재건 시스템 및 방법
CN111209004A (zh) * 2019-12-30 2020-05-29 北京健康之家科技有限公司 代码转换方法及装置
CN111209004B (zh) * 2019-12-30 2023-09-01 北京水滴科技集团有限公司 代码转换方法及装置
CN111258562A (zh) * 2020-01-13 2020-06-09 中国平安财产保险股份有限公司 Java代码质量检查方法、装置、设备和存储介质
US12039297B2 (en) 2021-06-30 2024-07-16 Samsung Sds Co., Ltd. Code inspection interface providing method and apparatus for implementing the method
CN113590129A (zh) * 2021-07-17 2021-11-02 西北工业大学 一种基于同步反应式构件的代码自动生成方法
CN113590129B (zh) * 2021-07-17 2024-05-17 西北工业大学 一种基于同步反应式构件的代码自动生成方法

Also Published As

Publication number Publication date
US8875110B2 (en) 2014-10-28
WO2011122724A1 (ko) 2011-10-06
AU2010350247B2 (en) 2015-02-12
EP2555117A1 (en) 2013-02-06
JP2013522790A (ja) 2013-06-13
EP2555117A4 (en) 2013-02-06
AU2010350247A1 (en) 2012-10-11
US20130014093A1 (en) 2013-01-10
CN102804147B (zh) 2015-11-25
CN102804147A (zh) 2012-11-28
JP5791698B2 (ja) 2015-10-07

Similar Documents

Publication Publication Date Title
KR101051600B1 (ko) 아밥 소스코드의 코드 검사를 수행하는 코드검사 수행시스템
Louridas Static code analysis
Zaidman et al. Applying webmining techniques to execution traces to support the program comprehension process
US20050204344A1 (en) Program analysis device, analysis method and program of same
US9122540B2 (en) Transformation of computer programs and eliminating errors
CN101751281A (zh) 编译器生成***和方法
Annamaa et al. An interactive tool for analyzing embedded SQL queries
CN103914379A (zh) 故障自动注入与故障检测的方法及其***
KR101696694B1 (ko) 역추적을 이용한 소스 코드 취약점 분석 방법 및 장치
Wang et al. An empirical study on bugs in python interpreters
CN112131122A (zh) 一种源代码缺陷检测工具误报评估方法及装置
CN116431476A (zh) 一种基于代码上下文变异的jvm模糊测试方法
Liuying et al. Test selection from UML statecharts
CN111966578A (zh) 一种安卓兼容性缺陷修复效果的自动化评估方法
Nguyen et al. Dangling references in multi-configuration and dynamic PHP-based Web applications
CN109032946B (zh) 一种测试方法和装置、计算机可读存储介质
Ding et al. On the temporal relations between logging and code
CN115080448B (zh) 一种软件代码不可达路径自动检测的方法和装置
CN111666216B (zh) 一种智能合约分析方法及装置
CN114691197A (zh) 代码分析方法、装置、电子设备和存储介质
Nooraei Abadeh et al. Delta‐based regression testing: a formal framework towards model‐driven regression testing
Schaub et al. Comprehensive analysis of c++ applications using the libclang api
Xiao et al. Performing high efficiency source code static analysis with intelligent extensions
Anderson Modeling and analysis of SQL queries in PHP systems
Grigorev et al. String-embedded language support in integrated development environment

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20150717

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20160719

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20180117

Year of fee payment: 7