Skip to content

Commit dfb2daf

Browse files
authored
Separate API for metadata and content, removed noisy logs (#29)
* Separate API for metadata and content Signed-off-by: Omkar Phansopkar <[email protected]> * Updated packages Signed-off-by: Omkar Phansopkar <[email protected]> --------- Signed-off-by: Omkar Phansopkar <[email protected]>
1 parent 08c026e commit dfb2daf

File tree

5 files changed

+33
-32
lines changed

5 files changed

+33
-32
lines changed

examples/plugin/callgraph/main.go

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -67,11 +67,6 @@ func run() error {
6767

6868
// consume callgraph
6969
var callgraphCallback callgraph.CallgraphCallback = func(_ context.Context, cg *callgraph.CallGraph) error {
70-
treeData, err := cg.Tree.Data()
71-
if err != nil {
72-
return fmt.Errorf("failed to get tree data: %w", err)
73-
}
74-
7570
cg.PrintAssignmentGraph()
7671
cg.PrintCallGraph()
7772

@@ -101,10 +96,10 @@ func run() error {
10196
for _, condition := range match.MatchedConditions {
10297
fmt.Printf("\tCondition: %s - %s\n", condition.Condition.Type, condition.Condition.Value)
10398
for _, evidence := range condition.Evidences {
104-
evidenceContent, exists := evidence.GetContentDetails(treeData)
99+
evidenceMetadata, metadataExists := evidence.Metadata()
105100
evidenceDetailString := ""
106-
if exists {
107-
evidenceDetailString = fmt.Sprintf("@ (L%d #%d to L%d #%d)", evidenceContent.StartLine, evidenceContent.StartColumn, evidenceContent.EndLine, evidenceContent.EndColumn)
101+
if metadataExists {
102+
evidenceDetailString = fmt.Sprintf("@ (L%d #%d to L%d #%d)", evidenceMetadata.StartLine, evidenceMetadata.StartColumn, evidenceMetadata.EndLine, evidenceMetadata.EndColumn)
108103
}
109104
fmt.Printf("\t\tEvidence: %s %s\n", evidence.Namespace, evidenceDetailString)
110105
}

go.mod

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ module github.com/safedep/code
33
go 1.24.1
44

55
require (
6+
buf.build/gen/go/safedep/api/protocolbuffers/go v1.36.6-20250505130535-49e4fdd3000a.1
7+
buf.build/go/protovalidate v0.12.0
68
github.com/safedep/dry v0.0.0-20250503192646-7368bcb4e650
79
github.com/smacker/go-tree-sitter v0.0.0-20240827094217-dd81d9e9be82
810
github.com/stretchr/testify v1.10.0
@@ -11,14 +13,13 @@ require (
1113

1214
require (
1315
buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go v1.36.6-20250425153114-8976f5be98c1.1 // indirect
14-
buf.build/gen/go/safedep/api/protocolbuffers/go v1.36.6-20250505130535-49e4fdd3000a.1 // indirect
15-
buf.build/go/protovalidate v0.12.0 // indirect
1616
cel.dev/expr v0.23.1 // indirect
1717
github.com/antlr4-go/antlr/v4 v4.13.0 // indirect
1818
github.com/davecgh/go-spew v1.1.1 // indirect
1919
github.com/go-viper/mapstructure/v2 v2.2.1 // indirect
2020
github.com/golang/protobuf v1.5.4 // indirect
2121
github.com/google/cel-go v0.25.0 // indirect
22+
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e // indirect
2223
github.com/oklog/ulid/v2 v2.1.0 // indirect
2324
github.com/pmezard/go-difflib v1.0.0 // indirect
2425
github.com/stoewer/go-strcase v1.3.0 // indirect
@@ -29,6 +30,7 @@ require (
2930
google.golang.org/genproto/googleapis/api v0.0.0-20241202173237-19429a94021a // indirect
3031
google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a // indirect
3132
google.golang.org/protobuf v1.36.6 // indirect
33+
gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f // indirect
3234
gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect
3335
sigs.k8s.io/yaml v1.4.0 // indirect
3436
)

go.sum

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,5 @@
1-
buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go v1.36.6-20240508200655-46a4cf4ba109.1 h1:YUpUQuvzAJorNtpdTw/JsBe8WbFGztxajwl4XO5ZOIE=
2-
buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go v1.36.6-20240508200655-46a4cf4ba109.1/go.mod h1:avRlCjnFzl98VPaeCtJ24RrV/wwHFzB8sWXhj26+n/U=
31
buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go v1.36.6-20250425153114-8976f5be98c1.1 h1:YhMSc48s25kr7kv31Z8vf7sPUIq5YJva9z1mn/hAt0M=
42
buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go v1.36.6-20250425153114-8976f5be98c1.1/go.mod h1:avRlCjnFzl98VPaeCtJ24RrV/wwHFzB8sWXhj26+n/U=
5-
buf.build/gen/go/safedep/api/protocolbuffers/go v1.36.6-20250502054400-ca74d87bcddb.1 h1:3gk9MOKYk3B72HTzp29T/7jxwoqL/4iSdC7GhTvslqw=
6-
buf.build/gen/go/safedep/api/protocolbuffers/go v1.36.6-20250502054400-ca74d87bcddb.1/go.mod h1:uR95GqsnNCRn6cTyRBte6uMJMm0rEBRxTGpakKCNL9I=
73
buf.build/gen/go/safedep/api/protocolbuffers/go v1.36.6-20250505130535-49e4fdd3000a.1 h1:4pRfAZjgx1bINjYAvnRBr4kErCaOtyhhabm4P6lNsBo=
84
buf.build/gen/go/safedep/api/protocolbuffers/go v1.36.6-20250505130535-49e4fdd3000a.1/go.mod h1:uR95GqsnNCRn6cTyRBte6uMJMm0rEBRxTGpakKCNL9I=
95
buf.build/go/protovalidate v0.12.0 h1:4GKJotbspQjRCcqZMGVSuC8SjwZ/FmgtSuKDpKUTZew=
@@ -27,17 +23,22 @@ github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek
2723
github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps=
2824
github.com/google/cel-go v0.25.0 h1:jsFw9Fhn+3y2kBbltZR4VEz5xKkcIFRPDnuEzAGv5GY=
2925
github.com/google/cel-go v0.25.0/go.mod h1:hjEb6r5SuOSlhCHmFoLzu8HGCERvIsDAbxDAyNU/MmI=
30-
github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38=
3126
github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
27+
github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
28+
github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
29+
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
30+
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
31+
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
32+
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
33+
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs=
34+
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno=
3235
github.com/oklog/ulid/v2 v2.1.0 h1:+9lhoxAP56we25tyYETBBY1YLA2SaoLvUFgrP2miPJU=
3336
github.com/oklog/ulid/v2 v2.1.0/go.mod h1:rcEKHmBBKfef9DhnvX7y1HZBYxjXb0cP5ExxNsTT1QQ=
3437
github.com/pborman/getopt v0.0.0-20170112200414-7148bc3a4c30/go.mod h1:85jBQOZwpVEaDAr341tbn15RS4fCAsIst0qp7i8ex1o=
3538
github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10 h1:GFCKgmp0tecUJ0sJuv4pzYCqS9+RGSn52M3FUwPs+uo=
3639
github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10/go.mod h1:t/avpk3KcrXxUnYOhZhMXJlSEyie6gQbtLq5NM3loB8=
3740
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
3841
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
39-
github.com/safedep/dry v0.0.0-20250428071408-5bf2ea4d87ee h1:tXiUQLk31tR8We0e9Q5io9/ZbYD9gcni3RgNJNxioWM=
40-
github.com/safedep/dry v0.0.0-20250428071408-5bf2ea4d87ee/go.mod h1:Mdqx/Q2DhAcN38XiUNTGCC5MktofYDQW9Az7YWGEF0s=
4142
github.com/safedep/dry v0.0.0-20250503192646-7368bcb4e650 h1:KOx8HYCorE5ClNjpY6AG/oQB4Roi7PymA02ByikNlnE=
4243
github.com/safedep/dry v0.0.0-20250503192646-7368bcb4e650/go.mod h1:Mdqx/Q2DhAcN38XiUNTGCC5MktofYDQW9Az7YWGEF0s=
4344
github.com/smacker/go-tree-sitter v0.0.0-20240827094217-dd81d9e9be82 h1:6C8qej6f1bStuePVkLSFxoU22XBS165D3klxlzRg8F4=
@@ -62,18 +63,15 @@ golang.org/x/exp v0.0.0-20240325151524-a685a6edb6d8 h1:aAcj0Da7eBAtrTp03QXWvm88p
6263
golang.org/x/exp v0.0.0-20240325151524-a685a6edb6d8/go.mod h1:CQ1k9gNrJ50XIzaKCRR2hssIjF07kZFEiieALBM/ARQ=
6364
golang.org/x/text v0.23.0 h1:D71I7dUrlY+VX0gQShAThNGHFxZ13dGLBHQLVl1mJlY=
6465
golang.org/x/text v0.23.0/go.mod h1:/BLNzu4aZCJ1+kcD0DNRotWKage4q2rGVAg4o22unh4=
65-
google.golang.org/genproto v0.0.0-20241202173237-19429a94021a h1:4voejwOVTsjw6IMfnGt8IzTQBIw45hP8S0e77UMounA=
6666
google.golang.org/genproto/googleapis/api v0.0.0-20241202173237-19429a94021a h1:OAiGFfOiA0v9MRYsSidp3ubZaBnteRUyn3xB2ZQ5G/E=
6767
google.golang.org/genproto/googleapis/api v0.0.0-20241202173237-19429a94021a/go.mod h1:jehYqy3+AhJU9ve55aNOaSml7wUXjF9x6z2LcCfpAhY=
6868
google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a h1:hgh8P4EuoxpsuKMXX/To36nOFD7vixReXgn8lPGnt+o=
6969
google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a/go.mod h1:5uTbfoYQed2U9p3KIj2/Zzm02PYhndfdmML0qC3q3FU=
70-
google.golang.org/protobuf v1.36.5 h1:tPhr+woSbjfYvY6/GPufUoYizxw1cF/yFoxJ2fmpwlM=
71-
google.golang.org/protobuf v1.36.5/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE=
7270
google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY=
7371
google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY=
74-
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=
7572
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
76-
gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo=
73+
gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f h1:BLraFXnmrev5lT+xlilqcH8XK9/i0At2xKjWk4p6zsU=
74+
gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
7775
gopkg.in/natefinch/lumberjack.v2 v2.2.1 h1:bBRl1b0OH9s/DuPhuXpNl+VtCaJXFZ5/uEFST95x9zc=
7876
gopkg.in/natefinch/lumberjack.v2 v2.2.1/go.mod h1:YD8tP3GAjkrDg1eZH7EGmyESg/lsYskCTPBJVb9jqSc=
7977
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=

plugin/callgraph/callgraph.go

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -18,30 +18,36 @@ type CallGraphNode struct {
1818
TreeNode *sitter.Node
1919
}
2020

21-
type ContentDetails struct {
21+
type CallGraphNodeMetadata struct {
2222
StartLine uint32
2323
EndLine uint32
2424
StartColumn uint32
2525
EndColumn uint32
26-
Content string
2726
}
2827

29-
// GetContentDetails returns the content details of the node
3028
// If tree sitter node is nil, it returns false indicating that the content details are not available
3129
// else, it returns the content details and true
32-
func (gn *CallGraphNode) GetContentDetails(treeData *[]byte) (ContentDetails, bool) {
30+
func (gn *CallGraphNode) Metadata() (CallGraphNodeMetadata, bool) {
3331
if gn.TreeNode == nil {
34-
return ContentDetails{}, false
32+
return CallGraphNodeMetadata{}, false
3533
}
36-
return ContentDetails{
34+
return CallGraphNodeMetadata{
3735
StartLine: gn.TreeNode.StartPoint().Row,
3836
EndLine: gn.TreeNode.EndPoint().Row,
3937
StartColumn: gn.TreeNode.StartPoint().Column,
4038
EndColumn: gn.TreeNode.EndPoint().Column,
41-
Content: gn.TreeNode.Content(*treeData),
4239
}, true
4340
}
4441

42+
// If tree sitter node is nil, it returns false indicating that the content details are not available
43+
// else, it returns the content details and true
44+
func (gn *CallGraphNode) Content(treeData *[]byte) (string, bool) {
45+
if gn.TreeNode == nil {
46+
return "", false
47+
}
48+
return gn.TreeNode.Content(*treeData), true
49+
}
50+
4551
func newCallGraphNode(namespace string, treeNode *sitter.Node) *CallGraphNode {
4652
return &CallGraphNode{
4753
Namespace: namespace,

plugin/callgraph/processors.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -272,7 +272,7 @@ func attributeProcessor(attributeNode *sitter.Node, treeData []byte, currentName
272272

273273
objectSymbol, attributeQualifierNamespace, err := attributeResolver(attributeNode, treeData, currentNamespace, callGraph, metadata)
274274
if err != nil {
275-
log.Errorf("Error resolving attribute - %v", err)
275+
// log.Debugf("Error resolving attribute - %v", err)
276276
return newProcessorResult()
277277
}
278278

@@ -403,7 +403,7 @@ func functionCallProcessor(functionCallNode *sitter.Node, argumentsNode *sitter.
403403

404404
objectSymbol, attributeQualifierNamespace, err := attributeResolver(functionObjectNode, treeData, currentNamespace, callGraph, metadata)
405405
if err != nil {
406-
log.Errorf("Error resolving function attribute - %v", err)
406+
// log.Debugf("Error resolving function attribute - %v", err)
407407
return newProcessorResult()
408408
}
409409
finalAttributeNamespace := functionAttributeNode.Content(treeData)
@@ -440,7 +440,7 @@ func functionCallProcessor(functionCallNode *sitter.Node, argumentsNode *sitter.
440440
// Builtin assignment already available
441441
// @TODO - Handle class qualified builtins eg. console.log, console.warn etc
442442

443-
log.Errorf("Couldn't process function call - %s", functionName)
443+
// log.Debug("Couldn't process function call - %s", functionName)
444444
return newProcessorResult()
445445
}
446446

0 commit comments

Comments
 (0)