<commit_before># Configuration file documentation for KernelHaven
#
# This file lists all known configuration options that are available for
# KernelHaven. Note that some plugins may define their own settings, that are
# not listed in this file. However, this file should cover the most common
# plugins.
#
# This configuration file is a standard Java Properties file (see the
# documentation of java.util.Properties). A properties file is a key-value
# storage in the format: key = value. Lines starting with a hash (#) are
# comments and not considered in parsing. Multiple lines can be joined together
# with a backslash (\) character directly in front of the line break. This is
# useful for multi-line values or formatting.
#
# This file lists the keys for the settings defined in the main infrastructure,
# followed by the settings of common plugins. Each setting has a short
# description, that contains:
#  * An explanation text for the setting.
#  * The type of setting (see below for a list possible types).
#  * For enums: The possible values.
#  * The default value for the setting, if it specifies one.
#  * If no default value is specified: Whether the setting is mandatory or not.
#
# Possible setting types are:
#  * String: A simple text value.
#  * Integer: An integer value. An exception is generated if this is not a valid
#             integer.
#  * Boolean: A boolean value. Everything except "true" (case insensitive) is
#             considered to be the value false.
#  * Regular Expression: A Java regular expression. See the documentation for
#                        java.util.regex.Pattern class.
#  * Path: A path value. The file denoted by this does not have to exist.
#  * Existing File: A path value for an existing file. If the specified file
#                   does not exist, then an exception is thrown. This can either
#                   be absolute, relative to the current working directory or
#                   relative to the source_tree setting (first file found in
#                   this order is used).
#  * Existing Directory: A path value for an existing directory. If the
#                        specified directory does not exist, then an exception
#                        is thrown. This can either be relative to the current
#                        working directory or an absolute path.
#  * Enum: One value of an enumartion of possible values. Not case sensitive.
#  * Comma separated list of strings: A comma separated list of string values.
#  * List of setting keys: A list of string values created from multiple setting
#                          keys. The base key is appended by a .0 for the first
#                          value. The following values increase this integer.
#                          For example:
#                            key.0 = a
#                            key.1 = b
#                            key.2 = c
#                          Defines the list ["a", "b", "c"].
#
# This was automatically generated on: 2018-03-11 01:50:37

#######################
# Main Infrastructure #
#######################

# The path where extractors can store their resources. The extractors create
# sub-folders in this called the same as their fully qualified class names (to
# prevent conflicts). This has to be always set to a valid directory with write
# and read access.
#
# Type: Existing Directory
# Mandatory: Yes
resource_dir =

# The path where the output files of the analysis will be stored. This has to be
# always set to a valid directory with write access.
#
# Type: Existing Directory
# Mandatory: Yes
output_dir =

# The path where plugin .jars are loaded from. Every .jar in this directory is
# loaded into the JVM. This has to be always set to a valid directory with read
# access.
#
# Type: Existing Directory
# Mandatory: Yes
plugins_dir =

# This is the directory where the providers will write and read their cache.
# This has to be set to a valid directory with write and read access.
#
# Type: Existing Directory
# Mandatory: Yes
cache_dir =

# The path where log files will be written. This has to be set to a valid
# directory with write access.
#
# Type: Existing Directory
# Default value: .
log.dir =

# Directory to write the archive of the infrastrucure execution to. This has to
# be set to a valid directory with write access.
#
# Type: Existing Directory
# Default value: .
archive.dir =

# If set to true all log messages will be written to console.
#
# Type: Boolean
# Default value: true
log.console =

# If set to true all log messages will be written to a file in the log
# directory.
#
# Type: Boolean
# Default value: false
log.file =

# Defines the maximum log level to log.
#
# Type: Enum
# Possible values: NONE, ERROR, WARNING, INFO, DEBUG
# Default value: INFO
log.level =

# If set to true the infrastructure will archive itself, plugins, results,
# configuration and logs after the execution is finished. Alternative to the
# --archive command line parameter.
#
# Type: Boolean
# Default value: false
archive =

# Defines whether the source tree should be included in the archive.
#
# Type: Boolean
# Default value: false
archive.source_tree =

# Defines whether the cache directory should be included in the archive.
#
# Type: Boolean
# Default value: false
archive.cache_dir =

# Defines whether the ressource directory should be included in the archive.
#
# Type: Boolean
# Default value: false
archive.res_dir =

# The fully qualified class name of the analysis that should be run.
#
# Type: String
# Mandatory: Yes
analysis.class =

# Specifies which analysis components (simple class name) of a PipelineAnalysis
# should output their intermediate results. These will be written in addition to
# the result of the main component.
#
# Type: Comma separated list of strings
# Default value: (empty string)
analysis.output.intermediate_results =

