긍정 오류 처리

품질 검사 프로세스가 완벽하지 않으며 실제로 문제가 아닌 문제를 잘못 식별하기도 합니다. 이 상태를 긍정 오류 ​이라고 합니다.

이러한 경우 소스 코드는 규칙 ID를 주석 속성으로 지정하는 표준 Java @SuppressWarnings 주석으로 추가할 수 있습니다. 예를 들어 한 가지 일반적인 긍정 오류는 하드코딩된 암호를 탐지하는 SonarQube 규칙이 하드코딩된 암호를 식별하는 방법에 대해 공격적일 수 있다는 것입니다.

다음 코드는 일부 외부 서비스에 연결하는 코드가 있는 AEM 프로젝트에서 상당히 일반적입니다.

@Property(label = "Service Password")
private static final String PROP_SERVICE_PASSWORD = "password";

SonarQube는 차단 취약점을 발생시킵니다. 그러나 코드를 검토한 후 이 문제는 취약점이 아니며 적절한 규칙 ID로 코드에 주석을 달 수 있다는 것을 알게 됩니다.

@SuppressWarnings("squid:S2068")
@Property(label = "Service Password")
private static final String PROP_SERVICE_PASSWORD = "password";

단, 코드가 실제로 다음과 같은 경우

@Property(label = "Service Password", value = "mysecretpassword")
private static final String PROP_SERVICE_PASSWORD = "password";

이때 하드 코딩된 암호를 제거하는 것이 올바른 해결 방법입니다.

NOTE
@SuppressWarnings 주석을 가능한 구체적으로 만드는 것이 가장 좋지만(문제를 일으키는 문이나 블록에만 주석 추가) 클래스 수준에서 주석을 추가하는 것도 가능합니다.
NOTE
명시적인 보안 테스트 단계는 없지만 코드 품질 단계에서 보안 관련 코드 품질 규칙이 평가됩니다. Cloud Service 보안에 대한 자세한 내용은 AEM as a Cloud Service 보안 개요를 참조하십시오.

콘텐츠 패키지 검색 최적화

품질 분석 프로세스의 일환으로 Cloud Manager는 Maven 빌드에서 생성된 콘텐츠 패키지에 대한 분석을 수행합니다. Cloud Manager은 이 프로세스를 가속화하기 위한 최적화를 제공하며, 이는 특정 패키징 제한이 관찰될 때 효과적입니다. 가장 중요한 최적화는 빌드에서 건너뛴 것으로 표시된 여러 콘텐츠 패키지를 포함하는 단일 "모든" 패키지를 생성하는 프로젝트를 타겟팅합니다. Cloud Manager가 이 시나리오를 감지하면 “모든” 패키지의 압축을 푸는 대신 개별 콘텐츠 패키지가 직접 스캔되고 종속성에 따라 정렬됩니다. 예를 들어 다음 빌드 출력을 고려해 보십시오.

  • all/myco-all-1.0.0-SNAPSHOT.zip (content-package)
  • ui.apps/myco-ui.apps-1.0.0-SNAPSHOT.zip (skipped-content-package)
  • ui.content/myco-ui.content-1.0.0-SNAPSHOT.zip (skipped-content-package)

myco-all-1.0.0-SNAPSHOT.zip 내에 있는 항목만 건너뛴 두 개의 콘텐츠 패키지인 경우, “모든” 콘텐츠 패키지 대신 임베드된 두 개의 패키지가 스캔됩니다.

수십 개의 임베드된 패키지를 생성하는 프로젝트의 경우, 이 최적화는 파이프라인 실행당 10분 이상 절약되는 것으로 나타났습니다.

“모든” 콘텐츠 패키지에 건너뛴 콘텐츠 패키지와 OSGi 번들의 조합이 포함된 경우 특별한 경우가 발생할 수 있습니다. 예를 들어 myco-all-1.0.0-SNAPSHOT.zip에 앞서 언급한 두 개의 임베드된 패키지가 포함된 경우, 하나 이상의 OSGi 번들로만 구성된 새로운 최소 콘텐츠 패키지가 구성됩니다. 이 패키지의 이름은 항상 cloudmanager-synthetic-jar-package이고 포함된 번들은 /apps/cloudmanager-synthetic-installer/install에 배치됩니다.

NOTE
  • 이 최적화는 AEM에 배포된 패키지에 영향을 주지 않습니다.
  • 임베드된 콘텐츠 패키지와 건너뛴 콘텐츠 패키지 간의 일치는 파일 이름을 사용합니다. 건너뛴 여러 패키지가 동일한 파일 이름을 공유하거나 임베드 중에 파일 이름이 변경되는 경우에는 이 최적화를 수행할 수 없습니다.

Experience Manager