##########################################################################################
# Customize file classifications.                                                        #
# Results from files under any classifier will be excluded from LGTM                     #
# statistics.                                                                            #
##########################################################################################

##########################################################################################
# Use the `path_classifiers` block to define changes to the default classification of    #
# files.                                                                                 #
##########################################################################################

path_classifiers:
        # docs:
    # Identify the top-level file called `generate_javadoc.py` as documentation-related.
  test:
    # Override LGTM's default classification of test files by excluding all files.
    - exclude: /
    # Classify all files in the top-level directories tests/ and testsuites/ as test code.
    - tests
      # - testsuites
    # Classify all files with suffix `.test` as test code.
    #        Note: use only forward slash / as a path separator.
    #        Use ** to indicate an arbitrary parent path.
    #        Use * to indicate any sequence of characters excluding /.
    #        Always enclose the expression in double quotes if it includes *.
    # - "**/*.test"
    # Refine the classifications above by excluding files in test/util/.
    # - exclude: test/util
  # The default behavior is to tag all files created during the
  # build as `generated`. Results are hidden for generated code. You can tag 
  # further files as being generated by adding them to the `generated` section.
  generated:
    # Exclude all `*.c` files under the `ui/` directory from classification as 
    # generated code.
    # - exclude: ui/**/*.c
    # By default, all files not checked into the repository are considered to be
    # 'generated'.
  # The default behavior is to tag library code as `library`. Results are hidden 
  # for library code. You can tag further files as being library code by adding them
  # to the `library` section.
  library:
    - exclude: deps/
  # The default behavior is to tag template files as `template`. Results are hidden 
  # for template files. You can tag further files as being template files by adding 
  # them to the `template` section.
  template:
          #- exclude: path/to/template/code/**/*.c
  # Define your own category, for example: 'some_custom_category'.
  some_custom_category:
    # Classify all files in the top-level directory tools/ (or the top-level file 
    # called tools).
    # - tools

#########################################################################################
# Use the `queries` block to change the default display of query results.               #
#########################################################################################

          # queries:
  # Start by hiding the results of all queries.
  #  - exclude: "*"
  # Then include all queries tagged 'security' and 'correctness', and with a severity of
  # 'error'.
  #  - include:           
  #      tags:
  #        - "security"
  #        - "correctness"           
  #    severity: "error"
  # Specifically hide the results of two queries.
  # - exclude: cpp/use-of-goto
    # - exclude: java/equals-on-unrelated-types
  # Refine by including the `java/command-line-injection` query.
  # - include: java/command-line-injection

#########################################################################################
# Define changes to the default code extraction process.                                #
# Each block configures the extraction of a single language, and modifies actions in a  #
# named step. Every named step includes automatic default actions,                      #
# except for the 'prepare' step. The steps are performed in the following sequence:     #
# prepare                                                                               #
# after_prepare                                                                         #
# configure (C/C++ only)                                                                #
# python_setup (Python only)                                                            #
# before_index                                                                          #
# index                                                                                 #
##########################################################################################

#########################################################################################
# Environment variables available to the steps:                                         #
#########################################################################################

# LGTM_SRC
#   The root of the source tree.
# LGTM_WORKSPACE
#   An existing (initially empty) folder outside the source tree.
#   Used for temporary download and setup commands.

#########################################################################################
# Use the extraction block to define changes to the default code extraction process     #
# for one or more languages. The settings for each language are defined in a child      #
# block, with one or more steps.                                                        #
#########################################################################################