# A string specifying a pipeline of analyis components. This only has an effect
# if analysis.class is set to
# net.ssehub.kernel_haven.analysis.ConfiguredPipelineAnalysis.
#
# Type: String
# Default value: (empty string)
analysis.pipeline =

# A file suffix that specifies which kind of output writer shall be used. If
# IOUtils is used, then xls or xlsx can be used here.
#
# Type: String
# Default value: csv
analysis.output.type =

# Defines whether the analysis should only consider variables that are present
# in the variability model.
#
# Type: Boolean
# Default value: false
analysis.consider_vm_vars_only =

# The path to the source tree of the product line that should be analyzed.
#
# Type: Existing Directory
# Mandatory: Yes
source_tree =

# The architecture of the Linux Kernel that should be analyzed. Most Linux
# extractors require this.
#
# Type: String
# Mandatory: No
arch =

# The fully qualified class name of the extractor for the code model.
#
# Type: String
# Default value: net.ssehub.kernel_haven.code_model.EmptyCodeModelExtractor
code.extractor.class =

# The maximum time the provider waits for the results of the extractor until an
# exception is thrown. In milliseconds; 0 = no timeout used.
#
# Type: Integer
# Default value: 0
code.provider.timeout =

# Defines whether the code model provider will write its results to the cache
# directory.
#
# Type: Boolean
# Default value: false
code.provider.cache.write =

# Defines whether the code model provider is allowed to read the cache instead
# of starting the extractor.
#
# Type: Boolean
# Default value: false
code.provider.cache.read =

# Whether the individual cache files for the code model should written as
# compressed Zip archives. Reading of compressed cache files is always
# supported.
#
# Type: Boolean
# Default value: false
code.provider.cache.compress =

# Defines which files the code extractor should run on. Comma separated list of
# paths relative to the source tree. If directories are listed, then they are
# searched recursively for files that match the regular expression specified in
# code.extractor.file_regex. Set to an empty string to specify the complete
# source tree.
#
# Type: Comma separated list of strings
# Default value: (empty string)
code.extractor.files =

# A Java regular expression defining which files are considered to be source
# files for parsing. See code.extractor.files for a description on which files
# this expression is tested on.
#
# Type: Regular Expression
# Default value: .*\.c
code.extractor.file_regex =

# The number of threads the code extractor should use. This many files are
# parsed in parallel.
#
# Type: Integer
# Default value: 1
code.extractor.threads =

# Defines whether non-boolean conditions that are encountered in the code should
# be (fuzzily) convereted into boolean conditions, instead of throwing an
# exception. For example, this replaces (A == 1) && B with A_eq_1 && B.
#
# Type: Boolean
# Default value: false
code.extractor.fuzzy_parsing =

# The fully qualified class name of the extractor for the build model.
#
# Type: String
# Default value: net.ssehub.kernel_haven.build_model.EmptyBuildModelExtractor
build.extractor.class =

# The maximum time the provider waits for the results of the extractor until an
# exception is thrown. In milliseconds; 0 = no timeout used.
#
# Type: Integer
# Default value: 0
build.provider.timeout =

# Defines whether the build model provider will write its results to the cache
# directory.
#
# Type: Boolean
# Default value: false
build.provider.cache.write =

# Defines whether the code model build is allowed to read the cache instead of
# starting the extractor.
#
# Type: Boolean
# Default value: false
build.provider.cache.read =

# The fully qualified class name of the extractor for the variability model.
#
# Type: String
# Default value: net.ssehub.kernel_haven.variability_model.EmptyVariabilityModelExtractor
variability.extractor.class =

# The maximum time the provider waits for the results of the extractor until an
# exception is thrown. In milliseconds; 0 = no timeout used.
#
# Type: Integer
# Default value: 0
variability.provider.timeout =

# Defines whether the variability model provider will write its results to the
# cache directory.
#
# Type: Boolean
# Default value: false
variability.provider.cache.write =

# Defines whether the variability model provider is allowed to read the cache
# instead of starting the extractor.
#
# Type: Boolean
# Default value: false
variability.provider.cache.read =

# Path of a single file to be parsed by a variability model extractor.
#
# Type: Existing File
# Mandatory: No
variability.input.file =

# A list of fully qualified class names that defines which preparations to run.
# A preparation class has to implement IPreperation. The preparations defined
# here are executed in the defined order.
#
# Type: List of setting keys
# Mandatory: No
preparation.class.0 =

###################
# NonBooleanUtils #
###################

