Skip to content

Commit ec9fdf2

Browse files
committed
Add detailed deprecation usage report
1 parent 351e276 commit ec9fdf2

File tree

2 files changed

+43
-1
lines changed

2 files changed

+43
-1
lines changed
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
// List all non deprecated elements (types, members) that call deprecated elements
2+
3+
MATCH (annotated)-[:ANNOTATED_BY]->(:Annotation)-[:OF_TYPE]->(:Type{fqn:'java.lang.Deprecated'})
4+
OPTIONAL MATCH (artifactReadsDeprecated:Artifact)-[:CONTAINS]->(typeReadsDeprecated:Type)-[:DECLARES]->(readsDeprecated:Method)-[:READS]->(annotated:Field)
5+
OPTIONAL MATCH (artifactInvokesDeprecated:Artifact)-[:CONTAINS]->(typeInvokesDeprecated:Type)-[:DECLARES]->(invokesDeprecated:Method)-[:INVOKES]->(annotated:Method)
6+
OPTIONAL MATCH (artifactInvokesParameterDeprecated:Artifact)-[:CONTAINS]->(typeInvokesParameterDeprecated:Type)-[:DECLARES]->(invokesParameterDeprecated:Method)-[:INVOKES]->(parameterAnnotatedMethod:Method)-[:HAS]->(annotated:Parameter)
7+
OPTIONAL MATCH (artifactDependsOnDeprecated:Artifact)-[:CONTAINS]->(typeDependsOnDeprecated:Type)-[:DEPENDS_ON]->(annotated:Type)
8+
WITH coalesce(artifactReadsDeprecated, artifactInvokesDeprecated, artifactInvokesParameterDeprecated, artifactDependsOnDeprecated) AS artifact
9+
,coalesce(typeReadsDeprecated, typeInvokesDeprecated, typeInvokesParameterDeprecated, typeDependsOnDeprecated) AS type
10+
,coalesce(readsDeprecated, invokesDeprecated, invokesParameterDeprecated) AS method
11+
,coalesce(annotated.fqn, annotated.signature, annotated.name) AS deprecatedElement
12+
,CASE WHEN 'Annotation' IN labels(annotated) THEN 'Annotation'
13+
WHEN 'Parameter' IN labels(annotated) THEN 'Parameter'
14+
WHEN 'Field' IN labels(annotated) THEN 'Field'
15+
WHEN 'Constructor' IN labels(annotated) THEN 'Constructor'
16+
WHEN 'Method' IN labels(annotated) THEN 'Method'
17+
WHEN 'Member' IN labels(annotated) THEN 'Member'
18+
WHEN 'Class' IN labels(annotated) THEN 'Class'
19+
WHEN 'Interface' IN labels(annotated) THEN 'Interface'
20+
WHEN 'Enum' IN labels(annotated) THEN 'Enum'
21+
WHEN 'Type' IN labels(annotated) THEN 'Type'
22+
ELSE 'Unexpected'
23+
END AS deprecatedElementType
24+
,coalesce(typeReadsDeprecated.fqn + '.' + readsDeprecated.name
25+
,typeInvokesDeprecated.fqn + '.' + invokesDeprecated.name
26+
,typeInvokesParameterDeprecated.fqn + '.' + invokesParameterDeprecated.name
27+
,typeDependsOnDeprecated.fqn
28+
) AS elementUsingDeprecatedElement
29+
WHERE artifact IS NOT NULL
30+
AND NOT (type)-[:ANNOTATED_BY]->(:Annotation)-[:OF_TYPE]->(:Type{fqn:'java.lang.Deprecated'})
31+
AND NOT (method)-[:ANNOTATED_BY]->(:Annotation)-[:OF_TYPE]->(:Type{fqn:'java.lang.Deprecated'})
32+
RETURN replace(last(split(artifact.fileName, '/')), '.jar', '') AS artifactName
33+
,deprecatedElementType
34+
,elementUsingDeprecatedElement
35+
,deprecatedElement
36+
ORDER BY artifactName ASCENDING
37+
,elementUsingDeprecatedElement ASCENDING

scripts/reports/JavaCsv.sh

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,13 @@ mkdir -p "${FULL_REPORT_DIRECTORY}"
3737
# Local Constants
3838
JAVA_CYPHER_DIR="${CYPHER_DIR}/Java"
3939

40+
echo "JavaCsv: $(date +'%Y-%m-%dT%H:%M:%S%z') Executing Queries..."
41+
4042
execute_cypher "${JAVA_CYPHER_DIR}/Java_Reflection_usage.cypher" > "${FULL_REPORT_DIRECTORY}/ReflectionUsage.csv"
4143
execute_cypher "${JAVA_CYPHER_DIR}/Java_Reflection_usage_detailed.cypher" > "${FULL_REPORT_DIRECTORY}/ReflectionUsageDetailed.csv"
4244
execute_cypher "${JAVA_CYPHER_DIR}/Java_deprecated_element_usage.cypher" > "${FULL_REPORT_DIRECTORY}/DeprecatedElementUsage.csv"
45+
execute_cypher "${JAVA_CYPHER_DIR}/Java_deprecated_element_usage_detailed.cypher" > "${FULL_REPORT_DIRECTORY}/DeprecatedElementUsageDetailed.csv"
4346
execute_cypher "${JAVA_CYPHER_DIR}/Annotated_code_elements.cypher" > "${FULL_REPORT_DIRECTORY}/AnnotatedCodeElements.csv"
44-
execute_cypher "${JAVA_CYPHER_DIR}/Annotated_code_elements_per_artifact.cypher" > "${FULL_REPORT_DIRECTORY}/AnnotatedCodeElementsPerArtifact.csv"
47+
execute_cypher "${JAVA_CYPHER_DIR}/Annotated_code_elements_per_artifact.cypher" > "${FULL_REPORT_DIRECTORY}/AnnotatedCodeElementsPerArtifact.csv"
48+
49+
echo "JavaCsv: $(date +'%Y-%m-%dT%H:%M:%S%z') Successfully finished"

0 commit comments

Comments
 (0)