GRAPH-646: scip syntax java package namespace fix (#63048)

- Fix package declaration queries for Java in scip-syntax
- Fix symlink to precise SCIP data in integration tests
- Remove colored output from evaluation results
This commit is contained in:
Anton Sviridov 2024-06-05 10:51:11 +01:00 committed by GitHub
parent 224b3e5830
commit 507668fefd
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
10 changed files with 104 additions and 75 deletions

View File

@ -1 +1,2 @@
!testdata/java/index.scip
*.snap.new

View File

@ -372,7 +372,10 @@ impl<'e> EvaluationResult<'e> {
writeln!(
output,
"{}",
"How many extra occurrences we reported compared to compiler?".italic()
self.render(
"How many extra occurrences we reported compared to compiler?".italic(),
options
)
)?;
for symbol_occurrence in &self.false_positives {

View File

@ -1 +1 @@
../../../../../../bazel-bin/docker-images/syntax-highlighter/crates/scip-treesitter-cli/index-java.scip
../../../../../../bazel-bin/docker-images/syntax-highlighter/crates/scip-syntax/index-java.scip

View File

@ -3,67 +3,68 @@ source: crates/scip-syntax/tests/integration_test.rs
expression: dumped
---
package MyPackage;
// ^^^^^^^^^ definition(Package) scip-ctags MyPackage/
public class globals {
// ^^^^^^^ definition scip-ctags globals#
// ^^^^^^^ definition scip-ctags MyPackage/globals#
private static int field1;
// ^^^^^^ definition scip-ctags globals#field1.
// ^^^^^^ definition scip-ctags MyPackage/globals#field1.
protected static int field2;
// ^^^^^^ definition scip-ctags globals#field2.
// ^^^^^^ definition scip-ctags MyPackage/globals#field2.
public static int field3;
// ^^^^^^ definition scip-ctags globals#field3.
// ^^^^^^ definition scip-ctags MyPackage/globals#field3.
private int field4;
// ^^^^^^ definition scip-ctags globals#field4.
// ^^^^^^ definition scip-ctags MyPackage/globals#field4.
protected int field5;
// ^^^^^^ definition scip-ctags globals#field5.
// ^^^^^^ definition scip-ctags MyPackage/globals#field5.
public int field6;
// ^^^^^^ definition scip-ctags globals#field6.
// ^^^^^^ definition scip-ctags MyPackage/globals#field6.
private static void method1() {}
// ^^^^^^^ definition scip-ctags globals#method1().
// ^^^^^^^ definition scip-ctags MyPackage/globals#method1().
protected static void method2() {}
// ^^^^^^^ definition scip-ctags globals#method2().
// ^^^^^^^ definition scip-ctags MyPackage/globals#method2().
public static void method3() {}
// ^^^^^^^ definition scip-ctags globals#method3().
// ^^^^^^^ definition scip-ctags MyPackage/globals#method3().
private void method4() {}
// ^^^^^^^ definition scip-ctags globals#method4().
// ^^^^^^^ definition scip-ctags MyPackage/globals#method4().
protected void method5() {}
// ^^^^^^^ definition scip-ctags globals#method5().
// ^^^^^^^ definition scip-ctags MyPackage/globals#method5().
public void method6() {}
// ^^^^^^^ definition scip-ctags globals#method6().
// ^^^^^^^ definition scip-ctags MyPackage/globals#method6().
public static final String COOLEST_STRING = "probably this one";
// ^^^^^^^^^^^^^^ definition scip-ctags globals#COOLEST_STRING.
// ^^^^^^^^^^^^^^ definition scip-ctags MyPackage/globals#COOLEST_STRING.
public class ClassInAClass {
// ^^^^^^^^^^^^^ definition scip-ctags globals#ClassInAClass#
// ^^^^^^^^^^^^^ definition scip-ctags MyPackage/globals#ClassInAClass#
boolean classy = true;
// ^^^^^^ definition scip-ctags globals#ClassInAClass#classy.
// ^^^^^^ definition scip-ctags MyPackage/globals#ClassInAClass#classy.
public static enum Enum {
// ^^^^ definition scip-ctags globals#ClassInAClass#Enum#
// ^^^^ definition scip-ctags MyPackage/globals#ClassInAClass#Enum#
these,
// ^^^^^ definition scip-ctags globals#ClassInAClass#Enum#these.
// ^^^^^ definition scip-ctags MyPackage/globals#ClassInAClass#Enum#these.
should,
// ^^^^^^ definition scip-ctags globals#ClassInAClass#Enum#should.
// ^^^^^^ definition scip-ctags MyPackage/globals#ClassInAClass#Enum#should.
be,
// ^^ definition scip-ctags globals#ClassInAClass#Enum#be.
// ^^ definition scip-ctags MyPackage/globals#ClassInAClass#Enum#be.
recognized,
// ^^^^^^^^^^ definition scip-ctags globals#ClassInAClass#Enum#recognized.
// ^^^^^^^^^^ definition scip-ctags MyPackage/globals#ClassInAClass#Enum#recognized.
as,
// ^^ definition scip-ctags globals#ClassInAClass#Enum#as.
// ^^ definition scip-ctags MyPackage/globals#ClassInAClass#Enum#as.
terms
// ^^^^^ definition scip-ctags globals#ClassInAClass#Enum#terms.
// ^^^^^ definition scip-ctags MyPackage/globals#ClassInAClass#Enum#terms.
}
public interface Goated {
// ^^^^^^ definition scip-ctags globals#ClassInAClass#Goated#
// ^^^^^^ definition scip-ctags MyPackage/globals#ClassInAClass#Goated#
boolean withTheSauce();
// ^^^^^^^^^^^^ definition scip-ctags globals#ClassInAClass#Goated#withTheSauce().
// ^^^^^^^^^^^^ definition scip-ctags MyPackage/globals#ClassInAClass#Goated#withTheSauce().
}
public void myCoolMethod() {
// ^^^^^^^^^^^^ definition scip-ctags globals#ClassInAClass#myCoolMethod().
// ^^^^^^^^^^^^ definition scip-ctags MyPackage/globals#ClassInAClass#myCoolMethod().
class WhatIsGoingOn {}
boolean iThinkThisIsAllowedButWeDontReallyCare = true;
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ definition local 1

View File

@ -2,7 +2,7 @@
source: crates/scip-syntax/tests/integration_test.rs
expression: "String::from_utf8(str).unwrap()"
---
{"precision_percent":"100.0","recall_percent":"37.4","true_positives":"34.0","false_positives":"0.0","false_negatives":"57.0"}
{"precision_percent":"94.4","recall_percent":"37.4","true_positives":"34.0","false_positives":"2.0","false_negatives":"57.0"}
False negatives (FN): 57
[FN] src/main/java/Main.java: L0 C8 -- semanticdb maven . . com/
@ -63,6 +63,11 @@ False negatives (FN): 57
[FN] src/main/java/TodoList.java: L45 C15 -- semanticdb maven jdk 17 java/io/PrintStream#println(+8).
[FN] src/main/java/TodoList.java: L45 C38 -- semanticdb maven . . com/sourcegraph/graph/twodwo/TodoList#Item#getTitle().
False positives: 2
How many extra occurrences we reported compared to compiler?
[FP] src/main/java/Main.java: L0 C8 -- scip-ctags . . . `com.sourcegraph.graph.twodwo`/
[FP] src/main/java/TodoList.java: L0 C8 -- scip-ctags . . . `com.sourcegraph.graph.twodwo`/
True positives: 35
[TP] src/main/java/Main.java: L3 C13 -- semanticdb maven . . com/sourcegraph/graph/twodwo/Main#`<init>`().
[TP] src/main/java/Main.java: L5 C23 -- semanticdb maven . . com/sourcegraph/graph/twodwo/Main#main().
@ -101,10 +106,10 @@ True positives: 35
[TP] src/main/java/TodoList.java: L45 C33 -- local doc-1-4
Symbol mapping
scip-ctags . . . Main#
scip-ctags . . . `com.sourcegraph.graph.twodwo`/Main#
1.00 semanticdb maven . . com/sourcegraph/graph/twodwo/Main#`<init>`(). [1/1 occurrences]
scip-ctags . . . Main#main().
scip-ctags . . . `com.sourcegraph.graph.twodwo`/Main#main().
1.00 semanticdb maven . . com/sourcegraph/graph/twodwo/Main#main(). [1/1 occurrences]
local doc-0-1
@ -116,38 +121,38 @@ local doc-0-2
local doc-0-3
1.00 local doc-0-2 [2/2 occurrences]
scip-ctags . . . TodoList#
scip-ctags . . . `com.sourcegraph.graph.twodwo`/TodoList#
1.00 semanticdb maven . . com/sourcegraph/graph/twodwo/TodoList# [1/4 occurrences]
scip-ctags . . . TodoList#summarise().
scip-ctags . . . `com.sourcegraph.graph.twodwo`/TodoList#summarise().
1.00 semanticdb maven . . com/sourcegraph/graph/twodwo/TodoList#summarise(). [1/2 occurrences]
scip-ctags . . . TodoList#getTodos().
scip-ctags . . . `com.sourcegraph.graph.twodwo`/TodoList#getTodos().
1.00 semanticdb maven . . com/sourcegraph/graph/twodwo/TodoList#getTodos(). [1/1 occurrences]
scip-ctags . . . TodoList#addTodo().
scip-ctags . . . `com.sourcegraph.graph.twodwo`/TodoList#addTodo().
1.00 semanticdb maven . . com/sourcegraph/graph/twodwo/TodoList#addTodo(). [1/4 occurrences]
scip-ctags . . . TodoList#TodoList().
scip-ctags . . . `com.sourcegraph.graph.twodwo`/TodoList#TodoList().
1.00 semanticdb maven . . com/sourcegraph/graph/twodwo/TodoList#`<init>`(). [1/2 occurrences]
scip-ctags . . . TodoList#todos.
scip-ctags . . . `com.sourcegraph.graph.twodwo`/TodoList#todos.
1.00 semanticdb maven . . com/sourcegraph/graph/twodwo/TodoList#todos. [1/5 occurrences]
scip-ctags . . . TodoList#Item#
scip-ctags . . . `com.sourcegraph.graph.twodwo`/TodoList#Item#
1.00 semanticdb maven . . com/sourcegraph/graph/twodwo/TodoList#Item# [1/5 occurrences]
scip-ctags . . . TodoList#Item#getTitle().
scip-ctags . . . `com.sourcegraph.graph.twodwo`/TodoList#Item#getTitle().
1.00 semanticdb maven . . com/sourcegraph/graph/twodwo/TodoList#Item#getTitle(). [1/3 occurrences]
scip-ctags . . . TodoList#Item#Item().
scip-ctags . . . `com.sourcegraph.graph.twodwo`/TodoList#Item#Item().
0.40 semanticdb maven . . com/sourcegraph/graph/twodwo/TodoList#Item#`<init>`(). [1/3 occurrences]
0.60 semanticdb maven . . com/sourcegraph/graph/twodwo/TodoList#Item#`<init>`(+1). [1/2 occurrences]
scip-ctags . . . TodoList#Item#done.
scip-ctags . . . `com.sourcegraph.graph.twodwo`/TodoList#Item#done.
1.00 semanticdb maven . . com/sourcegraph/graph/twodwo/TodoList#Item#done. [1/4 occurrences]
scip-ctags . . . TodoList#Item#title.
scip-ctags . . . `com.sourcegraph.graph.twodwo`/TodoList#Item#title.
1.00 semanticdb maven . . com/sourcegraph/graph/twodwo/TodoList#Item#title. [1/4 occurrences]
local doc-1-1

View File

@ -1,9 +1,11 @@
(program
(package_declaration
(_)
@descriptor.namespace @scope
(scoped_identifier)
@descriptor.namespace @scope))
[
(scoped_identifier)
(identifier)
] @descriptor.namespace @kind.package
)
) @scope
(class_declaration name: (_) @descriptor.type) @scope
(interface_declaration name: (_) @descriptor.type) @scope

View File

@ -93,6 +93,7 @@ mod test {
generate_tags_and_snapshot!(Scip, test_scip_python_comp, "python-repo-comp.py");
generate_tags_and_snapshot!(All, test_tags_ruby, test_scip_ruby, "ruby-globals.rb");
generate_tags_and_snapshot!(Scip, test_scip_java, "globals.java");
generate_tags_and_snapshot!(Scip, test_scip_java_package_info, "package-info.java");
generate_tags_and_snapshot!(
All,
test_tags_typescript,

View File

@ -3,72 +3,73 @@ source: crates/syntax-analysis/src/lib.rs
expression: dumped
---
package MyPackage;
// ^^^^^^^^^ definition(Package) scip-ctags MyPackage/
public class globals {
// ^^^^^^^ definition scip-ctags globals#
// ^^^^^^^ definition scip-ctags MyPackage/globals#
private static int field1;
// ^^^^^^ definition scip-ctags globals#field1.
// ^^^^^^ definition scip-ctags MyPackage/globals#field1.
protected static int field2;
// ^^^^^^ definition scip-ctags globals#field2.
// ^^^^^^ definition scip-ctags MyPackage/globals#field2.
public static int field3;
// ^^^^^^ definition scip-ctags globals#field3.
// ^^^^^^ definition scip-ctags MyPackage/globals#field3.
private int field4;
// ^^^^^^ definition scip-ctags globals#field4.
// ^^^^^^ definition scip-ctags MyPackage/globals#field4.
protected int field5;
// ^^^^^^ definition scip-ctags globals#field5.
// ^^^^^^ definition scip-ctags MyPackage/globals#field5.
public int field6;
// ^^^^^^ definition scip-ctags globals#field6.
// ^^^^^^ definition scip-ctags MyPackage/globals#field6.
private static void method1() {}
// ^^^^^^^ definition scip-ctags globals#method1().
// ^^^^^^^ definition scip-ctags MyPackage/globals#method1().
protected static void method2() {}
// ^^^^^^^ definition scip-ctags globals#method2().
// ^^^^^^^ definition scip-ctags MyPackage/globals#method2().
public static void method3() {}
// ^^^^^^^ definition scip-ctags globals#method3().
// ^^^^^^^ definition scip-ctags MyPackage/globals#method3().
private void method4() {}
// ^^^^^^^ definition scip-ctags globals#method4().
// ^^^^^^^ definition scip-ctags MyPackage/globals#method4().
protected void method5() {}
// ^^^^^^^ definition scip-ctags globals#method5().
// ^^^^^^^ definition scip-ctags MyPackage/globals#method5().
public void method6() {}
// ^^^^^^^ definition scip-ctags globals#method6().
// ^^^^^^^ definition scip-ctags MyPackage/globals#method6().
public static final String COOLEST_STRING = "probably this one";
// ^^^^^^^^^^^^^^ definition scip-ctags globals#COOLEST_STRING.
// ^^^^^^^^^^^^^^ definition scip-ctags MyPackage/globals#COOLEST_STRING.
public record Person (String name, String address) {}
// ^^^^^^ definition scip-ctags globals#Person#
// ^^^^ definition scip-ctags globals#Person#name.
// ^^^^^^^ definition scip-ctags globals#Person#address.
// ^^^^^^ definition scip-ctags MyPackage/globals#Person#
// ^^^^ definition scip-ctags MyPackage/globals#Person#name.
// ^^^^^^^ definition scip-ctags MyPackage/globals#Person#address.
public class ClassInAClass {
// ^^^^^^^^^^^^^ definition scip-ctags globals#ClassInAClass#
// ^^^^^^^^^^^^^ definition scip-ctags MyPackage/globals#ClassInAClass#
boolean classy = true;
// ^^^^^^ definition scip-ctags globals#ClassInAClass#classy.
// ^^^^^^ definition scip-ctags MyPackage/globals#ClassInAClass#classy.
public static enum Enum {
// ^^^^ definition scip-ctags globals#ClassInAClass#Enum#
// ^^^^ definition scip-ctags MyPackage/globals#ClassInAClass#Enum#
these,
// ^^^^^ definition scip-ctags globals#ClassInAClass#Enum#these.
// ^^^^^ definition scip-ctags MyPackage/globals#ClassInAClass#Enum#these.
should,
// ^^^^^^ definition scip-ctags globals#ClassInAClass#Enum#should.
// ^^^^^^ definition scip-ctags MyPackage/globals#ClassInAClass#Enum#should.
be,
// ^^ definition scip-ctags globals#ClassInAClass#Enum#be.
// ^^ definition scip-ctags MyPackage/globals#ClassInAClass#Enum#be.
recognized,
// ^^^^^^^^^^ definition scip-ctags globals#ClassInAClass#Enum#recognized.
// ^^^^^^^^^^ definition scip-ctags MyPackage/globals#ClassInAClass#Enum#recognized.
as,
// ^^ definition scip-ctags globals#ClassInAClass#Enum#as.
// ^^ definition scip-ctags MyPackage/globals#ClassInAClass#Enum#as.
terms
// ^^^^^ definition scip-ctags globals#ClassInAClass#Enum#terms.
// ^^^^^ definition scip-ctags MyPackage/globals#ClassInAClass#Enum#terms.
}
public interface Goated {
// ^^^^^^ definition scip-ctags globals#ClassInAClass#Goated#
// ^^^^^^ definition scip-ctags MyPackage/globals#ClassInAClass#Goated#
boolean withTheSauce();
// ^^^^^^^^^^^^ definition scip-ctags globals#ClassInAClass#Goated#withTheSauce().
// ^^^^^^^^^^^^ definition scip-ctags MyPackage/globals#ClassInAClass#Goated#withTheSauce().
}
public void myCoolMethod() {
// ^^^^^^^^^^^^ definition scip-ctags globals#ClassInAClass#myCoolMethod().
// ^^^^^^^^^^^^ definition scip-ctags MyPackage/globals#ClassInAClass#myCoolMethod().
class WhatIsGoingOn {}
boolean iThinkThisIsAllowedButWeDontReallyCare = true;
}

View File

@ -0,0 +1,11 @@
---
source: crates/syntax-analysis/src/lib.rs
expression: dumped
---
@Deprecated
package foo.bar;
// ^^^^^^^ definition(Package) scip-ctags `foo.bar`/
class Baz {}
// ^^^ definition scip-ctags `foo.bar`/Baz#

View File

@ -0,0 +1,4 @@
@Deprecated
package foo.bar;
class Baz {}