# The destination directory where a temporary copy of the source tree with the
# non boolean replacements should be placed. All contents of this will be
# overwritten.
#
# Type: Existing Directory
# Mandatory: Yes
prepare_non_boolean.destination =

# A regular expression to define what the variables that require non-boolean
# replacements look like. This regex should also cover the names of the constant
# variables, that should be replaced by their value.
#
# Type: Regular Expression
# Mandatory: Yes
code.extractor.variable_regex =

#########################
# FeatureEffectAnalysis #
#########################

# Location an historical SPL configuration file, which should be analyses
# w.r.t.the relevance of the configured variables.
#
# Type: Existing File
# Mandatory: Yes
analysis.config_relevancy_checker.configuration_file =

# Defines a regular expression that specifies which variables should be present
# in the output.
#
# Type: Regular Expression
# Default value: .*
analysis.relevant_variables =

# Specifies whether and and which analysis step, results should be simplified:
#  - NO_SIMPLIFICATION: Won't simplifiy results.
#  - PRESENCE_CONDITIONS: Will simplifiy (indermediate) results of presence
#    condition detection and all later steps.
#  - FEATURE_EFFECTS: Will simplifiy the results of the feature effect
# analysis.
#
# Type: Enum
# Possible values: NO_SIMPLIFICATION, PRESENCE_CONDITIONS, FEATURE_EFFECTS
# Default value: NO_SIMPLIFICATION
analysis.simplify_conditions =

# A CSV file containing the feature effects to be read by the
# net.ssehub.kernel_haven.fe_analysis.fes.FeatureEffectReader
#
# Type: Existing File
# Mandatory: Yes
analysis.feature_effect.file =

###############
# MetricHaven #
###############

# Defines which lines of code should be counted for a function:
# DLOC: Counts all statements, i.e., all delivered Lines of Code (dLoC).
# LOF: Counts all variable statements, sometimes refereed to as Lines of
# Feature code (LoF).
# PLOF: Computes the fraction of LoF/dLoC.
#
# Type: Enum
# Possible values: DLOC, LOF, PLOF
# Default value: DLOC
metric.loc.measured_type =

# Defines which variables should be counted for a function.
#
# Type: Enum
# Possible values: MCCABE, VARIATION_POINTS, ALL
# Default value: MCCABE
metric.cyclomatic_complexity.measured_type =

# Defines which type of fan in/out should be counted for a function.
#
# Type: Enum
# Possible values: CLASSICAL_FAN_IN_GLOBALLY, CLASSICAL_FAN_IN_LOCALLY, CLASSICAL_FAN_OUT_GLOBALLY, CLASSICAL_FAN_OUT_LOCALLY
# Default value: CLASSICAL_FAN_IN_GLOBALLY
metric.fan_in_out.type =

# Defines which variables should be counted for a function.
#
# Type: Enum
# Possible values: INTERNAL, EXTERNAL, ALL
# Default value: ALL
metric.variables_per_function.measured_variables_type =

# Defines what should be counteded as the nesting depth:
# CLASSIC_ND_MAX: Counts the max. nesting depth w.r.t classical control
# structures.
# CLASSIC_ND_AVG: Counts the avg. nesting depth w.r.t classical control
# structures.
# VP_ND_MAX: Counts the max. nesting depth w.r.t variation points (CPP-blocks).
# VP_ND_AVG: Counts the avg. nesting depth w.r.t variation points (CPP-blocks).
# COMBINED_ND_MAX: CLASSIC_ND_MAX + VP_ND_MAX
# COMBINED_ND_AVG: CLASSIC_ND_AVG + VP_ND_AVG
#
# Type: Enum
# Possible values: CLASSIC_ND_MAX, CLASSIC_ND_AVG, VP_ND_MAX, VP_ND_AVG, COMBINED_ND_MAX, COMBINED_ND_AVG
# Default value: CLASSIC_ND_MAX
metric.nesting_depth.measured_type =

# Defines whether and how to incorporate scattering degree valuesinto
# measurement results.
# : - NO_SCATTERING: Do not consider scattering degree (default).
#  - SD_VP: Use variation point scattering.
#  - SD_FILE: Use filet scattering.
#
# Type: Enum
# Possible values: NO_SCATTERING, SD_VP, SD_FILE
# Default value: NO_SCATTERING
metric.function_measures.consider_scattering_degree =

# Specifies, the line number that the CodeFunctionByLineFilter should filter the
# code functions for. It will pass on the function that this line lies in.
#
# Type: Integer
# Mandatory: Yes
analysis.code_function.line =

##################
# UnDeadAnalyzer #
##################

