# 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.

sonar.organization=apache
sonar.projectKey=apache-daffodil

sonar.modules=daffodil-cli,daffodil-core,daffodil-io,daffodil-japi,daffodil-lib,daffodil-macro-lib,daffodil-propgen,daffodil-runtime1,daffodil-runtime1-unparser,daffodil-runtime2,daffodil-sapi,daffodil-tdml-lib,daffodil-tdml-processor,daffodil-test,daffodil-test-ibm1,daffodil-udf
sonar.sources=src/main
sonar.tests=src/it,src/test
sonar.c.file.suffixes=-
sonar.cpp.file.suffixes=-
sonar.objc.file.suffixes=-

# TODO DAFFODIL-1747 Scala/Java APIs currently contain a lot of duplication
#  by their nature. Best to exclude them. This will want to be removed when
#  the ticket above is fixed
# TODO DAFFODIL-1958 Main.scala already has a ticket to reduce duplication. 
#  It can be excluded until that is resolved
sonar.cpd.exclusions=daffodil-sapi/src/main/scala/org/apache/daffodil/sapi/**/*,daffodil-japi/src/main/scala/org/apache/daffodil/japi/**/*,daffodil-cli/src/main/scala/org/apache/daffodil/Main.scala

sonar.java.binaries=target/**/classes
sonar.java.test.binaries=target/**/test-classes
sonar.java.libraries=../lib_managed/jars/**/*.jar
sonar.java.test.libraries=../lib_managed/jars/**/*.jar
