2

매우 복잡한 XML 구성을 사용하는 프로젝트에서 작업했으며, XML의 내부 일관성 유지 문제가있었습니다.XML 설정 파일의 내부 일관성을 검사하는 도구, 규칙 또는 프로세스

이 경우 나는 엄격한 XML 스키마 일관성을 의미하는 것이 아니라 사용 된 노드 간의 상위 레벨 관계를 의미합니다. 대부분의 문제는 XML로 인코딩 된 정보와 코드베이스에 대한 정보의 암묵적인 관계 사이의 암시 적 연결로 인해 발생했습니다. 예는 다음과 같을 수 있습니다

  • XML 노드 데이터를 암시 적으로 그들 사이
  • 명시 관계없이 (즉, 그들은 일관 할 필요가 정보를 공유) 코드에서 열거 관련된 동일한 설정에서
  • 비즈니스 개체를 연결 XML에서
  • 코드가 실행

에서 컴파일 및 분석 할 수 그것은)이 증가 주파수의 실천 될 수도 있다는 생각 난 및 b)는 그 어떤 경우에는 우리가 암시 적없는 새로운 코딩 언어를 만드는 컴파일 시간을 확인했다. 그것이 실행될 때까지 약간의 수표.

비슷한 시나리오에 직면 한 사람이 있습니까? 문제를 더 쉽게 처리 할 수있는 도구 나 접근법이 있습니까? 기술에 의존하지 않는 몇 가지 일반적인 예를 원합니다. 제 자신의 구체적인 경험은 C# 및 독점 시스템의 구성이었습니다.

참고 : 여기에 대한 답변이 있지만 최종 답변으로 사용할 생각은 없습니다.

+0

이 언어/기술에 대한 불가지론을 지키고 싶습니다. 그러나 저는 일반적으로 C#으로 작업하고 있습니다. 덕분에 –

답변

2

이것은 프로젝트에 사용하는 언어/프레임 워크/도구에 따라 크게 달라집니다.

XML을 구성에 사용하면 시간을 컴파일 할 때 컴파일 할 수 없기 때문에 실제로 문제가 될 수 있습니다.

예를 들어 Java 및 Spring Framework을 사용하는 경우 Spring Tool Suite이라는 이클립스 플러그인이 있으며 XML 구성과 실제 코드 간의 동기화 검사를 수행 할 수 있습니다.

그러나 이것은 특정 언어와 특정 프레임 워크의 한 예일뿐입니다. 자신의 시나리오와 비슷한 것이 있는지 알아봐야합니다.

그런데 사용중인 기술을 알려 주시면 더 많은 도움을 드릴 수 있습니다.

+0

. 사실 비즈니스 규칙과 관련이 있기 때문에이 언어와 시스템을 불가지론 그대로 유지하려고했습니다. 즉, 내가 일반적으로 작업하고있는 것에 대한 의견을 추가 할 것입니다. –

1

@ 데이비드 벨렉의는 "비즈니스 규칙"검사를 포함하여 XML을 확인하기 위해 제품을 제공 Topologi이다에서에 좋은 링크.

2

나는 자동 기능 테스트를 사용하여 직장에서 기본 구성의 데이터 무결성을 보장합니다. 내가 말한 문제가 필연적으로 XML이되는 설정 형식에 의존한다는 것을 알지 못합니다.그게 내가 제안 할 것이라고 말했다 :

  • 당신은 설정 형식으로 XML을 사용하지 마십시오. (Google에서 이유를 제시 할 수 있습니다.)
  • enum이나 다른 생성 된 값의 암묵적인 사용을 통한 긴밀한 결합은 코드 에서처럼 구성에서와 마찬가지로 나쁩니다.
  • 설정에서 가져 와서 실행되는 코드는 나를 싫어합니다. 그것은 오버라이드 될 수 있도록 설정되어 있습니까? 그렇다면 버그, 정의되지 않은 동작 및 잠재적 인 보안 문제에 대한 거대한 벡터입니다.
  • 비즈니스 개체 문제는 잘못된 연결 고리처럼 들립니다.

구성 형식, 잘못된 연결 또는 구성 코드 실행과 관련하여 XML에 대해 아무 것도 할 수 없습니다. 당신은 보장 기능 테스트 스위트 작성하여 위험을 완화 할 수 있습니다

  • 열거 형이
  • 는, 실행 파일, evals, RPC 호출을 컴파일 가능한이 포함되어 있지 않습니다되는 코드가 어떤 함수를 호출하지
  • 유효를, 또는 무엇이든 추가하려는 다른 분석 검사.

대체 (구성 또는 구성 항목)를 제공하여 변경하는 데 도움이되는 경우도 있습니다.

+0

응답 해 주셔서 감사합니다. 테스트를 작성하는 방법에 대해 궁금해했습니다. 필자는 XML 태그와 일치하는 태그로 태그를 붙이는 것에 대해 궁금해했습니다. 예를 들어 자동화 된 테스트를 통해 일치시킬 수 있습니다. 검사를 작성하는 데 특별한 것을합니까? –

+0

btw : 모든 종류의 비정상적인 코드 인 code-in-config에 매우 동의했습니다. –

+1

xml 노드와 코드에 태그를 지정하는 대신 tight coupling을 제거하는 것이 좋습니다. 내 테스트는 대개 기능 테스트, 변형 테스트 및 특정 코드 조각에 대한 단위 테스트를 수정 한 것입니다. – dietbuddha

관련 문제