# Defines the type of missing analysis to execute.
#
# Type: Enum
# Possible values: DEFINED_BUT_NOT_USED, USED_BUT_NOT_DEFINED
# Default value: DEFINED_BUT_NOT_USED
analysis.missing.type =

########################
# KbuildMinerExtractor #
########################

# List of top-folders to analyze in the product line. If this is not specfied,
# it is automatically generated from the arch setting.
#
# Type: String
# Mandatory: No
build.extractor.top_folders =

##########################
# KconfigReaderExtractor #
##########################

# If set to true, the extractor will store source locations for each variable.
# Those locations represent occurences of the variable in the files that
# kconfigreader used for generating the VariabilityModel.
#
# Type: Boolean
# Default value: false
variability.extractor.find_locations =

#####################
# TypeChefExtractor #
#####################

# TODO
#
# Type: Boolean
# Default value: false
code.extractor.ignore_other_models =

# Specifies the granularity of the translation result:
#  - LEXER: Stops the translation after the lexer and returns a flat list of
# presence
#    conditions only
#  - ONLY_C_AST: Translates the content of the C-Code only. This includes also
#    embedded macro class of a C-functions. However, this will skip all
#    header-specific elements, which are not nested inside a C-code element.
#    For instance, these may be structs or function declarations.
#  - FULL_AST: These will generate a full AST. This will also include
# definitions
#    of included headers, even if this code is not embedded in C-code. This
#    facilitates more detailed analyses like data flow analysis. However, this
#    approach is significantly slower (~ 2x) and requires significantly more
# hard
#    drive space (~ 40x) if the result is cached, with respect to ONLY_C_AST.
#
# Type: Enum
# Possible values: FULL_AST, ONLY_C_AST, LEXER
# Mandatory: Yes
code.extractor.parse_type =

# TODO
#
# Type: Existing Directory
# Default value: /
code.extractor.system_root =

# TODO
#
# Type: Boolean
# Default value: false
code.extractor.skip_default_include_dirs =

# TODO
#
# Type: String
# Default value: 15g
code.extractor.process_ram =

# TODO
#
# Type: List of setting keys
# Mandatory: No
code.extractor.static_include.0 =

# TODO
#
# Type: List of setting keys
# Mandatory: No
code.extractor.post_include_dir.0 =

# TODO
#
# Type: List of setting keys
# Mandatory: No
code.extractor.source_include_dir.0 =

# TODO
#
# Type: Boolean
# Default value: false
code.extractor.add_linux_source_include_dirs =

# TODO
#
# Type: List of setting keys
# Mandatory: No
code.extractor.preprocessor_define.0 =

# TODO
#
# Type: Existing File
# Mandatory: No
code.extractor.kbuildparam_file =

# TODO
#
# Type: Existing File
# Mandatory: No
code.extractor.platform_header =

# TODO
#
# Type: Existing File
# Mandatory: No
code.extractor.open_variables =

# TODO
#
# Type: Existing File
# Mandatory: No
code.extractor.small_feature_model =

# TODO
#
# Type: Integer
# Default value: 0
code.extractor.max_receiving_threads =

# TODO
#
# Type: Boolean
# Default value: false
code.extractor.debug.call_in_same_vm =

# TODO
#
# Type: Boolean
# Default value: false
ode.extractor.debug.log_call_params =

# TODO
#
# Type: Boolean
# Default value: false
code.extractor.debug.inherit_output =

#######################
# UndertakerExtractor #
#######################

