Scope Language Syntax Reference
The scopes language is used in specifying project scopes involved in the various kinds of analysis.
Sets of classes
Single class is defined by a class name, i.e.
com.intellij.openapi.MyClass
Set of all classes in a package, not recursing into subpackages, is defined by an asterisk after dot, for example:
com.intellij.openapi.*
Set of all classes in a package including contents of subpackages, is defined by an asterisk after double dot, for example
com.intellij.openapi..*
Sets of files
Single file is defined by a filename, i.e.
MyDir/MyFile.txt
Set of all files in a directory, not recursing into subdirectories, is defined by an asterisk after slash, for example:
file:src/main/myDir/*
Set of all files in a directory including contents of subdirectories, is defined by an asterisk after double slash, for example
file:src/main/myDir//*
Modifiers
Location modifiers
Location modifiers help you specify location of the necessary file:
src:
– for source fileslib:
– for library classestest:
– for test code
For example, the src:com.intellij.openapi.*
patten places in a scope all classes under the source root in the com.intellij.openapi
package, excluding subpackages. The default location is the module root.
Module modifiers
Module modifiers help you narrow down the scope by specifying the name of the related module:
src[module name]:<E>
lib[module name]:<E>
test[module name]:<E>
For example, the src[MyModule]:com.intellij.openapi.*
pattern places in a scope all classes under the source folders related to the MyModule
module in the com.intellij.openapi
package, excluding subpackages.
Logical operators
The scope language allows you to use common logical operators:
Besides that, the parentheses can be used to join the logical operators into groups. For example, the following scope
(<a>||<b>)&&<c>
implies either <a> and <c>, or <b> and <c>.
Another example
file[*web*]:src/main/java//*
web
, and all the files recursively in the directory src/main/java.Create a new scope from existing scopes
You can compile a new scope from several existing scopes. In this case, you can reference the existing scopes by using $
($MyScope
).
For example, the $Scope1||$Scope2
pattern places in a scope all files from Scope1
and Scope2
.
Examples
file[MyMod]:src/main/java/com/example/my_package//*
- include in a project all the files from module "MyMod", located in the specified directory and all subdirectories.src[MyMod]:com.example.my_package..*
- recursively include all classes in a package in the source directories of the module.lib:com.company..*||com.company..*
- recursively include all classes in a package from both project and libraries.test:com.company.*
- include all test classes in a package, but not in subpackages.[MyMod]:com.company.util.*
- include all classes and test classes in the package of the specified module.file:*.js||file:*.coffee
- include all JavaScript and CoffeeScript files.file:*js&&!file:*.min.*
- include all JavaScript files except those that were generated through minification, which is indicated by themin
extension.