코드 인스펙션

코드 인스펙션에서 커스터마이징 할 수 있는 영역을 제공합니다.

1. 제공되는 커스터마이징 목록(2)

코드 인스펙션에서 제공되는 커스터마이징 영역 목록
기능 설명

bindCodeInspectionExternalPropertiesProvider

코드 인스펙션에서 사용할 프로퍼티를 제공받하는 제공자를 바인딩합니다.

bindCodeInspectionRuleSetProvider

코드 인스펙션에서 기본 제공되는 룰셋 외에 추가적인 룰셋을 제공하는 제공자를 바인딩합니다.

2. 상세

메소드의 기능을 확인하고 필요한 부분을 커스터마이징 할 수 있습니다.

2.1. bindCodeInspectionExternalPropertiesProvider

코드 인스펙션에서 사용할 프로퍼티를 제공받하는 제공자를 바인딩합니다.

1. 인터페이스 및 클래스

모듈이 반드시 구현 해야하는 인터페이스 또는 상속 해야하는 클래스입니다.

com.bankwareglobal.ide.bxframework.core.codeinspection.ICodeInspectionExternalPropertiesProvider

2. 기본 구현 클래스

해당 기능을 위해 구현된 기본 클래스입니다. 인터페이스 및 클래스에서 필요한 기본 기능이 구현되어있으며 모듈을 확장할 경우 이 클래스를 상속 받아서 구현할 수 있습니다.

com.bankwareglobal.ide.bxframework.se.codeinspection.BxmCodeInspectionExternalPropertiesProvider

3. 구현 예제

com.bankwareglobal.ide.bxframework.se.extensions.overriding.impl.ExtCodeInspectionExternalPropertiesProvider

                package com.bankwareglobal.ide.bxframework.se.extensions.overriding.impl;

                import java.util.Properties;

                import org.eclipse.jdt.core.IJavaProject;

                import com.bankwareglobal.ide.bxframework.core.codeinspection.ICodeInspectionExternalPropertiesProvider;
                import com.bankwareglobal.ide.bxframework.core.utils.BXMUtils;
                import com.bankwareglobal.ide.bxframework.se.extensions.PluginLog;

                public class ExtCodeInspectionExternalPropertiesProvider
                implements ICodeInspectionExternalPropertiesProvider {

                    /**
                     * 프로젝트 내의 .properties 파일을 읽어와 반환합니다.
                     * 해당 properties 값은 인스펙션 룰셋에서 사용됩니다.
                     */
                    @Override
                    public Properties getExternalProperties(IJavaProject javaProject) {
                        Properties properties = null;

                        //TODO 외부 프로퍼티 필요할 시 구현 / 필요없으면 제거할 것
                        try {
                            properties= BXMUtils.getProjectProperty(javaProject.getProject(), "ext.bxm.project.info");

                            String property = System.getProperty("code.inspection.debugging");
                            if("true".equals(property)) {
                                PluginLog.info("#[code.inspection.debugging] Project Name : " + javaProject.getElementName());

                                for(Object key : properties.keySet()) {
                                    PluginLog.info("#[code.inspection.debugging] Key : " + (String) key);
                                    PluginLog.info("#[code.inspection.debugging] Value : " +properties.getProperty((String)key));
                                }
                            }
                        } catch (Exception e) {
                            e.printStackTrace();
                            properties = new Properties();
                        }

                        return properties;
                    }
                }

4. 재구현된 메소드 목록(1)

재구현된 메소드 목록
메소드 이름 설명

getExternalProperties

프로젝트 내의 .properties 파일을 읽어와 반환합니다. 해당 properties 값은 인스펙션 룰셋에서 사용됩니다.

2.2. bindCodeInspectionRuleSetProvider

코드 인스펙션에서 기본 제공되는 룰셋 외에 추가적인 룰셋을 제공하는 제공자를 바인딩합니다.

1. 인터페이스 및 클래스

모듈이 반드시 구현 해야하는 인터페이스 또는 상속 해야하는 클래스입니다.

com.bankwareglobal.ide.bxframework.core.codeinspection.ICodeInspectionRuleSetProvider

2. 기본 구현 클래스

해당 기능을 위해 구현된 기본 클래스입니다. 인터페이스 및 클래스에서 필요한 기본 기능이 구현되어있으며 모듈을 확장할 경우 이 클래스를 상속 받아서 구현할 수 있습니다.

com.bankwareglobal.ide.bxframework.se.codeinspection.BxmDefaultCodeInspectionRuleSetProvider

3. 구현 예제

com.bankwareglobal.ide.bxframework.se.extensions.overriding.impl.ExtCodeInspectionRuleSetProvider

                package com.bankwareglobal.ide.bxframework.se.extensions.overriding.impl;

                import java.io.File;
                import java.net.URL;
                import java.util.Map;

                import org.eclipse.core.runtime.FileLocator;
                import org.eclipse.core.runtime.Path;

                import com.bankwareglobal.ide.bxframework.core.codeinspection.ICodeInspectionRuleSetProvider;
                import com.bankwareglobal.ide.bxframework.se.extensions.Activator;
                import com.beust.jcommander.internal.Maps;

                public class ExtCodeInspectionRuleSetProvider
                implements ICodeInspectionRuleSetProvider
                {
                    /**
                     * 코드 인스펙션의 룰셋 경로를 반환합니다.
                     */
                    @Override
                    public Map<String, ClassLoader> getRuleSetMap() {
                        Map<String, ClassLoader> map= Maps.newHashMap();

                        map.put("rulesets/bxm_ext.xml", Activator.getDefault().getClass().getClassLoader());

                        return map;
                    }

                    /**
                     * 코드 인스펙션 라이브러리 경로를 반환합니다.
                     */
                    @Override
                    public Map<String, URL> getLibraryToCopy() {
                        Map<String, URL> map= Maps.newHashMap();

                        String[] libs= {
                                "codeinspector.pmd.bxm.extension.rulesets-5.0.0.jar"
                        };

                        for (String lib : libs) {
                            String libPath= "/lib".concat(File.separator).concat(lib);

                            URL url= FileLocator.find(Activator.getDefault().getBundle(), new Path(libPath));

                            map.put(lib, url);
                        }

                        return map;
                    }

                }

4. 재구현된 메소드 목록(2)

재구현된 메소드 목록
메소드 이름 설명

getRuleSetMap

코드 인스펙션의 룰셋 경로를 반환합니다.

getLibraryToCopy

코드 인스펙션 라이브러리 경로를 반환합니다.

Copyright© Bankwareglobal All Rights Reserved.