코드 인스펙션
코드 인스펙션에서 커스터마이징 할 수 있는 영역을 제공합니다.
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 |
코드 인스펙션 라이브러리 경로를 반환합니다. |