<?xml version="1.0" encoding="UTF-8"?>
<!--
  Licensed to the Apache Software Foundation (ASF) under one
  or more contributor license agreements. See the NOTICE file
  distributed with this work for additional information
  regarding copyright ownership. The ASF licenses this file
  to you under the Apache License, Version 2.0 (the
  "License"); you may not use this file except in compliance
  with the License. You may obtain a copy of the License at

  http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing,
  software distributed under the License is distributed on an
  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
  KIND, either express or implied. See the License for the
  specific language governing permissions and limitations
  under the License.
-->
<ruleset name="santuario-pmd" xmlns="http://pmd.sourceforge.net/ruleset/2.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://pmd.sourceforge.net/ruleset/2.0.0 http://pmd.sourceforge.net/ruleset_2_0_0.xsd">
  <description>
  A PMD ruleset for Apache Santuario
  </description>

  <rule ref="rulesets/java/basic.xml">
     <exclude name="AvoidUsingHardCodedIP" />
  </rule>
  <rule ref="rulesets/java/unusedcode.xml"/>
  <rule ref="rulesets/java/imports.xml"/>
  <rule ref="rulesets/java/braces.xml"/>
  <rule ref="rulesets/java/empty.xml">
      <exclude name="EmptyCatchBlock" />
  </rule>
  <rule ref="rulesets/java/migrating.xml">
     <exclude name="JUnit4TestShouldUseAfterAnnotation" /> 
     <exclude name="JUnit4TestShouldUseTestAnnotation" /> 
     <exclude name="JUnitUseExpected" /> 
  </rule>
  <rule ref="rulesets/java/unnecessary.xml"/>

</ruleset>