# Undertaker has a bug where it hangs forever on some few files of the Linux
# Kernel. This setting defines a timeout in milliseconds until the undertaker
# executable is forcibly terminated.
#
# Type: Integer
# Default value: 20000
code.extractor.hang_timeout =<commit_msg>Regenerate config_template.properties<commit_after># Configuration file documentation for KernelHaven
#
# This file lists all known configuration options that are available for
# KernelHaven. Note that some plugins may define their own settings, that are
# not listed in this file. However, this file should cover the most common
# plugins.
#
# This configuration file is a standard Java Properties file (see the
# documentation of java.util.Properties). A properties file is a key-value
# storage in the format: key = value. Lines starting with a hash (#) are
# comments and not considered in parsing. Multiple lines can be joined together
# with a backslash (\) character directly in front of the line break. This is
# useful for multi-line values or formatting.
#
# This file lists the keys for the settings defined in the main infrastructure,
# followed by the settings of common plugins. Each setting has a short
# description, that contains:
#  * An explanation text for the setting.
#  * The type of setting (see below for a list possible types).
#  * For enums: The possible values.
#  * The default value for the setting, if it specifies one.
#  * If no default value is specified: Whether the setting is mandatory or not.
#
# Possible setting types are:
#  * String: A simple text value.
#  * Integer: An integer value. An exception is generated if this is not a valid
#             integer.
#  * Boolean: A boolean value. Everything except "true" (case insensitive) is
#             considered to be the value false.
#  * Regular Expression: A Java regular expression. See the documentation for
#                        java.util.regex.Pattern class.
#  * Path: A path value. The file denoted by this does not have to exist.
#  * Existing File: A path value for an existing file. If the specified file
#                   does not exist, then an exception is thrown. This can either
#                   be absolute, relative to the current working directory or
#                   relative to the source_tree setting (first file found in
#                   this order is used).
#  * Existing Directory: A path value for an existing directory. If the
#                        specified directory does not exist, then an exception
#                        is thrown. This can either be relative to the current
#                        working directory or an absolute path.
#  * Enum: One value of an enumartion of possible values. Not case sensitive.
#  * Comma separated list of strings: A comma separated list of string values.
#  * List of setting keys: A list of string values created from multiple setting
#                          keys. The base key is appended by a .0 for the first
#                          value. The following values increase this integer.
#                          For example:
#                            key.0 = a
#                            key.1 = b
#                            key.2 = c
#                          Defines the list ["a", "b", "c"].
#
# This was automatically generated on: 2018-03-19 17:23:16

#######################
# Main Infrastructure #
#######################

# The path where extractors can store their resources. The extractors create
# sub-folders in this called the same as their fully qualified class names (to
# prevent conflicts). This has to be always set to a valid directory with write
# and read access.
#
# Type: Existing Directory
# Mandatory: Yes
resource_dir =

# The path where the output files of the analysis will be stored. This has to be
# always set to a valid directory with write access.
#
# Type: Existing Directory
# Mandatory: Yes
output_dir =

# The path where plugin .jars are loaded from. Every .jar in this directory is
# loaded into the JVM. This has to be always set to a valid directory with read
# access.
#
# Type: Existing Directory
# Mandatory: Yes
plugins_dir =

# This is the directory where the providers will write and read their cache.
# This has to be set to a valid directory with write and read access.
#
# Type: Existing Directory
# Mandatory: Yes
cache_dir =

# The path where log files will be written. This has to be set to a valid
# directory with write access.
#
# Type: Existing Directory
# Default value: .
log.dir =

# Directory to write the archive of the infrastrucure execution to. This has to
# be set to a valid directory with write access.
#
# Type: Existing Directory
# Default value: .
archive.dir =

# If set to true all log messages will be written to console.
#
# Type: Boolean
# Default value: true
log.console =

# If set to true all log messages will be written to a file in the log
# directory.
#
# Type: Boolean
# Default value: false
log.file =

# Defines the maximum log level to log.
#
# Type: Enum
# Possible values: NONE, ERROR, WARNING, INFO, DEBUG
# Default value: INFO
log.level =

# If set to true the infrastructure will archive itself, plugins, results,
# configuration and logs after the execution is finished. Alternative to the
# --archive command line parameter.
#
# Type: Boolean
# Default value: false
archive =

# Defines whether the source tree should be included in the archive.
#
# Type: Boolean
# Default value: false
archive.source_tree =

# Defines whether the cache directory should be included in the archive.
#
# Type: Boolean
# Default value: false
archive.cache_dir =

# Defines whether the ressource directory should be included in the archive.
#
# Type: Boolean
# Default value: false
archive.res_dir =

# The fully qualified class name of the analysis that should be run.
#
# Type: String
# Mandatory: Yes
analysis.class =

# Specifies which analysis components (simple class name) of a PipelineAnalysis
# should output their intermediate results. These will be written in addition to
# the result of the main component.
#
# Type: Comma separated list of strings
# Default value: (empty string)
analysis.output.intermediate_results =

# A string specifying a pipeline of analyis components. This only has an effect
# if analysis.class is set to
# net.ssehub.kernel_haven.analysis.ConfiguredPipelineAnalysis.
#
# Type: String
# Default value: (empty string)
analysis.pipeline =

# A file suffix that specifies which kind of output writer shall be used. If
# IOUtils is used, then xls or xlsx can be used here.
#
# Type: String
# Default value: csv
analysis.output.type =

# Defines whether the analysis should only consider variables that are present
# in the variability model.
#
# Type: Boolean
# Default value: false
analysis.consider_vm_vars_only =

# The path to the source tree of the product line that should be analyzed.
#
# Type: Existing Directory
# Mandatory: Yes
source_tree =

