├── .editorconfig
├── .github
├── CODEOWNERS
└── ISSUE_TEMPLATE
│ ├── 01-template-for-feature.md
│ ├── 02-template-for-bug.md
│ ├── 03-template-for-task.md
│ └── config.yml
├── .gitignore
├── LICENSE
├── pom.xml
├── readme.adoc
└── src
├── it
├── jpms
│ ├── jqassistant
│ │ └── it.xml
│ ├── module1
│ │ ├── pom.xml
│ │ └── src
│ │ │ └── main
│ │ │ └── java
│ │ │ ├── com
│ │ │ └── buschmais
│ │ │ │ └── jqassistant
│ │ │ │ └── plugin
│ │ │ │ └── java
│ │ │ │ └── it
│ │ │ │ └── jpms
│ │ │ │ └── module1
│ │ │ │ ├── api
│ │ │ │ └── MyService.java
│ │ │ │ └── impl
│ │ │ │ └── MyServiceImpl.java
│ │ │ └── module-info.java
│ ├── module2
│ │ ├── pom.xml
│ │ └── src
│ │ │ └── main
│ │ │ └── java
│ │ │ ├── com
│ │ │ └── buschmais
│ │ │ │ └── jqassistant
│ │ │ │ └── plugin
│ │ │ │ └── java
│ │ │ │ └── it
│ │ │ │ └── jpms
│ │ │ │ └── module2
│ │ │ │ └── impl
│ │ │ │ └── Main.java
│ │ │ └── module-info.java
│ └── pom.xml
└── settings.xml
├── main
├── asciidoc
│ ├── java-type-hierarchy.puml
│ ├── release-notes.adoc
│ └── scanner.adoc
├── java
│ └── com
│ │ └── buschmais
│ │ └── jqassistant
│ │ └── plugin
│ │ └── java
│ │ ├── api
│ │ ├── annotation
│ │ │ └── jQASuppress.java
│ │ ├── model
│ │ │ ├── AbstractDescriptor.java
│ │ │ ├── AccessModifierDescriptor.java
│ │ │ ├── AnnotatedDescriptor.java
│ │ │ ├── AnnotationDescriptor.java
│ │ │ ├── AnnotationTypeDescriptor.java
│ │ │ ├── AnnotationValueDescriptor.java
│ │ │ ├── ByteCodeDescriptor.java
│ │ │ ├── ClassDescriptor.java
│ │ │ ├── ClassFileDescriptor.java
│ │ │ ├── ClassTypeDescriptor.java
│ │ │ ├── ClassValueDescriptor.java
│ │ │ ├── ConstructorDescriptor.java
│ │ │ ├── Declares.java
│ │ │ ├── EnumDescriptor.java
│ │ │ ├── EnumTypeDescriptor.java
│ │ │ ├── EnumValueDescriptor.java
│ │ │ ├── ExportedPackageDescriptor.java
│ │ │ ├── FieldDescriptor.java
│ │ │ ├── IndexTemplate.java
│ │ │ ├── InterfaceTypeDescriptor.java
│ │ │ ├── InvokesDescriptor.java
│ │ │ ├── JarArchiveDescriptor.java
│ │ │ ├── JavaArtifactFileDescriptor.java
│ │ │ ├── JavaByteCodeDescriptor.java
│ │ │ ├── JavaClassesDirectoryDescriptor.java
│ │ │ ├── JavaDescriptor.java
│ │ │ ├── JavaSuppressDescriptor.java
│ │ │ ├── LambdaMethodDescriptor.java
│ │ │ ├── LineNumberDescriptor.java
│ │ │ ├── ManifestEntryDescriptor.java
│ │ │ ├── ManifestFileDescriptor.java
│ │ │ ├── ManifestSectionDescriptor.java
│ │ │ ├── MemberDescriptor.java
│ │ │ ├── MethodDescriptor.java
│ │ │ ├── ModuleDescriptor.java
│ │ │ ├── OpenPackageDescriptor.java
│ │ │ ├── PackageDescriptor.java
│ │ │ ├── PackageMemberDescriptor.java
│ │ │ ├── PackageToModuleDescriptor.java
│ │ │ ├── ParameterDescriptor.java
│ │ │ ├── PrimitiveDescriptor.java
│ │ │ ├── PrimitiveValueDescriptor.java
│ │ │ ├── PropertyFileDescriptor.java
│ │ │ ├── ProvidedServiceDescriptor.java
│ │ │ ├── ReadsDescriptor.java
│ │ │ ├── RecordTypeDescriptor.java
│ │ │ ├── RequiresDescriptor.java
│ │ │ ├── ServiceLoaderDescriptor.java
│ │ │ ├── SignatureDescriptor.java
│ │ │ ├── TypeDependsOnDescriptor.java
│ │ │ ├── TypeDescriptor.java
│ │ │ ├── TypedDescriptor.java
│ │ │ ├── VariableDescriptor.java
│ │ │ ├── VisibilityModifier.java
│ │ │ ├── WritesDescriptor.java
│ │ │ ├── XmlPropertyFileDescriptor.java
│ │ │ └── generics
│ │ │ │ ├── BoundDescriptor.java
│ │ │ │ ├── GenericArrayTypeDescriptor.java
│ │ │ │ ├── GenericDeclarationDescriptor.java
│ │ │ │ ├── HasActualTypeArgumentDescriptor.java
│ │ │ │ ├── ParameterizedTypeDescriptor.java
│ │ │ │ ├── TypeVariableDescriptor.java
│ │ │ │ └── WildcardTypeDescriptor.java
│ │ ├── report
│ │ │ ├── Java.java
│ │ │ ├── JavaGenericsReportHelper.java
│ │ │ └── TypeSourceHelper.java
│ │ └── scanner
│ │ │ ├── ArtifactScopedTypeResolver.java
│ │ │ ├── JavaScope.java
│ │ │ ├── SignatureHelper.java
│ │ │ ├── TypeCache.java
│ │ │ └── TypeResolver.java
│ │ └── impl
│ │ └── scanner
│ │ ├── ClassFileScannerConfiguration.java
│ │ ├── ClassFileScannerPlugin.java
│ │ ├── ClassTypeScannerPlugin.java
│ │ ├── JarScannerPlugin.java
│ │ ├── JavaClassesDirectoryScannerPlugin.java
│ │ ├── ManifestFileScannerPlugin.java
│ │ ├── PackageDirectoryScannerPlugin.java
│ │ ├── PropertyFileScannerPlugin.java
│ │ ├── ServiceLoaderFileScannerPlugin.java
│ │ ├── XmlPropertyFileScannerPlugin.java
│ │ └── visitor
│ │ ├── AbstractAnnotationVisitor.java
│ │ ├── AnnotationDefaultVisitor.java
│ │ ├── AnnotationValueVisitor.java
│ │ ├── ClassVisitor.java
│ │ ├── FieldVisitor.java
│ │ ├── MethodComplexityVisitor.java
│ │ ├── MethodLoCVisitor.java
│ │ ├── MethodVisitor.java
│ │ ├── ModuleVisitor.java
│ │ ├── SuppressAnnotationVisitor.java
│ │ ├── VisitorHelper.java
│ │ ├── delegate
│ │ ├── DelegatingAnnotationVisitor.java
│ │ ├── DelegatingMethodVisitor.java
│ │ └── Delegator.java
│ │ └── generics
│ │ ├── AbstractBoundVisitor.java
│ │ ├── AbstractGenericDeclarationVisitor.java
│ │ ├── ClassSignatureVisitor.java
│ │ ├── MethodSignatureVisitor.java
│ │ └── TypeVariableResolver.java
└── resources
│ └── META-INF
│ ├── jqassistant-plugin.xml
│ └── jqassistant-rules
│ ├── java-classpath.xml
│ └── java.xml
└── test
├── java
└── com
│ └── buschmais
│ └── jqassistant
│ └── plugin
│ └── java
│ └── test
│ ├── AbstractJavaPluginIT.java
│ ├── assertj
│ ├── FieldDescriptorCondition.java
│ ├── MethodDescriptorCondition.java
│ └── TypeDescriptorCondition.java
│ ├── language
│ └── JavaLanguageElementTest.java
│ ├── matcher
│ ├── AbstractMemberDescriptorMatcher.java
│ ├── AnnotationValueDescriptorMatcher.java
│ ├── FieldDescriptorMatcher.java
│ ├── MethodDescriptorMatcher.java
│ ├── PackageDescriptorMatcher.java
│ ├── PropertyDescriptorMatcher.java
│ ├── PropertyFileDescriptorMatchers.java
│ ├── TypeDescriptorMatcher.java
│ └── ValueDescriptorMatcher.java
│ ├── rules
│ ├── ClasspathIT.java
│ ├── DefaultMethodIT.java
│ ├── DependencyIT.java
│ ├── DeprecatedIT.java
│ ├── FunctionalInterfaceIT.java
│ ├── GeneratedTypeIT.java
│ ├── InnerTypeIT.java
│ ├── JavaTestIT.java
│ ├── LambdaMethodIT.java
│ ├── LifecycleAnnotationIT.java
│ ├── LombokIT.java
│ ├── MemberInheritedFromIT.java
│ ├── MethodOverloadsIT.java
│ ├── MethodOverridesIT.java
│ ├── PackageAnnotatedByIT.java
│ ├── ThrowableIT.java
│ ├── TypeAssignableFromIT.java
│ ├── TypeParameterIT.java
│ ├── VirtualDependsOnIT.java
│ └── VirtualInvokesIT.java
│ ├── scanner
│ ├── AnnotationIT.java
│ ├── AnonymousInnerClassIT.java
│ ├── ArrayIT.java
│ ├── ByteCodeVersionIT.java
│ ├── ConstructorIT.java
│ ├── CyclomaticComplexityIT.java
│ ├── EnumerationIT.java
│ ├── FieldValueIT.java
│ ├── GenericsIT.java
│ ├── InheritanceIT.java
│ ├── InvalidClassFileIT.java
│ ├── JavaClassesDirectoryScannerPluginTest.java
│ ├── JavaRuntimePT.java
│ ├── ManifestFileIT.java
│ ├── NestedInnerClassesIT.java
│ ├── PackageIT.java
│ ├── PojoIT.java
│ ├── PropertyFileIT.java
│ ├── ServiceLoaderIT.java
│ ├── SuppressIT.java
│ ├── TypeResolverIT.java
│ ├── VisibilityIT.java
│ ├── XmlPropertyFileScannerPluginIT.java
│ └── generics
│ │ └── JavaGenericsIT.java
│ └── set
│ ├── rules
│ ├── classpath
│ │ └── resolve
│ │ │ ├── a
│ │ │ ├── AnnotationType.java
│ │ │ ├── ClassType.java
│ │ │ ├── EnumType.java
│ │ │ ├── ExceptionType.java
│ │ │ ├── InterfaceType.java
│ │ │ └── ValueType.java
│ │ │ └── b
│ │ │ └── DependentType.java
│ ├── dependency
│ │ ├── packages
│ │ │ ├── a
│ │ │ │ └── A.java
│ │ │ └── b
│ │ │ │ └── B.java
│ │ └── types
│ │ │ ├── DependentType.java
│ │ │ ├── FieldAnnotation.java
│ │ │ ├── FieldAnnotationValueType.java
│ │ │ ├── FieldType.java
│ │ │ ├── FieldTypeParameter.java
│ │ │ ├── ImplementedInterface.java
│ │ │ ├── ImplementedInterfaceTypeParameter.java
│ │ │ ├── InvokeMethodType.java
│ │ │ ├── LocalVariable.java
│ │ │ ├── LocalVariableAnnotation.java
│ │ │ ├── LocalVariableAnnotationValueType.java
│ │ │ ├── MethodAnnotation.java
│ │ │ ├── MethodAnnotationValueType.java
│ │ │ ├── MethodException.java
│ │ │ ├── MethodParameter.java
│ │ │ ├── MethodParameterTypeParameter.java
│ │ │ ├── MethodReturnType.java
│ │ │ ├── MethodReturnTypeParameter.java
│ │ │ ├── SuperClass.java
│ │ │ ├── SuperClassTypeParameter.java
│ │ │ ├── TypeAnnotation.java
│ │ │ └── TypeAnnotationValueType.java
│ ├── deprecated
│ │ ├── DeprecatedType.java
│ │ └── package-info.java
│ ├── exception
│ │ ├── FirstLevelError.java
│ │ ├── FirstLevelException.java
│ │ ├── FirstLevelRuntimeException.java
│ │ ├── FirstLevelThrowable.java
│ │ ├── SecondLevelError.java
│ │ ├── SecondLevelException.java
│ │ ├── SecondLevelRuntimeException.java
│ │ └── SecondLevelThrowable.java
│ ├── generated
│ │ ├── Generated.java
│ │ └── NotGenerated.java
│ ├── inheritance
│ │ ├── AbstractClassType.java
│ │ ├── ClientType.java
│ │ ├── InterfaceType.java
│ │ └── SubClassType.java
│ ├── innertype
│ │ └── OuterType.java
│ ├── java
│ │ ├── DefaultMethod.java
│ │ ├── FunctionalInterface.java
│ │ ├── FunctionalInterfaceWithoutAnnotation.java
│ │ ├── LambdaMethod.java
│ │ ├── MarkerInterface.java
│ │ └── NonFunctionalInterface.java
│ ├── lifecycleannotation
│ │ └── ManagedResource.java
│ ├── lombok
│ │ ├── Person.java
│ │ └── lombok.config
│ ├── methodoverloads
│ │ └── InterfaceType.java
│ ├── packageannotation
│ │ ├── PackageClass.java
│ │ └── package-info.java
│ └── virtualdependson
│ │ ├── ClassType.java
│ │ ├── ClassTypeClient.java
│ │ ├── InterfaceType.java
│ │ ├── InterfaceTypeClient.java
│ │ └── SubClassType.java
│ └── scanner
│ ├── annotation
│ ├── AnnotatedType.java
│ ├── Annotation.java
│ ├── AnnotationWithDefaultValue.java
│ ├── Enumeration.java
│ └── NestedAnnotation.java
│ ├── array
│ └── Array.java
│ ├── constructor
│ ├── enumeration
│ └── EnumerationType.java
│ ├── fieldvalue
│ └── FieldValue.java
│ ├── generics
│ ├── ExtendsGeneric.java
│ ├── GenericFields.java
│ ├── GenericMethods.java
│ ├── GenericTypeDeclarations.java
│ ├── ImplementsGeneric.java
│ └── dependson
│ │ ├── BoundGenericMethod.java
│ │ ├── BoundGenericType.java
│ │ ├── ExtendsGenericClass.java
│ │ ├── GenericMembers.java
│ │ ├── GenericType.java
│ │ ├── ImplementsGenericInterface.java
│ │ ├── NestedGenericMethod.java
│ │ └── NestedGenericType.java
│ ├── inheritance
│ ├── SubInterface.java
│ └── SuperInterface.java
│ ├── innerclass
│ ├── AnonymousInnerClass.java
│ └── NestedInnerClasses.java
│ ├── metric
│ └── CyclomaticComplexityType.java
│ ├── pojo
│ └── Pojo.java
│ ├── resolver
│ ├── A.java
│ └── B.java
│ ├── serviceloader
│ ├── OuterClass.java
│ ├── Service.java
│ └── ServiceImpl.java
│ ├── suppress
│ └── Suppress.java
│ └── vsibility
│ └── Public.java
└── resources
├── META-INF
├── MANIFEST.MF
├── invalid.properties
├── jqassistant-plugin.xml
├── jqassistant-rules
│ ├── generated.xml
│ ├── javaruntime.xml
│ └── suppress.xml
├── services
│ └── com.buschmais.jqassistant.plugin.java.test.set.scanner.serviceloader.Service
└── test.properties
├── com
└── buschmais
│ └── jqassistant
│ └── plugin
│ └── java
│ └── test
│ └── set
│ └── scanner
│ └── empty
│ └── readme.txt
└── set
└── scanner
└── propertyfiles
├── properties-2-props.xml
└── properties-empty.xml
/.editorconfig:
--------------------------------------------------------------------------------
1 | # top-most EditorConfig file
2 | root = true
3 |
4 | [*]
5 | charset = utf-8
6 | end_of_line = lf
7 | insert_final_newline = true
8 | indent_style = space
9 |
10 | [*.{java,xml}]
11 | indent_size = 4
12 | trim_trailing_whitespace = true
13 |
--------------------------------------------------------------------------------
/.github/CODEOWNERS:
--------------------------------------------------------------------------------
1 | * @obfischer @DirkMahler @StephanPirnbaum
2 |
3 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/01-template-for-feature.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Feature Request Template
3 | about: Request a feature for this particular subproject.
4 | title: New Feature
5 | labels: status:teamdiscussion
6 | assignees: ''
7 |
8 | ---
9 | _This hint can be removed_
10 | **We are happy, what you are going to send us your feature request. Please try to fillout as many sections as good as you can. If you can't provide us any information for a particular section, that is not problem. It is more important to us, to know more about our users and their needs. Even if this template looks very formal, we aren't.**
11 |
12 | ### Feature Description
13 | _Remove this hint: Provide here a short description of the feature you would like to see. Try to use the form of a user story. See https://en.wikipedia.org/wiki/User_story._
14 |
15 | I, as...
16 | would like...
17 | to that...
18 |
19 | ### Additional information on the requested Feature
20 | _Remove this hint: Feel free to let us know what ever you wan't :wink:_
21 |
22 | ### How to Test
23 | _Remove this hint: How can we test if the feature works as you expect it to work?_
24 |
25 | To test this feature...
26 |
27 | ### Available Test data
28 | _Remove this hint: To test new features, we need some examples or test data sets. Please let us know if you can provide them for us or there we can find them.
29 |
30 | ### Definition of Done for the Implementers
31 | _Remove this hint: these checkboxes can be checked like this: [x]_
32 | - [ ] We got a final feedback from the reporting user (_if applicable_)
33 | - [ ] Unittests have been written (_if applicable_)
34 | - [ ] Integration tests have been written (_if applicable_)
35 | - [ ] Test coverage is the same or even better then before (_if applicable_)
36 | - [ ] Documentation has been written (_if applicable_)
37 | - [ ] Added a note on the new feature to the release notes (_if applicable_)
38 |
39 |
40 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/02-template-for-bug.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Bug Report Template
3 | about: Report a bug using this template.
4 | title: Bug Report
5 | labels: type:bug
6 | assignees: ''
7 | ---
8 |
9 | _Remove this hint:_
10 | **We are happy, to know about the problems you have while using jQAssistant. Sometimes we learn
11 | more about us and our projects from the bugs you find. Please try to fillout as many sections as good as you can.
12 | If you can't provide us any information for a particular section, that is not problem.
13 | Even if this template looks very formal, we aren't.**
14 |
15 | ### Bug Description
16 |
17 |
18 | ### Expected Behaviour
19 | _Remove this hint: What did you actual expect from jQAssistant?_
20 |
21 | ### Your Environment
22 | _Remove this hint: Some bugs are releated to the environment jQAssitant is running in. Please help us
23 | to find out, if the problem is only related to the crappy code we have written or to the environment._
24 |
25 | - *JDK:*
26 | - *OS:*
27 | - *XYZ:*
28 |
29 | ### How can we reproduce the bug?
30 | _Remove this hint: Pick one of these options. Use the Preview feature of this editor to get a sense which option we like best_
31 |
32 | #### Awesome :star::star::star::star::star:
33 | Provide a (link to a) minimal demo app showing the faulty behaviour.
34 |
35 | #### Sweet :star::star::star::star:
36 | Provide some concise code examples or some data you use.
37 |
38 | #### Good :star::star::star:
39 | Provide your own project and instructions how to reproduce the problem.
40 |
41 | #### Meh :star::star:
42 | Provide a code sample with a bunch of magic parameters which we need to interpolate by guessing to reconstruct the actual problem.
43 |
44 | #### Worst :poop:
45 | The source code or the data can't be disclosed and refuse to provide any of the above. Expect this issue to be closed by a bunch of angry aliens :alien::alien::alien::alien::alien: that will hunt you down and :fire: your :computer:. You've been warned. :fire_engine:
46 |
47 | ### How could we have prevented this Bug?
48 | _Remove this hint: Is there anything we could have done to prevent this problem?_
49 |
50 | ### Definition of Done for the Implementers
51 | _Remove this hint: these checkboxes can be checked like this: [x]_
52 | - [ ] We got a final feedback from the reporting user (_if applicable_)
53 | - [ ] Unittests have been written (_if applicable_)
54 | - [ ] Integration tests have been written (_if applicable_)
55 | - [ ] Test coverage is the same or even better then before (_if applicable_)
56 | - [ ] Documentation has been written (_if applicable_)
57 | - [ ] Added a note on the new feature to the release notes (_if applicable_)
58 |
59 |
60 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/03-template-for-task.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Task Template
3 | about: Used mainly by the team behind jQAssistant for issues which aren't a feature nor a bug, but must be done and should'nt be forgotten.
4 | title: Please fullfil this task
5 | labels: type:task
6 | assignees: ''
7 | ---
8 |
9 | ### Task Description
10 |
11 | ### Definition of Done for the Implementers
12 | _Remove this hint: these checkboxes can be checked like this: [x]_
13 | - [ ] We got a final feedback from the reporting user (_if applicable_)
14 | - [ ] Unittests have been written (_if applicable_)
15 | - [ ] Integration tests have been written (_if applicable_)
16 | - [ ] Test coverage is the same or even better then before (_if applicable_)
17 | - [ ] Documentation has been written (_if applicable_)
18 | - [ ] Added a note on the new feature to the release notes (_if applicable_)
19 |
20 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/config.yml:
--------------------------------------------------------------------------------
1 | blank_issues_enabled: true
2 |
3 | contact_links:
4 | - name: Use Stackoverflow for your question on jQAssistant
5 | url: https://stackoverflow.com/questions/tagged/jqassistant
6 | about: Please use stackoverflow for supporting issues. Using stackoverflow will help us to have all questions in a plublic space and you have the chance to get help from the whole jQAssistant community.
7 | - name: Use our Idea Hub for new Ideas and Suggestions
8 | url: https://github.com/jQAssistant/jQA-Idea-Hub
9 | about: Some features might be not releated to any particular subproject or will affect all of them. To report such issues, please use this project.
10 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | /.idea
2 | *.iml
3 | *.ipr
4 | *~
5 | *.log
6 | /*.html
7 | .DS_Store
8 | pom.xml.versionsBackup
9 | .java-version
10 | *.backup
11 |
12 | # Files generated by the release tooling of jQAssistant
13 | pom.xml.updatetorelease
14 | pom.xml.updatetonextdevversion
15 |
16 | # Ignore temporary shell scripts used to script small tasks
17 | *.sh.ignore
18 |
19 | # Maven related files and directories
20 | target
21 | /.mvn
22 |
--------------------------------------------------------------------------------
/readme.adoc:
--------------------------------------------------------------------------------
1 | = jQAssistant Java Plugin
2 |
3 | This is the Java Plugin of https://jqassistant.org[jQAssistant^].
4 | It enables jQAssistant to scan and to analyze Java related
5 | artifacts like:
6 |
7 | - Manifest files
8 | - Jar archives
9 | - Java class files
10 | - Property files
11 | - Service Provider Interfaces
12 |
13 | For more information on jQAssistant see https://jqassistant.org[^].
14 |
--------------------------------------------------------------------------------
/src/it/jpms/module1/pom.xml:
--------------------------------------------------------------------------------
1 |
2 | 4.0.0
3 |
4 |
5 | @project.groupId@
6 | @project.artifactId@.it.jpms.parent
7 | @project.version@
8 |
9 |
10 | @project.artifactId@.it.jpms.module1
11 |
12 |
13 |
14 | com.fasterxml.jackson.core
15 | jackson-core
16 | 2.16.0
17 |
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/src/it/jpms/module1/src/main/java/com/buschmais/jqassistant/plugin/java/it/jpms/module1/api/MyService.java:
--------------------------------------------------------------------------------
1 | package com.buschmais.jqassistant.plugin.java.it.jpms.module1.api;
2 |
3 | public interface MyService {
4 |
5 | void run();
6 |
7 | }
8 |
--------------------------------------------------------------------------------
/src/it/jpms/module1/src/main/java/com/buschmais/jqassistant/plugin/java/it/jpms/module1/impl/MyServiceImpl.java:
--------------------------------------------------------------------------------
1 | package com.buschmais.jqassistant.plugin.java.it.jpms.module1.impl;
2 |
3 | import com.buschmais.jqassistant.plugin.java.it.jpms.module1.api.MyService;
4 |
5 | public class MyServiceImpl implements MyService {
6 |
7 | public void run() {
8 | }
9 |
10 | }
11 |
--------------------------------------------------------------------------------
/src/it/jpms/module1/src/main/java/module-info.java:
--------------------------------------------------------------------------------
1 | module java.it.jpms.module1 {
2 | requires com.fasterxml.jackson.core;
3 |
4 | exports com.buschmais.jqassistant.plugin.java.it.jpms.module1.api;
5 | exports com.buschmais.jqassistant.plugin.java.it.jpms.module1.impl to java.it.jpms.module2;
6 |
7 | opens com.buschmais.jqassistant.plugin.java.it.jpms.module1.api;
8 | opens com.buschmais.jqassistant.plugin.java.it.jpms.module1.impl to java.it.jpms.module2;
9 |
10 | provides com.buschmais.jqassistant.plugin.java.it.jpms.module1.api.MyService with com.buschmais.jqassistant.plugin.java.it.jpms.module1.impl.MyServiceImpl;
11 | }
12 |
--------------------------------------------------------------------------------
/src/it/jpms/module2/pom.xml:
--------------------------------------------------------------------------------
1 |
2 | 4.0.0
3 |
4 |
5 | @project.groupId@
6 | @project.artifactId@.it.jpms.parent
7 | @project.version@
8 |
9 |
10 | @project.artifactId@.it.jpms.module2
11 |
12 |
13 |
14 | @project.groupId@
15 | @project.artifactId@.it.jpms.module1
16 | @project.version@
17 |
18 |
19 |
--------------------------------------------------------------------------------
/src/it/jpms/module2/src/main/java/com/buschmais/jqassistant/plugin/java/it/jpms/module2/impl/Main.java:
--------------------------------------------------------------------------------
1 | package com.buschmais.jqassistant.plugin.java.it.jpms.module2.impl;
2 |
3 | import com.buschmais.jqassistant.plugin.java.it.jpms.module1.api.MyService;
4 |
5 | import java.util.ServiceLoader;
6 |
7 | public class Main {
8 |
9 | public static void main(String... args) {
10 | MyService myService = ServiceLoader.load(MyService.class)
11 | .findFirst()
12 | .orElseThrow(() -> new IllegalStateException("Service not found"));
13 | myService.run();
14 | }
15 |
16 | }
17 |
--------------------------------------------------------------------------------
/src/it/jpms/module2/src/main/java/module-info.java:
--------------------------------------------------------------------------------
1 | open module java.it.jpms.module2 {
2 |
3 | requires java.it.jpms.module1;
4 | requires static transitive java.se;
5 |
6 | uses com.buschmais.jqassistant.plugin.java.it.jpms.module1.api.MyService;
7 |
8 | }
9 |
--------------------------------------------------------------------------------
/src/it/jpms/pom.xml:
--------------------------------------------------------------------------------
1 |
2 | 4.0.0
3 |
4 | @project.groupId@
5 | @project.artifactId@.it.jpms.parent
6 | @project.version@
7 | pom
8 |
9 |
10 |
11 |
12 |
13 | org.apache.maven.plugins
14 | maven-compiler-plugin
15 | 3.11.0
16 |
17 | 11
18 |
19 |
20 |
21 |
22 |
23 |
24 | com.buschmais.jqassistant
25 | jqassistant-maven-plugin
26 | @maven.jqassistant.previous.version@
27 |
28 |
29 | default-cli
30 |
31 | scan
32 | analyze
33 |
34 |
35 |
36 | jqassistant:
37 | default-plugins:
38 | - group-id: @project.groupId@
39 | artifact-id: @project.artifactId@
40 | version: @project.version@
41 | scan:
42 | properties:
43 | maven3.dependencies.scan: true
44 | analyze:
45 | groups:
46 | - it
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 | module1
57 | module2
58 |
59 |
60 |
61 |
--------------------------------------------------------------------------------
/src/it/settings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | it-repo
6 |
7 | true
8 |
9 |
10 |
11 | local.central
12 | file://@localRepository@
13 |
14 | true
15 |
16 |
17 | true
18 | always
19 |
20 |
21 |
22 |
23 |
24 | local.central
25 | file://@localRepository@
26 |
27 | true
28 |
29 |
30 | true
31 | always
32 |
33 |
34 |
35 |
36 |
37 |
38 |
--------------------------------------------------------------------------------
/src/main/asciidoc/java-type-hierarchy.puml:
--------------------------------------------------------------------------------
1 | @startuml
2 |
3 | class Class
4 | class Method
5 | class Field
6 |
7 | interface Bound
8 | interface TypeVariable {
9 | name
10 | }
11 | interface GenericArrayType
12 | interface ParameterizedType
13 | interface WildcardType
14 |
15 | interface GenericDeclaration
16 |
17 | Bound <|.. Class
18 | Bound <|.. GenericArrayType
19 | Bound <|.. ParameterizedType
20 | Bound <|.. WildcardType
21 | Bound <|.. TypeVariable
22 |
23 | GenericDeclaration <|.. Class
24 | GenericDeclaration <|.. Method
25 |
26 | GenericArrayType -- Bound : componentType
27 |
28 | ParameterizedType -- "0..*" Bound : actualTypeArguments
29 | ParameterizedType -- "1" Bound : rawType
30 | ParameterizedType -- "1" Bound : ownerType
31 |
32 | WildcardType -- "0..*" Bound : upperBounds
33 | WildcardType -- "0..*" Bound : lowerBounds
34 |
35 | TypeVariable -- "0..*" Bound : upperBounds
36 |
37 | GenericDeclaration -- "0..*" TypeVariable : typeParameters
38 |
39 | Method -- "1" Bound : genericReturnType
40 | Method -- "0..*" Bound : genericParameterTypes
41 | Method -- "1" Bound : genericExceptionTypes
42 |
43 | Field -- "1" Bound : genericType
44 |
45 | @enduml
46 |
47 |
--------------------------------------------------------------------------------
/src/main/java/com/buschmais/jqassistant/plugin/java/api/annotation/jQASuppress.java:
--------------------------------------------------------------------------------
1 | package com.buschmais.jqassistant.plugin.java.api.annotation;
2 |
3 | import java.lang.annotation.Retention;
4 |
5 | import static java.lang.annotation.RetentionPolicy.CLASS;
6 |
7 | /**
8 | * Indicates that rule ids (constraints or concepts) should be suppressed for
9 | * the annotated element.
10 | */
11 | @Retention(CLASS)
12 | public @interface jQASuppress {
13 |
14 | /**
15 | * The rule ids.
16 | *
17 | * @return The rule ids.
18 | */
19 | String[] value();
20 |
21 | /**
22 | * The column to be used to identify the suppressed elements
23 | *
24 | * @return The column to be used to identify the suppressed elements
25 | */
26 | String column() default "";
27 |
28 | /**
29 | * The human-readable reason for this suppression.
30 | */
31 | String reason() default "";
32 | }
33 |
--------------------------------------------------------------------------------
/src/main/java/com/buschmais/jqassistant/plugin/java/api/model/AbstractDescriptor.java:
--------------------------------------------------------------------------------
1 | package com.buschmais.jqassistant.plugin.java.api.model;
2 |
3 | import com.buschmais.xo.neo4j.api.annotation.Property;
4 |
5 | public interface AbstractDescriptor {
6 |
7 | @Property("abstract")
8 | Boolean isAbstract();
9 |
10 | void setAbstract(Boolean isAbstract);
11 |
12 | }
13 |
--------------------------------------------------------------------------------
/src/main/java/com/buschmais/jqassistant/plugin/java/api/model/AccessModifierDescriptor.java:
--------------------------------------------------------------------------------
1 | package com.buschmais.jqassistant.plugin.java.api.model;
2 |
3 | import com.buschmais.xo.neo4j.api.annotation.Property;
4 |
5 | /**
6 | * Interface that describes java elements with access modifiers.
7 | *
8 | * @author Herklotz
9 | */
10 | public interface AccessModifierDescriptor {
11 |
12 | @Property("visibility")
13 | String getVisibility();
14 |
15 | void setVisibility(String visibility);
16 |
17 | @Property("static")
18 | Boolean isStatic();
19 |
20 | void setStatic(Boolean s);
21 |
22 | @Property("final")
23 | Boolean isFinal();
24 |
25 | void setFinal(Boolean f);
26 |
27 | @Property("synthetic")
28 | Boolean isSynthetic();
29 |
30 | void setSynthetic(Boolean s);
31 |
32 | Boolean isTransitive();
33 | void setTransitive(Boolean transitive);
34 |
35 | Boolean isMandated();
36 | void setMandated(Boolean mandated);
37 | }
38 |
--------------------------------------------------------------------------------
/src/main/java/com/buschmais/jqassistant/plugin/java/api/model/AnnotatedDescriptor.java:
--------------------------------------------------------------------------------
1 | package com.buschmais.jqassistant.plugin.java.api.model;
2 |
3 | import java.util.List;
4 |
5 | import com.buschmais.jqassistant.core.store.api.model.Descriptor;
6 | import com.buschmais.xo.neo4j.api.annotation.Relation;
7 |
8 | /**
9 | * Interface describing an {@link Descriptor} which is annotated by
10 | * {@link AnnotationValueDescriptor}s.
11 | */
12 | public interface AnnotatedDescriptor extends Descriptor {
13 |
14 | /**
15 | * Return the annotations this descriptor is annotated by.
16 | *
17 | * @return The annotations this descriptor is annotated by.
18 | */
19 | @Relation("ANNOTATED_BY")
20 | List getAnnotatedBy();
21 | }
22 |
--------------------------------------------------------------------------------
/src/main/java/com/buschmais/jqassistant/plugin/java/api/model/AnnotationDescriptor.java:
--------------------------------------------------------------------------------
1 | package com.buschmais.jqassistant.plugin.java.api.model;
2 |
3 | import com.buschmais.xo.neo4j.api.annotation.Label;
4 |
5 | @Label("Annotation")
6 | public interface AnnotationDescriptor {
7 | }
8 |
--------------------------------------------------------------------------------
/src/main/java/com/buschmais/jqassistant/plugin/java/api/model/AnnotationTypeDescriptor.java:
--------------------------------------------------------------------------------
1 | package com.buschmais.jqassistant.plugin.java.api.model;
2 |
3 | /**
4 | * Denotes an annotation type.
5 | */
6 | public interface AnnotationTypeDescriptor extends ClassFileDescriptor, AnnotationDescriptor {
7 | }
8 |
--------------------------------------------------------------------------------
/src/main/java/com/buschmais/jqassistant/plugin/java/api/model/AnnotationValueDescriptor.java:
--------------------------------------------------------------------------------
1 | package com.buschmais.jqassistant.plugin.java.api.model;
2 |
3 | import java.util.List;
4 |
5 | import com.buschmais.jqassistant.plugin.common.api.model.ValueDescriptor;
6 | import com.buschmais.xo.neo4j.api.annotation.Relation;
7 |
8 | /**
9 | * Represents an annotation value.
10 | */
11 | public interface AnnotationValueDescriptor extends JavaByteCodeDescriptor, TypedDescriptor, ValueDescriptor>>, AnnotationDescriptor {
12 |
13 | @Relation("HAS")
14 | @Override
15 | List> getValue();
16 |
17 | @Override
18 | void setValue(List> value);
19 | }
20 |
--------------------------------------------------------------------------------
/src/main/java/com/buschmais/jqassistant/plugin/java/api/model/ByteCodeDescriptor.java:
--------------------------------------------------------------------------------
1 | package com.buschmais.jqassistant.plugin.java.api.model;
2 |
3 | import com.buschmais.xo.api.annotation.Abstract;
4 | import com.buschmais.xo.neo4j.api.annotation.Label;
5 |
6 | @Label("ByteCode")
7 | @Abstract
8 | public interface ByteCodeDescriptor {
9 | }
10 |
--------------------------------------------------------------------------------
/src/main/java/com/buschmais/jqassistant/plugin/java/api/model/ClassDescriptor.java:
--------------------------------------------------------------------------------
1 | package com.buschmais.jqassistant.plugin.java.api.model;
2 |
3 | import com.buschmais.xo.neo4j.api.annotation.Label;
4 |
5 | @Label("Class")
6 | public interface ClassDescriptor extends JavaByteCodeDescriptor {
7 | }
8 |
--------------------------------------------------------------------------------
/src/main/java/com/buschmais/jqassistant/plugin/java/api/model/ClassFileDescriptor.java:
--------------------------------------------------------------------------------
1 | package com.buschmais.jqassistant.plugin.java.api.model;
2 |
3 | import java.util.List;
4 |
5 | import com.buschmais.jqassistant.plugin.common.api.model.FileDescriptor;
6 | import com.buschmais.jqassistant.plugin.common.api.model.ValidDescriptor;
7 | import com.buschmais.jqassistant.plugin.java.api.model.generics.BoundDescriptor;
8 | import com.buschmais.jqassistant.plugin.java.api.report.Java;
9 | import com.buschmais.xo.neo4j.api.annotation.Relation;
10 |
11 | @Java(Java.JavaLanguageElement.Type)
12 | public interface ClassFileDescriptor
13 | extends TypeDescriptor, FileDescriptor, AnnotatedDescriptor, AccessModifierDescriptor, AbstractDescriptor, ValidDescriptor {
14 |
15 | /**
16 | * Return the super class.
17 | *
18 | * @return The super class.
19 | */
20 | @Relation("EXTENDS")
21 | TypeDescriptor getSuperClass();
22 |
23 | /**
24 | * Set the super class.
25 | *
26 | * @param superClass
27 | * The super class.
28 | */
29 | void setSuperClass(TypeDescriptor superClass);
30 |
31 | /**
32 | * Return the generic super class.
33 | *
34 | * @return The generic super class.
35 | */
36 | @Relation("EXTENDS_GENERIC")
37 | BoundDescriptor getGenericSuperClass();
38 |
39 | /**
40 | * Set the generic super class.
41 | *
42 | * @param genericSuperClass
43 | * The generic super class.
44 | */
45 | void setGenericSuperClass(BoundDescriptor genericSuperClass);
46 |
47 | /**
48 | * Return the implemented interfaces.
49 | *
50 | * @return The implemented interfaces.
51 | */
52 | @Relation("IMPLEMENTS")
53 | List getInterfaces();
54 |
55 | /**
56 | * Return the implemented generic interfaces.
57 | *
58 | * @return The implemented generic interfaces.
59 | */
60 | @Relation("IMPLEMENTS_GENERIC")
61 | List getGenericInterfaces();
62 | }
63 |
--------------------------------------------------------------------------------
/src/main/java/com/buschmais/jqassistant/plugin/java/api/model/ClassTypeDescriptor.java:
--------------------------------------------------------------------------------
1 | package com.buschmais.jqassistant.plugin.java.api.model;
2 |
3 | /**
4 | * Denotes a class type.
5 | */
6 | public interface ClassTypeDescriptor extends ClassFileDescriptor, ClassDescriptor {
7 | }
8 |
--------------------------------------------------------------------------------
/src/main/java/com/buschmais/jqassistant/plugin/java/api/model/ClassValueDescriptor.java:
--------------------------------------------------------------------------------
1 | package com.buschmais.jqassistant.plugin.java.api.model;
2 |
3 | import com.buschmais.jqassistant.plugin.common.api.model.ValueDescriptor;
4 | import com.buschmais.xo.neo4j.api.annotation.Relation;
5 |
6 | /**
7 | * Represents a class value (e.g. a referenced class).
8 | */
9 | public interface ClassValueDescriptor extends ValueDescriptor, ClassDescriptor {
10 |
11 | @Relation("IS")
12 | @Override
13 | TypeDescriptor getValue();
14 |
15 | @Override
16 | void setValue(TypeDescriptor typeDescriptor);
17 |
18 | }
19 |
--------------------------------------------------------------------------------
/src/main/java/com/buschmais/jqassistant/plugin/java/api/model/ConstructorDescriptor.java:
--------------------------------------------------------------------------------
1 | package com.buschmais.jqassistant.plugin.java.api.model;
2 |
3 | import com.buschmais.jqassistant.plugin.java.api.report.Java;
4 | import com.buschmais.xo.neo4j.api.annotation.Label;
5 |
6 | @Java(Java.JavaLanguageElement.Constructor)
7 | @Label(value = "Constructor")
8 | public interface ConstructorDescriptor extends MethodDescriptor {
9 | }
10 |
--------------------------------------------------------------------------------
/src/main/java/com/buschmais/jqassistant/plugin/java/api/model/Declares.java:
--------------------------------------------------------------------------------
1 | package com.buschmais.jqassistant.plugin.java.api.model;
2 |
3 | import java.lang.annotation.ElementType;
4 | import java.lang.annotation.Retention;
5 | import java.lang.annotation.RetentionPolicy;
6 | import java.lang.annotation.Target;
7 |
8 | import com.buschmais.xo.neo4j.api.annotation.Relation;
9 |
10 | /**
11 | * Defines the declares relation used for fields, methods and inner classes.
12 | */
13 | @Relation("DECLARES")
14 | @Retention(RetentionPolicy.RUNTIME)
15 | @Target(ElementType.METHOD)
16 | public @interface Declares {
17 | }
18 |
--------------------------------------------------------------------------------
/src/main/java/com/buschmais/jqassistant/plugin/java/api/model/EnumDescriptor.java:
--------------------------------------------------------------------------------
1 | package com.buschmais.jqassistant.plugin.java.api.model;
2 |
3 | import com.buschmais.xo.api.annotation.Abstract;
4 | import com.buschmais.xo.neo4j.api.annotation.Label;
5 |
6 | @Label("Enum")
7 | @Abstract
8 | public interface EnumDescriptor extends JavaByteCodeDescriptor {
9 | }
10 |
--------------------------------------------------------------------------------
/src/main/java/com/buschmais/jqassistant/plugin/java/api/model/EnumTypeDescriptor.java:
--------------------------------------------------------------------------------
1 | package com.buschmais.jqassistant.plugin.java.api.model;
2 |
3 | /**
4 | * Denotes an enumeration type.
5 | */
6 | public interface EnumTypeDescriptor extends ClassFileDescriptor, EnumDescriptor {
7 | }
8 |
--------------------------------------------------------------------------------
/src/main/java/com/buschmais/jqassistant/plugin/java/api/model/EnumValueDescriptor.java:
--------------------------------------------------------------------------------
1 | package com.buschmais.jqassistant.plugin.java.api.model;
2 |
3 | import com.buschmais.jqassistant.plugin.common.api.model.ValueDescriptor;
4 | import com.buschmais.xo.neo4j.api.annotation.Relation;
5 |
6 | /**
7 | * Represents an enumeration value.
8 | */
9 | public interface EnumValueDescriptor extends TypedDescriptor, ValueDescriptor, EnumDescriptor {
10 |
11 | @Relation("IS")
12 | @Override
13 | FieldDescriptor getValue();
14 |
15 | @Override
16 | void setValue(FieldDescriptor fieldDescriptor);
17 | }
18 |
--------------------------------------------------------------------------------
/src/main/java/com/buschmais/jqassistant/plugin/java/api/model/ExportedPackageDescriptor.java:
--------------------------------------------------------------------------------
1 | package com.buschmais.jqassistant.plugin.java.api.model;
2 |
3 | import com.buschmais.xo.neo4j.api.annotation.Label;
4 |
5 | @Label("ExportedPackage")
6 | public interface ExportedPackageDescriptor extends JavaDescriptor, PackageToModuleDescriptor {
7 | }
8 |
--------------------------------------------------------------------------------
/src/main/java/com/buschmais/jqassistant/plugin/java/api/model/FieldDescriptor.java:
--------------------------------------------------------------------------------
1 | package com.buschmais.jqassistant.plugin.java.api.model;
2 |
3 | import java.util.List;
4 |
5 | import com.buschmais.jqassistant.plugin.java.api.report.Java;
6 | import com.buschmais.xo.neo4j.api.annotation.Label;
7 | import com.buschmais.xo.neo4j.api.annotation.Property;
8 | import com.buschmais.xo.neo4j.api.annotation.Relation;
9 |
10 | /**
11 | * Describes a field (i.e. static or instance variable) of a Java class.
12 | */
13 | @Java(Java.JavaLanguageElement.Field)
14 | @Label(value = "Field")
15 | public interface FieldDescriptor extends MemberDescriptor, TypedDescriptor, AccessModifierDescriptor {
16 |
17 | /**
18 | * @return the transientField
19 | */
20 | @Property("transient")
21 | Boolean isTransient();
22 |
23 | /**
24 | * @param transientField
25 | * the transientField to set
26 | */
27 | void setTransient(Boolean transientField);
28 |
29 | /**
30 | * @return the volatileField
31 | */
32 | @Property("volatile")
33 | Boolean isVolatile();
34 |
35 | /**
36 | * @param volatileField
37 | * the volatileField to set
38 | */
39 | void setVolatile(Boolean volatileField);
40 |
41 | List getWrittenBy();
42 |
43 | List getReadBy();
44 |
45 | @Relation("HAS")
46 | PrimitiveValueDescriptor getValue();
47 |
48 | void setValue(PrimitiveValueDescriptor valueDescriptor);
49 | }
50 |
--------------------------------------------------------------------------------
/src/main/java/com/buschmais/jqassistant/plugin/java/api/model/IndexTemplate.java:
--------------------------------------------------------------------------------
1 | package com.buschmais.jqassistant.plugin.java.api.model;
2 |
3 | import com.buschmais.xo.neo4j.api.annotation.Property;
4 |
5 | public interface IndexTemplate {
6 |
7 | @Property("index")
8 | int getIndex();
9 |
10 | void setIndex(int index);
11 |
12 | }
13 |
--------------------------------------------------------------------------------
/src/main/java/com/buschmais/jqassistant/plugin/java/api/model/InterfaceTypeDescriptor.java:
--------------------------------------------------------------------------------
1 | package com.buschmais.jqassistant.plugin.java.api.model;
2 |
3 | import com.buschmais.xo.neo4j.api.annotation.Label;
4 |
5 | /**
6 | * Denotes an interface type.
7 | */
8 | @Label("Interface")
9 | public interface InterfaceTypeDescriptor extends ClassFileDescriptor {
10 | }
11 |
--------------------------------------------------------------------------------
/src/main/java/com/buschmais/jqassistant/plugin/java/api/model/InvokesDescriptor.java:
--------------------------------------------------------------------------------
1 | package com.buschmais.jqassistant.plugin.java.api.model;
2 |
3 | import com.buschmais.jqassistant.core.store.api.model.Descriptor;
4 | import com.buschmais.jqassistant.plugin.java.api.report.Java;
5 | import com.buschmais.xo.neo4j.api.annotation.Relation;
6 |
7 | import static com.buschmais.xo.neo4j.api.annotation.Relation.Incoming;
8 | import static com.buschmais.xo.neo4j.api.annotation.Relation.Outgoing;
9 |
10 | /**
11 | * Defines an INVOKES relation between two methods.
12 | */
13 | @Relation("INVOKES")
14 | @Java(Java.JavaLanguageElement.MethodInvocation)
15 | public interface InvokesDescriptor extends Descriptor, LineNumberDescriptor {
16 |
17 | @Outgoing
18 | MethodDescriptor getInvokingMethod();
19 |
20 | @Incoming
21 | MethodDescriptor getInvokedMethod();
22 |
23 | }
24 |
--------------------------------------------------------------------------------
/src/main/java/com/buschmais/jqassistant/plugin/java/api/model/JarArchiveDescriptor.java:
--------------------------------------------------------------------------------
1 | package com.buschmais.jqassistant.plugin.java.api.model;
2 |
3 | import com.buschmais.jqassistant.plugin.common.api.model.ZipArchiveDescriptor;
4 | import com.buschmais.xo.neo4j.api.annotation.Label;
5 |
6 | @Label("Jar")
7 | public interface JarArchiveDescriptor extends JavaArtifactFileDescriptor, ZipArchiveDescriptor {
8 | }
9 |
--------------------------------------------------------------------------------
/src/main/java/com/buschmais/jqassistant/plugin/java/api/model/JavaByteCodeDescriptor.java:
--------------------------------------------------------------------------------
1 | package com.buschmais.jqassistant.plugin.java.api.model;
2 |
3 | import com.buschmais.xo.api.annotation.Abstract;
4 |
5 | /**
6 | * Defines the combination of labels "Java" and "ByteCode".
7 | */
8 | @Abstract
9 | public interface JavaByteCodeDescriptor extends JavaDescriptor, ByteCodeDescriptor {
10 |
11 | /**
12 | * Return the name of the source file.
13 | *
14 | * @return The name of the source file.
15 | */
16 | String getSourceFileName();
17 |
18 | /**
19 | * Set the name of the source file.
20 | *
21 | * @param sourceFileName
22 | * The name of the source file.
23 | */
24 | void setSourceFileName(String sourceFileName);
25 |
26 | /**
27 | * Return the byte code version of the class file.
28 | *
29 | * @return The byte code version of the class file.
30 | */
31 | int getByteCodeVersion();
32 |
33 | /**
34 | * Set the byte code version of the class file.
35 | *
36 | * @param byteCodeVersion
37 | * The byte code version of the class file.
38 | */
39 | void setByteCodeVersion(int byteCodeVersion);
40 |
41 | }
42 |
--------------------------------------------------------------------------------
/src/main/java/com/buschmais/jqassistant/plugin/java/api/model/JavaClassesDirectoryDescriptor.java:
--------------------------------------------------------------------------------
1 | package com.buschmais.jqassistant.plugin.java.api.model;
2 |
3 | import com.buschmais.jqassistant.plugin.common.api.model.DirectoryDescriptor;
4 | import com.buschmais.jqassistant.plugin.common.api.report.Generic;
5 |
6 | /**
7 | * Defines a directory containing java classes.
8 | */
9 | @Generic(Generic.GenericLanguageElement.ArtifactFile)
10 | public interface JavaClassesDirectoryDescriptor extends JavaArtifactFileDescriptor, DirectoryDescriptor {
11 | }
12 |
--------------------------------------------------------------------------------
/src/main/java/com/buschmais/jqassistant/plugin/java/api/model/JavaDescriptor.java:
--------------------------------------------------------------------------------
1 | package com.buschmais.jqassistant.plugin.java.api.model;
2 |
3 | import com.buschmais.xo.api.annotation.Abstract;
4 | import com.buschmais.xo.neo4j.api.annotation.Label;
5 |
6 | /**
7 | * Defines label "Java" which is applied to all nodes generated by this plugin.
8 | */
9 | @Abstract
10 | @Label("Java")
11 | public interface JavaDescriptor {
12 | }
13 |
--------------------------------------------------------------------------------
/src/main/java/com/buschmais/jqassistant/plugin/java/api/model/JavaSuppressDescriptor.java:
--------------------------------------------------------------------------------
1 | package com.buschmais.jqassistant.plugin.java.api.model;
2 |
3 | import com.buschmais.jqassistant.core.report.api.model.Suppress;
4 | import com.buschmais.jqassistant.core.store.api.model.Descriptor;
5 |
6 | public interface JavaSuppressDescriptor extends JavaDescriptor, Suppress, Descriptor {
7 | }
8 |
--------------------------------------------------------------------------------
/src/main/java/com/buschmais/jqassistant/plugin/java/api/model/LambdaMethodDescriptor.java:
--------------------------------------------------------------------------------
1 | package com.buschmais.jqassistant.plugin.java.api.model;
2 |
3 | import com.buschmais.xo.neo4j.api.annotation.Label;
4 |
5 | @Label("Lambda")
6 | public interface LambdaMethodDescriptor extends MethodDescriptor {
7 | }
8 |
--------------------------------------------------------------------------------
/src/main/java/com/buschmais/jqassistant/plugin/java/api/model/LineNumberDescriptor.java:
--------------------------------------------------------------------------------
1 | package com.buschmais.jqassistant.plugin.java.api.model;
2 |
3 | import com.buschmais.xo.neo4j.api.annotation.Property;
4 |
5 | /**
6 | * Defines a descriptor containing line number information.
7 | */
8 | public interface LineNumberDescriptor {
9 |
10 | @Property("lineNumber")
11 | Integer getLineNumber();
12 |
13 | void setLineNumber(Integer lineNumber);
14 |
15 | }
16 |
--------------------------------------------------------------------------------
/src/main/java/com/buschmais/jqassistant/plugin/java/api/model/ManifestEntryDescriptor.java:
--------------------------------------------------------------------------------
1 | package com.buschmais.jqassistant.plugin.java.api.model;
2 |
3 | import com.buschmais.jqassistant.plugin.common.api.model.ValueDescriptor;
4 | import com.buschmais.xo.neo4j.api.annotation.Label;
5 | import com.buschmais.xo.neo4j.api.annotation.Property;
6 |
7 | @Label("ManifestEntry")
8 | public interface ManifestEntryDescriptor extends ValueDescriptor {
9 |
10 | /**
11 | * Set the value.
12 | *
13 | * @param value
14 | * The value.
15 | */
16 | void setValue(String value);
17 |
18 | /**
19 | * Return the value.
20 | *
21 | * @return The value.
22 | */
23 | @Property("value")
24 | String getValue();
25 | }
26 |
--------------------------------------------------------------------------------
/src/main/java/com/buschmais/jqassistant/plugin/java/api/model/ManifestFileDescriptor.java:
--------------------------------------------------------------------------------
1 | package com.buschmais.jqassistant.plugin.java.api.model;
2 |
3 | import java.util.List;
4 |
5 | import com.buschmais.jqassistant.plugin.common.api.model.FileDescriptor;
6 | import com.buschmais.xo.neo4j.api.annotation.Label;
7 |
8 | import static com.buschmais.xo.neo4j.api.annotation.Relation.Outgoing;
9 |
10 | @Label("Manifest")
11 | public interface ManifestFileDescriptor extends JavaDescriptor, FileDescriptor {
12 |
13 | @Declares
14 | @Outgoing
15 | ManifestSectionDescriptor getMainSection();
16 |
17 | void setMainSection(ManifestSectionDescriptor mainSection);
18 |
19 | @Declares
20 | @Outgoing
21 | List getManifestSections();
22 | }
23 |
--------------------------------------------------------------------------------
/src/main/java/com/buschmais/jqassistant/plugin/java/api/model/ManifestSectionDescriptor.java:
--------------------------------------------------------------------------------
1 | package com.buschmais.jqassistant.plugin.java.api.model;
2 |
3 | import java.util.List;
4 |
5 | import com.buschmais.jqassistant.plugin.common.api.model.NamedDescriptor;
6 | import com.buschmais.xo.neo4j.api.annotation.Label;
7 | import com.buschmais.xo.neo4j.api.annotation.Relation;
8 |
9 | import static com.buschmais.xo.neo4j.api.annotation.Relation.Outgoing;
10 |
11 | @Label("ManifestSection")
12 | public interface ManifestSectionDescriptor extends JavaDescriptor, NamedDescriptor {
13 |
14 | @Relation("HAS")
15 | @Outgoing
16 | List getManifestEntries();
17 |
18 | }
19 |
--------------------------------------------------------------------------------
/src/main/java/com/buschmais/jqassistant/plugin/java/api/model/MemberDescriptor.java:
--------------------------------------------------------------------------------
1 | package com.buschmais.jqassistant.plugin.java.api.model;
2 |
3 | import com.buschmais.jqassistant.core.store.api.model.Descriptor;
4 | import com.buschmais.jqassistant.plugin.common.api.model.NamedDescriptor;
5 | import com.buschmais.xo.api.annotation.Abstract;
6 | import com.buschmais.xo.neo4j.api.annotation.Label;
7 |
8 | import static com.buschmais.xo.neo4j.api.annotation.Relation.Incoming;
9 |
10 | /**
11 | * Defines a member of Java type.
12 | */
13 | @Label("Member")
14 | @Abstract
15 | public interface MemberDescriptor extends JavaByteCodeDescriptor, NamedDescriptor, SignatureDescriptor, AnnotatedDescriptor, AccessModifierDescriptor, Descriptor {
16 |
17 | /**
18 | * Return the declaring type.
19 | *
20 | * @return The declaring type.
21 | */
22 | @Incoming
23 | @Declares
24 | TypeDescriptor getDeclaringType();
25 |
26 | }
27 |
--------------------------------------------------------------------------------
/src/main/java/com/buschmais/jqassistant/plugin/java/api/model/ModuleDescriptor.java:
--------------------------------------------------------------------------------
1 | package com.buschmais.jqassistant.plugin.java.api.model;
2 |
3 | import java.util.List;
4 |
5 | import com.buschmais.jqassistant.core.store.api.model.FullQualifiedNameDescriptor;
6 | import com.buschmais.xo.neo4j.api.annotation.Label;
7 | import com.buschmais.xo.neo4j.api.annotation.Relation;
8 | import com.buschmais.xo.neo4j.api.annotation.Relation.Incoming;
9 | import com.buschmais.xo.neo4j.api.annotation.Relation.Outgoing;
10 |
11 | @Label("Module")
12 | public interface ModuleDescriptor extends JavaByteCodeDescriptor, FullQualifiedNameDescriptor, AccessModifierDescriptor {
13 |
14 | String getVersion();
15 |
16 | void setVersion(String version);
17 |
18 | Boolean isOpen();
19 |
20 | void setOpen(Boolean open);
21 |
22 | @Relation("DECLARES_MAIN_CLASS")
23 | TypeDescriptor getMainClass();
24 |
25 | void setMainClass(TypeDescriptor mainClassType);
26 |
27 | @Outgoing
28 | List getRequiredModules();
29 |
30 | @Incoming
31 | List getRequiringModules();
32 |
33 | @Relation("EXPORTS")
34 | List getExportedPackages();
35 |
36 | @Relation("USES")
37 | List getUsesServices();
38 |
39 | @Relation("PROVIDES")
40 | List getProvidesServices();
41 |
42 | @Relation("OPENS")
43 | List getOpenPackages();
44 | }
45 |
--------------------------------------------------------------------------------
/src/main/java/com/buschmais/jqassistant/plugin/java/api/model/OpenPackageDescriptor.java:
--------------------------------------------------------------------------------
1 | package com.buschmais.jqassistant.plugin.java.api.model;
2 |
3 | import com.buschmais.xo.neo4j.api.annotation.Label;
4 |
5 | @Label("OpenPackage")
6 | public interface OpenPackageDescriptor extends JavaDescriptor, PackageToModuleDescriptor {
7 | }
8 |
--------------------------------------------------------------------------------
/src/main/java/com/buschmais/jqassistant/plugin/java/api/model/PackageDescriptor.java:
--------------------------------------------------------------------------------
1 | package com.buschmais.jqassistant.plugin.java.api.model;
2 |
3 | import com.buschmais.jqassistant.core.store.api.model.FullQualifiedNameDescriptor;
4 | import com.buschmais.jqassistant.plugin.common.api.model.DirectoryDescriptor;
5 | import com.buschmais.jqassistant.plugin.java.api.report.Java;
6 | import com.buschmais.xo.neo4j.api.annotation.Label;
7 |
8 | import static com.buschmais.jqassistant.plugin.java.api.report.Java.JavaLanguageElement.Package;
9 |
10 | /**
11 | * Describes a Java package.
12 | */
13 | @Java(Package)
14 | @Label(value = "Package", usingIndexedPropertyOf = FullQualifiedNameDescriptor.class)
15 | public interface PackageDescriptor extends JavaDescriptor, PackageMemberDescriptor, DirectoryDescriptor {
16 | }
17 |
--------------------------------------------------------------------------------
/src/main/java/com/buschmais/jqassistant/plugin/java/api/model/PackageMemberDescriptor.java:
--------------------------------------------------------------------------------
1 | package com.buschmais.jqassistant.plugin.java.api.model;
2 |
3 | import com.buschmais.jqassistant.core.store.api.model.FullQualifiedNameDescriptor;
4 | import com.buschmais.jqassistant.plugin.common.api.model.NamedDescriptor;
5 |
6 | /**
7 | * Defines a common base descriptor for all members of {@link PackageDescriptor}s.
8 | */
9 | public interface PackageMemberDescriptor extends FullQualifiedNameDescriptor, NamedDescriptor {
10 | }
11 |
--------------------------------------------------------------------------------
/src/main/java/com/buschmais/jqassistant/plugin/java/api/model/PackageToModuleDescriptor.java:
--------------------------------------------------------------------------------
1 | package com.buschmais.jqassistant.plugin.java.api.model;
2 |
3 | import java.util.List;
4 |
5 | import com.buschmais.jqassistant.core.store.api.model.Descriptor;
6 | import com.buschmais.xo.api.annotation.Abstract;
7 | import com.buschmais.xo.neo4j.api.annotation.Relation;
8 |
9 | @Abstract
10 | public interface PackageToModuleDescriptor extends AccessModifierDescriptor, Descriptor {
11 |
12 | @Relation("OF_PACKAGE")
13 | PackageDescriptor getPackage();
14 |
15 | void setPackage(PackageDescriptor target);
16 |
17 | @Relation("TO_MODULE")
18 | List getToModules();
19 |
20 | }
21 |
--------------------------------------------------------------------------------
/src/main/java/com/buschmais/jqassistant/plugin/java/api/model/ParameterDescriptor.java:
--------------------------------------------------------------------------------
1 | package com.buschmais.jqassistant.plugin.java.api.model;
2 |
3 | import com.buschmais.xo.neo4j.api.annotation.Label;
4 |
5 | /**
6 | * Describes a parameter of a method.
7 | */
8 | @Label(value = "Parameter")
9 | public interface ParameterDescriptor extends JavaByteCodeDescriptor, TypedDescriptor, AnnotatedDescriptor, IndexTemplate {
10 |
11 | }
12 |
--------------------------------------------------------------------------------
/src/main/java/com/buschmais/jqassistant/plugin/java/api/model/PrimitiveDescriptor.java:
--------------------------------------------------------------------------------
1 | package com.buschmais.jqassistant.plugin.java.api.model;
2 |
3 | import com.buschmais.xo.api.annotation.Abstract;
4 | import com.buschmais.xo.neo4j.api.annotation.Label;
5 |
6 | /**
7 | * Represents a primitive value.
8 | */
9 | @Label("Primitive")
10 | @Abstract
11 | public interface PrimitiveDescriptor extends JavaByteCodeDescriptor {
12 | }
13 |
--------------------------------------------------------------------------------
/src/main/java/com/buschmais/jqassistant/plugin/java/api/model/PrimitiveValueDescriptor.java:
--------------------------------------------------------------------------------
1 | package com.buschmais.jqassistant.plugin.java.api.model;
2 |
3 | import com.buschmais.jqassistant.plugin.common.api.model.ValueDescriptor;
4 | import com.buschmais.xo.neo4j.api.annotation.Property;
5 |
6 | /**
7 | * Represents a primitive value.
8 | */
9 | public interface PrimitiveValueDescriptor extends PrimitiveDescriptor, TypedDescriptor, ValueDescriptor