Skip to content

Commit

Permalink
chore: update tree sitter
Browse files Browse the repository at this point in the history
  • Loading branch information
didroe committed May 20, 2024
1 parent 8977d9c commit 52e77f5
Show file tree
Hide file tree
Showing 27 changed files with 9,798 additions and 11,861 deletions.
2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ require (
github.com/sabhiram/go-gitignore v0.0.0-20210923224102-525f6e181f06
github.com/schollz/progressbar/v3 v3.14.2
github.com/shirou/gopsutil/v3 v3.24.4
github.com/smacker/go-tree-sitter v0.0.0-20230720070738-0d0a9f78d8f8
github.com/smacker/go-tree-sitter v0.0.0-20240514083259-c5d1f3f5f99e
github.com/stretchr/testify v1.9.0
github.com/tangzero/inflector v1.0.0
github.com/weppos/publicsuffix-go v0.30.2
Expand Down
2 changes: 2 additions & 0 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -223,6 +223,8 @@ github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ
github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ=
github.com/smacker/go-tree-sitter v0.0.0-20230720070738-0d0a9f78d8f8 h1:DxgjlvWYsb80WEN2Zv3WqJFAg2DKjUQJO6URGdf1x6Y=
github.com/smacker/go-tree-sitter v0.0.0-20230720070738-0d0a9f78d8f8/go.mod h1:q99oHDsbP0xRwmn7Vmob8gbSMNyvJ83OauXPSuHQuKE=
github.com/smacker/go-tree-sitter v0.0.0-20240514083259-c5d1f3f5f99e h1:nOtrYzQNgRipVsrOkYpVU/ZMDS3/+78It68cPBPKy8A=
github.com/smacker/go-tree-sitter v0.0.0-20240514083259-c5d1f3f5f99e/go.mod h1:q99oHDsbP0xRwmn7Vmob8gbSMNyvJ83OauXPSuHQuKE=
github.com/sourcegraph/conc v0.3.0 h1:OQTbbt6P72L20UqAkXXuLOj79LfEanQ+YQFNpLA9ySo=
github.com/sourcegraph/conc v0.3.0/go.mod h1:Sdozi7LEKbFPqYX2/J+iBAM6HpqSLTASQIKqDmF7Mt0=
github.com/spf13/afero v1.11.0 h1:WJQKhtpdm3v2IzqG8VMqrr6Rf3UYpEF239Jy9wNepM8=
Expand Down
7 changes: 6 additions & 1 deletion internal/detectors/csharp/csharp.go
Original file line number Diff line number Diff line change
Expand Up @@ -83,13 +83,18 @@ func annotate(tree *parser.Tree) error {

return tree.Annotate(func(node *parser.Node, value *values.Value) {
switch node.Type() {
case "interpolated_string_text", "interpolated_verbatim_string_text":
case "interpolated_string_text",
"interpolated_verbatim_string_text",
"string_content",
"string_literal_content":
value.AppendString(node.Content())

return
case "interpolation":
value.Append(node.FirstChild().Value())

return
case "interpolation_start":
return
case "binary_expression":
if node.FirstUnnamedChild().Content() == "+" {
Expand Down
3 changes: 2 additions & 1 deletion internal/detectors/csharp/datatype/datatype.go
Original file line number Diff line number Diff line change
Expand Up @@ -157,7 +157,8 @@ func discoverFunctions(tree *parser.Tree, datatypes map[parser.NodeID]*schemadat

parent := functionNameNode.Parent()

functionTypeNode := parent.ChildByFieldName("type")
functionTypeNode := parent.ChildByFieldName("returns")

functionType := ""
functionTextType := ""
if functionTypeNode != nil {
Expand Down
60 changes: 33 additions & 27 deletions internal/detectors/dependencies/ivy/ivy.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,45 +19,51 @@ var language = xml.GetLanguage()

var query = `
(element
(_
(tag_name) @helper_module
(STag
(Name) @helper_module
(#match? @helper_module "^module$")
(attribute
(attribute_name) @helper_organisation
(Attribute
(Name) @helper_organisation
(#match? @helper_organisation "^organisation$")
(attribute_value) @param_organisation_name
(AttValue) @param_organisation_name
)
(attribute
(attribute_name) @helper_organisation_name
(Attribute
(Name) @helper_organisation_name
(#match? @helper_organisation_name "^name$")
(attribute_value) @param_module_name
(AttValue) @param_module_name
)
)
(element
(_
(tag_name) @helper_revision
(#match? @helper_revision "^revision$")
(attribute
(attribute_name) @helper_revision_name
(#match? @helper_revision_name "^name$")
(attribute_value) @param_version
)
)
)
(content
(element
(STag
(Name) @helper_revision
(#match? @helper_revision "^revision$")
(Attribute
(Name) @helper_revision_name
(#match? @helper_revision_name "^name$")
(AttValue) @param_version
)
)
)
)
)
`

var queryDependencies = parser.QueryMustCompile(language, fmt.Sprintf(`
(document
(element
(element
(start_tag
(tag_name) @helper_dependencies
(#match? @helper_dependencies "^dependencies$")
)
%s
)
(content
(element
(STag
(Name) @helper_dependencies
(#match? @helper_dependencies "^dependencies$")
)
(content
%s
)
)
)
)
)
`, query))
Expand Down
22 changes: 11 additions & 11 deletions internal/detectors/dependencies/package-config/package-config.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,18 +15,18 @@ var language = xml.GetLanguage()
var queryDependencies = parser.QueryMustCompile(language, `
(element
(_
(tag_name) @helper_package
(Name) @helper_package
(#match? @helper_package "^package$")
(attribute
(attribute_name) @helper_id
(#match? @helper_id "^id$")
(attribute_value) @param_dependency
)
(attribute
(attribute_name) @helper_version
(#match? @helper_version "^version$")
(attribute_value) @param_version
)
(Attribute
(Name) @helper_id
(#match? @helper_id "^id$")
(AttValue) @param_dependency
)
(Attribute
(Name) @helper_version
(#match? @helper_version "^version$")
(AttValue) @param_version
)
)
)
`)
Expand Down
45 changes: 25 additions & 20 deletions internal/detectors/dependencies/pom-xml/pom-xml.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,8 @@ var language = xml.GetLanguage()

var queryDependencies = parser.QueryMustCompile(language, `
(element
(start_tag
(tag_name) @helper_dependency
(STag
(Name) @helper_dependency
(#match? @helper_dependency "^dependency$")
)
) @param_dependency
Expand All @@ -41,32 +41,37 @@ func Discover(f *file.FileInfo) (report *depsbase.DiscoveredDependency) {
for i := 0; i < dependencyNode.ChildCount(); i++ {
child := dependencyNode.Child(i)

if child.Type() != "element" {
if child.Type() != "content" {
continue
}

tag := ""
tagContent := ""

for j := 0; j < child.ChildCount(); j++ {
elementChild := child.Child(j)

if elementChild.Type() == "start_tag" {
tag = elementChild.Child(0).Content()
childElement := child.Child(j)
if childElement.Type() != "element" {
continue
}

if elementChild.Type() == "text" {
tagContent = elementChild.Content()
tag := ""
tagContent := ""

for k := 0; k < childElement.ChildCount(); k++ {
subElement := childElement.Child(k)
switch subElement.Type() {
case "STag":
tag = subElement.Child(0).Content()
case "content":
tagContent += subElement.Content()
}
}
}

switch tag {
case "groupId":
groupId = tagContent
case "artifactId":
artifactId = tagContent
case "version":
version = tagContent
switch tag {
case "groupId":
groupId = tagContent
case "artifactId":
artifactId = tagContent
case "version":
version = tagContent
}
}
}

Expand Down
12 changes: 7 additions & 5 deletions internal/detectors/rails/schema_rb/schema_rb.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,11 +24,13 @@ var (
arguments: (argument_list . (string) @table_name)
block: (do_block
parameters: (block_parameters (identifier) @block_param)
(call
receiver: (_) @receiver
method: (_) @type
arguments: (argument_list . (string) @column_name))
(#eq @receiver @block_param))
body: (body_statement
(call
receiver: (_) @receiver
method: (_) @type
arguments: (argument_list . (string) @column_name))
(#eq @receiver @block_param))
)
(#eq @table_method "create_table")) @rule
`)
)
Expand Down
17 changes: 11 additions & 6 deletions internal/detectors/ruby/datatype/class_assignment.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,11 @@ package datatype
import (
"strings"

"github.com/smacker/go-tree-sitter/ruby"

"github.com/bearer/bearer/internal/parser"
"github.com/bearer/bearer/internal/report/schema"
schemadatatype "github.com/bearer/bearer/internal/report/schema/datatype"
"github.com/smacker/go-tree-sitter/ruby"
)

var classAssignmentQuery = parser.QueryMustCompile(ruby.GetLanguage(),
Expand All @@ -22,17 +23,21 @@ var classAssignmentQuery = parser.QueryMustCompile(ruby.GetLanguage(),

var classAssignmentPropertiesQuery = parser.QueryMustCompile(ruby.GetLanguage(),
`(do_block
( call
arguments: (argument_list
(simple_symbol) @param_id
body: (body_statement
(call
arguments: (argument_list
(simple_symbol) @param_id
)
)
)
) @param_class`)

var classAssignmentFunctionsQuery = parser.QueryMustCompile(ruby.GetLanguage(),
`(do_block
( method
name: (identifier) @param_id
body: (body_statement
(method
name: (identifier) @param_id
)
)
) @param_class`)

Expand Down
15 changes: 9 additions & 6 deletions internal/detectors/ruby/datatype/datatype.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,13 @@ package datatype
import (
"strings"

"github.com/smacker/go-tree-sitter/ruby"

"github.com/bearer/bearer/internal/parser"
"github.com/bearer/bearer/internal/parser/datatype"
"github.com/bearer/bearer/internal/parser/nodeid"
"github.com/bearer/bearer/internal/report/schema"
schemadatatype "github.com/bearer/bearer/internal/report/schema/datatype"
"github.com/smacker/go-tree-sitter/ruby"
)

var classesQuery = parser.QueryMustCompile(ruby.GetLanguage(),
Expand All @@ -18,17 +19,19 @@ var classesQuery = parser.QueryMustCompile(ruby.GetLanguage(),

var classPropertiesQuery = parser.QueryMustCompile(ruby.GetLanguage(),
`(class
( call
arguments: (argument_list
(simple_symbol) @param_id
body: (body_statement
(call
arguments: (argument_list
(simple_symbol) @param_id
)
)
)
) @param_class`)

var classFunctionsQuery = parser.QueryMustCompile(ruby.GetLanguage(),
`(class
( method
name: (identifier) @param_id
body: (body_statement
(method name: (identifier) @param_id)
)
) @param_class`)

Expand Down
2 changes: 1 addition & 1 deletion internal/languages/golang/pattern/pattern.go
Original file line number Diff line number Diff line change
Expand Up @@ -163,7 +163,7 @@ func (*Pattern) IsRoot(node *tree.Node) bool {
return !slices.Contains([]string{"source_file"}, node.Type()) && !node.IsMissing()
}

func (patternLanguage *Pattern) NodeTypes(node *tree.Node) []string {
func (patternLanguage *Pattern) NodeTypes(node *tree.Node, parentType string) []string {
if node.Type() == "identifier" && node.Parent().Type() == "source_file" {
return []string{"identifier", "package_identifier"}
}
Expand Down
2 changes: 1 addition & 1 deletion internal/languages/java/pattern/pattern.go
Original file line number Diff line number Diff line change
Expand Up @@ -119,7 +119,7 @@ func (*Pattern) FixupMissing(node *tree.Node) string {
return ";"
}

func (*Pattern) NodeTypes(node *tree.Node) []string {
func (*Pattern) NodeTypes(node *tree.Node, parentType string) []string {
if node.Type() == "statement_block" && node.Parent().Type() == "program" {
if len(node.NamedChildren()) == 0 {
return []string{"object"}
Expand Down
2 changes: 1 addition & 1 deletion internal/languages/javascript/pattern/pattern.go
Original file line number Diff line number Diff line change
Expand Up @@ -123,7 +123,7 @@ func (*Pattern) IsRoot(node *tree.Node) bool {
return !slices.Contains([]string{"expression_statement", "program"}, node.Type())
}

func (*Pattern) NodeTypes(node *tree.Node) []string {
func (*Pattern) NodeTypes(node *tree.Node, parentType string) []string {
if node.Type() == "statement_block" && node.Parent().Type() == "program" {
if len(node.NamedChildren()) == 0 {
return []string{"object"}
Expand Down
2 changes: 1 addition & 1 deletion internal/languages/php/pattern/pattern.go
Original file line number Diff line number Diff line change
Expand Up @@ -221,7 +221,7 @@ func (*Pattern) IsRoot(node *tree.Node) bool {
return !slices.Contains([]string{"expression_statement", "php_tag", "program"}, node.Type()) && !node.IsMissing()
}

func (patternLanguage *Pattern) NodeTypes(node *tree.Node) []string {
func (patternLanguage *Pattern) NodeTypes(node *tree.Node, parentType string) []string {
parent := node.Parent()
if parent == nil {
return []string{node.Type()}
Expand Down
2 changes: 1 addition & 1 deletion internal/languages/python/pattern/pattern.go
Original file line number Diff line number Diff line change
Expand Up @@ -166,7 +166,7 @@ func (*Pattern) IsRoot(node *tree.Node) bool {
return !slices.Contains([]string{"module", "expression_statement"}, node.Type()) && !node.IsMissing()
}

func (patternLanguage *Pattern) NodeTypes(node *tree.Node) []string {
func (patternLanguage *Pattern) NodeTypes(node *tree.Node, parentType string) []string {
if node.Type() == "typed_parameter" {
return []string{"typed_parameter", "typed_default_parameter"}
}
Expand Down
13 changes: 8 additions & 5 deletions internal/languages/ruby/detectors/object/object.go
Original file line number Diff line number Diff line change
Expand Up @@ -41,11 +41,14 @@ func New(querySet *query.Set) types.Detector {
// end
// end
classQuery := querySet.Add(`
(class name: (constant) @class_name
[
(call arguments: (argument_list (simple_symbol) @name))
(method name: (identifier) @name)
]
(class
name: (constant) @class_name
body: (body_statement
[
(call arguments: (argument_list (simple_symbol) @name))
(method name: (identifier) @name)
]
)
) @root`)

// user.name
Expand Down
Loading

0 comments on commit 52e77f5

Please sign in to comment.