# The architecture of the Linux Kernel that should be analyzed. Most Linux
# extractors require this.
#
# Type: String
# Mandatory: No
arch =

# The fully qualified class name of the extractor for the code model.
#
# Type: String
# Default value: net.ssehub.kernel_haven.code_model.EmptyCodeModelExtractor
code.extractor.class =

# The maximum time the provider waits for the results of the extractor until an
# exception is thrown. In milliseconds; 0 = no timeout used.
#
# Type: Integer
# Default value: 0
code.provider.timeout =

# Defines whether the code model provider will write its results to the cache
# directory.
#
# Type: Boolean
# Default value: false
code.provider.cache.write =

# Defines whether the code model provider is allowed to read the cache instead
# of starting the extractor.
#
# Type: Boolean
# Default value: false
code.provider.cache.read =

# Whether the individual cache files for the code model should written as
# compressed Zip archives. Reading of compressed cache files is always
# supported.
#
# Type: Boolean
# Default value: false
code.provider.cache.compress =

# Defines which files the code extractor should run on. Comma separated list of
# paths relative to the source tree. If directories are listed, then they are
# searched recursively for files that match the regular expression specified in
# code.extractor.file_regex. Set to an empty string to specify the complete
# source tree.
#
# Type: Comma separated list of strings
# Default value: (empty string)
code.extractor.files =

# A Java regular expression defining which files are considered to be source
# files for parsing. See code.extractor.files for a description on which files
# this expression is tested on.
#
# Type: Regular Expression
# Default value: .*\.c
code.extractor.file_regex =

# The number of threads the code extractor should use. This many files are
# parsed in parallel.
#
# Type: Integer
# Default value: 1
code.extractor.threads =

# Defines whether non-boolean conditions that are encountered in the code should
# be (fuzzily) convereted into boolean conditions, instead of throwing an
# exception. For example, this replaces (A == 1) && B with A_eq_1 && B.
#
# Type: Boolean
# Default value: false
code.extractor.fuzzy_parsing =

# The fully qualified class name of the extractor for the build model.
#
# Type: String
# Default value: net.ssehub.kernel_haven.build_model.EmptyBuildModelExtractor
build.extractor.class =

# The maximum time the provider waits for the results of the extractor until an
# exception is thrown. In milliseconds; 0 = no timeout used.
#
# Type: Integer
# Default value: 0
build.provider.timeout =

# Defines whether the build model provider will write its results to the cache
# directory.
#
# Type: Boolean
# Default value: false
build.provider.cache.write =

# Defines whether the code model build is allowed to read the cache instead of
# starting the extractor.
#
# Type: Boolean
# Default value: false
build.provider.cache.read =

# A Java regular expression defining which files are considered to be files
# relevant for parsing the build model.
#
# Type: Regular Expression
# Default value: .*(?i)(^|\/|\\)(Makefile\.?\w*|Kbuild|Build)
build.extractor.file_regex =

# The fully qualified class name of the extractor for the variability model.
#
# Type: String
# Default value: net.ssehub.kernel_haven.variability_model.EmptyVariabilityModelExtractor
variability.extractor.class =

# The maximum time the provider waits for the results of the extractor until an
# exception is thrown. In milliseconds; 0 = no timeout used.
#
# Type: Integer
# Default value: 0
variability.provider.timeout =

# Defines whether the variability model provider will write its results to the
# cache directory.
#
# Type: Boolean
# Default value: false
variability.provider.cache.write =

# Defines whether the variability model provider is allowed to read the cache
# instead of starting the extractor.
#
# Type: Boolean
# Default value: false
variability.provider.cache.read =

# Path of a single file to be parsed by a variability model extractor.
#
# Type: Existing File
# Mandatory: No
variability.input.file =

# A Java regular expression defining which files are considered to be source
# files relevant for parsing the variability model.
#
# Type: Regular Expression
# Default value: ..*(?i)(^|\/|\\)(Kconfig)
variability.extractor.file_regex =

# A list of fully qualified class names that defines which preparations to run.
# A preparation class has to implement IPreperation. The preparations defined
# here are executed in the defined order.
#
# Type: List of setting keys
# Mandatory: No
preparation.class.0 =

###################
# NonBooleanUtils #
###################

# The destination directory where a temporary copy of the source tree with the
# non boolean replacements should be placed. All contents of this will be
# overwritten.
#
# Type: Existing Directory
# Mandatory: Yes
prepare_non_boolean.destination =

# A regular expression to define what the variables that require non-boolean
# replacements look like. This regex should also cover the names of the constant
# variables, that should be replaced by their value.
#
# Type: Regular Expression
# Mandatory: Yes
code.extractor.variable_regex =