extraction: 
  # Define settings for C/C++ analysis
  #####################################
  cpp:
    # The `prepare` step exists for customization on LGTM.com only.
    prepare:
    #   # The `packages` section is valid for LGTM.com only. It names Ubuntu packages to
    #   # be installed.
        packages:
          - cmake
    # Add an `after-prepare` step if you need to run commands after the prepare step.
    # Each command should be listed on a separate line.
    # This step is useful for C/C++ analysis where you want to prepare the environment
    # for the `configure` step without changing the default behavior for that step. 
    #    after_prepare:
            #- export GNU_MAKE=make
            #- export GIT=true
    # The `configure` step generates build configuration files which the `index` step
    # then uses to build the codebase.
    configure:
      command:
        - mkdir build
        - cd build
        - cmake ..
              # - ./prepare_deps
    # Optional step. You should add a `before_index` step if you need to run commands
    # before the `index` step.
    # before_index:
            # - export BOOST_DIR=$LGTM_SRC/boost
            # - export GTEST_DIR=$LGTM_SRC/googletest
            # - export HUNSPELL_DIR=$LGTM_SRC/hunspell
            # - export CRYPTOPP_DIR=$LGTM_SRC/cryptopp
    # The `index` step builds the code and extracts information during the build
    # process.
    index:
      # Override the autobuild process by specifying a list of custom build commands
      # to use instead. 
      build_command:
        - cd build
        - make
              # - $GNU_MAKE -j2 -s
      # Specify that all project or solution files should be used for extraction.
      # Default: false.
      # all_solutions: true
      # Specify a list of one or more project or solution files for extraction.
      # Default: LGTM chooses the file closest to the root of the repository (this may
      # fail if there are multiple candidates).
      # solution: 
      #  - myProject.sln
      # Specify MSBuild settings
      # msbuild:
        # Specify a list of additional arguments to MSBuild. Default: empty.
        # arguments: /p:Platform=x64 /p:Configuration=Release
        # Specify the MSBuild configuration to use, for example, debug or release.
        # Default: read from the solution file or files.
        # configuration:
        # Specify the platform to target, for example: x86, x64, or Any CPU.
        # Default: read from the solution file or files.
        # platform:
        # Specify the MSBuild target. Default: rebuild.
        # target:
      # Specify whether or not to perform a NuGet restore for extraction. Default: true.
      # nuget_restore: false
      # Specify a version of Microsoft Visual Studio to use for MSBuild or any custom
      # build commands (build_command). For example:
      #    10 for Visual Studio 2010
      #    12 for Visual Studio 2012
      #    14 for Visual Studio 2015
      #    15 for Visual Studio 2017
      # Default: read from project files.
      # vstools_version: 10

  # Define settings for C# analysis
  ##################################
  #  csharp:
    # The `prepare` step exists for customization on LGTM.com only.
    # prepare:
    #   packages:
    #     - example_package
    # Add an `after-prepare` step if you need to run commands after the `prepare` step.
    # Each command should be listed on a separate line.
    #  after_prepare:
    #  - export PATH=$LGTM_WORKSPACE/tools:$PATH
    # The `index` step builds the code and extracts information during the build
    # process.
    #index:
      # Specify that all project or solution files should be used for extraction.
      # Default: false.
      #  all_solutions: true
      # Specify a list of one or more project or solution files for extraction.
      # Default: LGTM chooses the file closest to the root of the repository (this may
      # fail if there are multiple candidates).
      # solution: 
      #  - myProject.sln
      # Override the autobuild process by specifying a list of custom build commands
      # to use instead. 
      # build_command:
      #  - ./example-compile-all.sh
      # By default, LGTM analyzes the code by building it. You can override this,
      # and tell LGTM not to build the code. Beware that this can lead
      # to less accurate results.
      # buildless: true
      # Specify .NET Core settings.
      # dotnet:
        # Specify additional arguments to `dotnet build`.
        # Default: empty.
        # arguments: "example_arg"
        # Specify the version of .NET Core SDK to use.
        # Default: The version installed on the build machine.
        # version: 2.1
      # Specify MSBuild settings.
      # msbuild:
        # Specify a list of additional arguments to MSBuild. Default: empty.
        # arguments: /P:WarningLevel=2
        # Specify the MSBuild configuration to use, for example, debug or release.
        # Default: read from the solution file or files.
        # configuration: release
        # Specify the platform to target, for example: x86, x64, or Any CPU.
        # Default: read from the solution file or files.
        # platform: x86
        # Specify the MSBuild target. Default: rebuild.
        # target: notest
      # Specify whether or not to perform a NuGet restore for extraction. Default: true.
      # nuget_restore: false
      # Specify a version of Microsoft Visual Studio to use for MSBuild or any custom
      # build commands (build_command). For example:
      #    10 for Visual Studio 2010
      #    12 for Visual Studio 2012
      #    14 for Visual Studio 2015
      #    15 for Visual Studio 2017
      # Default: read from project files
      # vstools_version: 10
      # Specify additional options for the extractor,
      # for example --fast to perform a faster extraction that produces a smaller 
      # database.
      # extractor: "--fast"

  # Define settings for Go analysis
  ##################################
  #  go:
    # The `prepare` step exists for customization on LGTM.com only.
    # prepare:
    #   packages:
    #     - example_package
    # Add an `after-prepare` step if you need to run commands after the `prepare` step.
    # Each command should be listed on a separate line.
    # after_prepare:
    #  - export PATH=$LGTM_WORKSPACE/tools:$PATH
    # The `index` step builds the code and extracts information during the build
    # process.
    # index:
      # Override the autobuild process by specifying a list of custom build commands
      # to use instead.
      # build_command:
              #  - ./compile-all.sh

  # Define settings for Java analysis
  ####################################
  #  java:
    # The `prepare` step exists for customization on LGTM.com only.
    # prepare:
    #   packages:
    #     - example_package
    # Add an `after-prepare` step if you need to run commands after the prepare step.
    # Each command should be listed on a separate line.
    # after_prepare:
    # - export PATH=$LGTM_WORKSPACE/tools:$PATH
    # The `index` step extracts information from the files in the codebase.
    # index:
      # Specify Gradle settings.
      # gradle:
        # Specify the required Gradle version.
        # Default: determined automatically.
        # version: 4.4
      # Override the autobuild process by specifying a list of custom build commands
      # to use instead. 
      # build_command: ./compile-all.sh
      # Specify the Java version required to build the project.
      # java_version: 11
      # Specify whether to extract Java .properties files
      # Default: false
      # properties_files: true
      # Specify Maven settings.
      # maven:
        # Specify the path (absolute or relative) of a Maven settings file to use.
        # Default: Maven uses a settings file in the default location, if it exists.
        # settings_file: /opt/share/settings.xml
        # Specify the path of a Maven toolchains file.
        # Default: Maven uses a toolchains file in the default location, if it exists.
        # toolchains_file: /opt/share/toolchains.xml
        # Specify the required Maven version.
        # Default: the Maven version is determined automatically, where feasible.
        # version: 3.5.2
      # Specify how XML files should be extracted:
      #   all = extract all XML files.
      #   default = only extract XML files named `AndroidManifest.xml`, `pom.xml`, and `web.xml`.
      #   disabled = do not extract any XML files.
      # xml_mode: all

  # Define settings for JavaScript analysis
  ##########################################
  # javascript:
    # The `prepare` step exists for customization on LGTM.com only.
    # prepare:
    #   packages:
    #     - example_package
    # Add an `after-prepare` step if you need to run commands after the prepare step.
    # Each command should be listed on a separate line.
    # after_prepare:
    # - export PATH=$LGTM_WORKSPACE/tools:$PATH
    # The `index` step extracts information from the files in the codebase.
    # index:
      # Specify a list of files and folders to extract.
      # Default: The project root directory.
      # include:
              # - src/js
      # Specify a list of files and folders to exclude from extraction.
      # exclude:
              # - thirdparty/lib
      # You can add additional file types for LGTM to extract, by mapping file 
      # extensions (including the leading dot) to file types. The usual 
      # include/exclude patterns apply, so, for example, `.jsm` files under
      # `thirdparty/lib` will not be extracted.
      # filetypes:
      # ".jsm": "js"
      # ".tmpl": "html"
      # Specify a list of glob patterns to include/exclude files from extraction; this 
      # is applied on top of the include/exclude paths from above; patterns are 
      # processed in the same way as for path classifiers above.
      # Default: include all files with known extensions (such as .js, .ts and .html),
      # but exclude files ending in `-min.js` or `.min.js` and folders named `node_modules`
      # or `bower_components`
      # filters:
        # exclude any *.ts files anywhere.
        # - exclude: "**/*.ts"
        # but include *.ts files under src/js/typescript.
        # - include: "src/js/typescript/**/*.ts"
      # Specify how TypeScript files should be extracted:
      #   none = exclude all TypeScript files.
      #   basic = extract syntactic information from TypeScript files.
      #   full = extract syntactic and type information from TypeScript files.
      # Default: full.
      # typescript: basic
      # By default, LGTM doesn't extract any XML files. You can override this by 
      # using the `xml_mode` property and setting it to `all`.
      # xml_mode: all

  # Define settings for Python analysis
  ######################################
  #  python:
  #    # The `prepare` step exists for customization on LGTM.com only.
  #    # prepare:
  #    #   # The `packages` section is valid for LGTM.com only. It names packages to
  #    #   # be installed.
  #    #   packages: libpng-dev
  #    # This step is useful for Python analysis where you want to prepare the 
  #    # environment for the `python_setup` step without changing the default behavior 
  #    # for that step.
  #    after_prepare:
  #      - export PATH=$LGTM_WORKSPACE/tools:$PATH
  #      # This sets up the Python interpreter and virtual environment, ready for the 
  #      # `index` step to extract the codebase.
  #    python_setup:
  #      # Specify packages that should NOT be installed despite being mentioned in the
  #      # requirements.txt file.
  #      # Default: no package marked for exclusion.
  #      exclude_requirements:
  #        - pywin32
  #      # Specify a list of pip packages to install.
  #      # If any of these packages cannot be installed, the extraction will fail.
  #      requirements:
  #        - Pillow
  #      # Specify a list of requirements text files to use to set up the environment,
  #      # or false for none. Default: any requirements.txt, test-requirements.txt,
  #      # and similarly named files identified in the codebase are used.
  #      requirements_files:
  #        - required-packages.txt
  #      # Specify a setup.py file to use to set up the environment, or false for none.
  #      # Default: any setup.py files identified in the codebase are used in preference
  #      # to any requirements text files.
  #      setup_py: new-setup.py
  #      # Override the version of the Python interpreter used for setup and extraction
  #      # Default: Python 3.
  #      version: 2
  #    # Optional step. You should add a `before_index` step if you need to run commands
  #    # before the `index` step.
  #    before_index:
  #      - antlr4 -Dlanguage=Python3 Grammar.g4
  #    # The `index` step extracts information from the files in the codebase.
  #    index:
  #      # Specify a list of files and folders to exclude from extraction.
  #      # Default: Git submodules and Subversion externals.
  #      exclude:
  #        - legacy-implementation
  #        - thirdparty/libs
  #      filters:
  #       - exclude: "**/documentation/examples/snippets/*.py"
  #       - include: "**/documentation/examples/test_application/*"
  #      include:
  #        - example/to/include