#########################
# FeatureEffectAnalysis #
#########################

# Location an historical SPL configuration file, which should be analyses
# w.r.t.the relevance of the configured variables.
#
# Type: Existing File
# Mandatory: Yes
analysis.config_relevancy_checker.configuration_file =

# A CSV file containing the feature effects to be read by the
# net.ssehub.kernel_haven.fe_analysis.fes.FeatureEffectReader
#
# Type: Existing File
# Mandatory: Yes
analysis.feature_effect.file =

# Defines a regular expression that specifies which variables should be present
# in the output.
#
# Type: Regular Expression
# Default value: .*
analysis.relevant_variables =

# Specifies whether and and which analysis step, results should be simplified:
#  - NO_SIMPLIFICATION: Won't simplifiy results.
#  - PRESENCE_CONDITIONS: Will simplifiy (indermediate) results of presence
#    condition detection and all later steps.
#  - FEATURE_EFFECTS: Will simplifiy the results of the feature effect
# analysis.
#
# Type: Enum
# Possible values: NO_SIMPLIFICATION, PRESENCE_CONDITIONS, FEATURE_EFFECTS
# Default value: NO_SIMPLIFICATION
analysis.simplify_conditions =

###############
# MetricHaven #
###############

# Specifies, the line number that the CodeFunctionByLineFilter should filter the
# code functions for. It will pass on the function that this line lies in.
#
# Type: Integer
# Mandatory: Yes
analysis.code_function.line =

# Defines whether and how to incorporate scattering degree valuesinto
# measurement results.
# : - NO_SCATTERING: Do not consider scattering degree (default).
#  - SD_VP: Use variation point scattering.
#  - SD_FILE: Use filet scattering.
#
# Type: Enum
# Possible values: NO_SCATTERING, SD_VP, SD_FILE
# Default value: NO_SCATTERING
metric.function_measures.consider_scattering_degree =

# Defines which variables should be counted for a function.
#
# Type: Enum
# Possible values: MCCABE, VARIATION_POINTS, ALL
# Default value: MCCABE
metric.cyclomatic_complexity.measured_type =

# Defines which lines of code should be counted for a function:
# DLOC: Counts all statements, i.e., all delivered Lines of Code (dLoC).
# LOF: Counts all variable statements, sometimes refereed to as Lines of
# Feature code (LoF).
# PLOF: Computes the fraction of LoF/dLoC.
#
# Type: Enum
# Possible values: DLOC, LOF, PLOF
# Default value: DLOC
metric.loc.measured_type =

# Defines which type of fan in/out should be counted for a function.
#
# Type: Enum
# Possible values: CLASSICAL_FAN_IN_GLOBALLY, CLASSICAL_FAN_IN_LOCALLY, CLASSICAL_FAN_OUT_GLOBALLY, CLASSICAL_FAN_OUT_LOCALLY
# Default value: CLASSICAL_FAN_IN_GLOBALLY
metric.fan_in_out.type =

# Defines what should be counteded as the nesting depth:
# CLASSIC_ND_MAX: Counts the max. nesting depth w.r.t classical control
# structures.
# CLASSIC_ND_AVG: Counts the avg. nesting depth w.r.t classical control
# structures.
# VP_ND_MAX: Counts the max. nesting depth w.r.t variation points (CPP-blocks).
# VP_ND_AVG: Counts the avg. nesting depth w.r.t variation points (CPP-blocks).
# COMBINED_ND_MAX: CLASSIC_ND_MAX + VP_ND_MAX
# COMBINED_ND_AVG: CLASSIC_ND_AVG + VP_ND_AVG
#
# Type: Enum
# Possible values: CLASSIC_ND_MAX, CLASSIC_ND_AVG, VP_ND_MAX, VP_ND_AVG, COMBINED_ND_MAX, COMBINED_ND_AVG
# Default value: CLASSIC_ND_MAX
metric.nesting_depth.measured_type =

# Defines which variables should be counted for a function.
#
# Type: Enum
# Possible values: INTERNAL, EXTERNAL, ALL
# Default value: ALL
metric.variables_per_function.measured_variables_type =

# If turned on, results will be limited to 2 digits after the comma (0.005 will
# be rounded up). This is maybe neccessary to limit the disk usage.
#
# Type: Boolean
# Default value: false
metrics.round_results =

##################
# UnDeadAnalyzer #
##################

# Defines the type of missing analysis to execute.
#
# Type: Enum
# Possible values: DEFINED_BUT_NOT_USED, USED_BUT_NOT_DEFINED
# Default value: DEFINED_BUT_NOT_USED
analysis.missing.type =

########################
# KbuildMinerExtractor #
########################

# List of top-folders to analyze in the product line. If this is not specfied,
# it is automatically generated from the arch setting.
#
# Type: String
# Mandatory: No
build.extractor.top_folders =

##########################
# KconfigReaderExtractor #
##########################

# If set to true, the extractor will store source locations for each variable.
# Those locations represent occurences of the variable in the files that
# kconfigreader used for generating the VariabilityModel.
#
# Type: Boolean
# Default value: false
variability.extractor.find_locations =

#####################
# TypeChefExtractor #
#####################

# TODO
#
# Type: Boolean
# Default value: false
code.extractor.ignore_other_models =

# Specifies the granularity of the translation result:
#  - LEXER: Stops the translation after the lexer and returns a flat list of
# presence
#    conditions only
#  - ONLY_C_AST: Translates the content of the C-Code only. This includes also
#    embedded macro class of a C-functions. However, this will skip all
#    header-specific elements, which are not nested inside a C-code element.
#    For instance, these may be structs or function declarations.
#  - FULL_AST: These will generate a full AST. This will also include
# definitions
#    of included headers, even if this code is not embedded in C-code. This
#    facilitates more detailed analyses like data flow analysis. However, this
#    approach is significantly slower (~ 2x) and requires significantly more
# hard
#    drive space (~ 40x) if the result is cached, with respect to ONLY_C_AST.
#
# Type: Enum
# Possible values: FULL_AST, ONLY_C_AST, LEXER
# Mandatory: Yes
code.extractor.parse_type =

# TODO
#
# Type: Existing Directory
# Default value: /
code.extractor.system_root =

# TODO
#
# Type: Boolean
# Default value: false
code.extractor.skip_default_include_dirs =

# TODO
#
# Type: String
# Default value: 15g
code.extractor.process_ram =

# TODO
#
# Type: List of setting keys
# Mandatory: No
code.extractor.static_include.0 =

# TODO
#
# Type: List of setting keys
# Mandatory: No
code.extractor.post_include_dir.0 =

# TODO
#
# Type: List of setting keys
# Mandatory: No
code.extractor.source_include_dir.0 =

# TODO
#
# Type: Boolean
# Default value: false
code.extractor.add_linux_source_include_dirs =

# TODO
#
# Type: List of setting keys
# Mandatory: No
code.extractor.preprocessor_define.0 =

# TODO
#
# Type: Existing File
# Mandatory: No
code.extractor.kbuildparam_file =

# TODO
#
# Type: Existing File
# Mandatory: No
code.extractor.platform_header =

# TODO
#
# Type: Existing File
# Mandatory: No
code.extractor.open_variables =

# TODO
#
# Type: Existing File
# Mandatory: No
code.extractor.small_feature_model =

# TODO
#
# Type: Integer
# Default value: 0
code.extractor.max_receiving_threads =

# TODO
#
# Type: Boolean
# Default value: false
code.extractor.debug.call_in_same_vm =

# TODO
#
# Type: Boolean
# Default value: false
ode.extractor.debug.log_call_params =

# TODO
#
# Type: Boolean
# Default value: false
code.extractor.debug.inherit_output =

#######################
# UndertakerExtractor #
#######################

# Undertaker has a bug where it hangs forever on some few files of the Linux
# Kernel. This setting defines a timeout in milliseconds until the undertaker
# executable is forcibly terminated.
#
# Type: Integer
# Default value: 20000
code.extractor.hang_timeout =

######################
# CodeBlockExtractor #
######################

# How to handle conditions of blocks that are invalid or not parseable.
# 
# - EXCEPTION: Throw an exception. This causes the whole file to not be
# parseable.
# - TRUE: Replace the invalid condition with true.
# - ERROR_VARIABLE: Replace the invalid condition with a variable called
# "PARSING_ERROR"
#
# Type: Enum
# Possible values: EXCEPTION, TRUE, ERROR_VARIABLE
# Default value: EXCEPTION
code.extractor.invalid_condition =

# Whether to handle the preprocessor macros IS_ENABLED, IS_BUILTIN and IS_MODULE
# in preprocessor block conditions.
#
# Type: Boolean
# Default value: false
code.extractor.handle_linux_macros =
{'fraction_non_alphanumeric': 0.08892837827397049, 'fraction_numerical': 0.0023436091581034795, 'mean_word_length': 4.052700065061809, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '783682', 'n_tokens_mistral': 11073, 'n_tokens_neox': 10697, 'n_words': 4663}