Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
428 commits
Select commit Hold shift + click to select a range
3d38fec
[dataflowengineoss] SemanticTestCpg doesn't rebuild semantics (#4955)
xavierpinho Sep 26, 2024
87b4b63
[dataflowengineoss] replace `extraFlows` with `semantics` (#4957)
xavierpinho Sep 26, 2024
da64780
[ruby] Fixed Argument Order on `ArgumentListContextHelper` (#4972)
Sep 27, 2024
8b6992d
[python] fix methodFullName for methods named ^(import).* (#4973)
xavierpinho Sep 27, 2024
5e38766
[c2cpg] Fixed fileName helper (#4940)
max-leuthaeuser Sep 27, 2024
f141437
[ruby] ANTLR Profiler Summary (#4950)
Sep 27, 2024
f5dda21
[dataflowengineoss] composable semantics (#4974)
xavierpinho Sep 29, 2024
7c417d2
Set php static init offsets to whole file (#4975)
johannescoetzee Sep 30, 2024
fa22d81
[ruby] Added handling for .[]() indexAccess (#4978)
andreimid Sep 30, 2024
f1e3270
include node id in json (for StoredNode) (#4979)
mpollmeier Sep 30, 2024
a4de357
[ruby] Ignore `vendor` Directory by Default (#4981)
Oct 1, 2024
3c27bf6
[ruby] Ignore "Throwaway" AST Structures (#4982)
Oct 1, 2024
464480d
Revert "[ruby] Ignore "Throwaway" AST Structures (#4982)" (#4983)
Oct 1, 2024
0d75bd1
[x2cpg] Choose port for FrontendHTTPServer randomly until success (#4…
max-leuthaeuser Oct 2, 2024
bc002cf
[ruby] Fix structure for `ForEach` loops in Ruby (#4984)
andreimid Oct 2, 2024
115e65c
[ruby] Re-implemented "Ignore "Throwaway" AST Structures (#4982)" (#4…
Oct 2, 2024
3aab593
[ruby] Implement `hashCode` for `RubyExpression` (#4986)
Oct 2, 2024
2935a1f
[go] Updated build for gosrc2cpg to download internal joernio fork of…
andreimid Oct 3, 2024
488fd7b
external commands (astgen, php-parser etc.): fix and consolidate base…
mpollmeier Oct 7, 2024
8dbccfb
[frontends] Added server mode to more frontends (#4993)
max-leuthaeuser Oct 9, 2024
c69ecf5
[x2cpg|jimple2cpg] Added server mode to jimple2cpg after fixing respo…
max-leuthaeuser Oct 9, 2024
cf3834d
[c2cpg|jimple2cpg] Fixed name for nested declarators (#4996)
max-leuthaeuser Oct 10, 2024
e0e493d
[c2cpg] Implemented cached header file loading (#4997)
max-leuthaeuser Oct 11, 2024
9e1a466
[dataflowengineoss] take into account frontends that use the `-1` ind…
xavierpinho Oct 14, 2024
2cce15d
[test] remove leftover `println` (#5004)
xavierpinho Oct 17, 2024
452b1e3
upgrade deps (#5007)
mpollmeier Oct 17, 2024
d879a89
[dataflowengineoss] Fix PassThroughMapping criteria for same-call nam…
xavierpinho Oct 18, 2024
11f92c0
[kotlin2cpg] Fix assertion error by locking descriptorRenderer option…
tajobe Oct 18, 2024
eeadcb6
[c2cpg] Implemented support for JSON Compilation Database Files (#5005)
max-leuthaeuser Oct 21, 2024
2cc61c8
ExternalCommand: more information in error conditions (#5016)
mpollmeier Oct 21, 2024
398af04
[x2cpg] Refactor ExternalCommand (#5017)
max-leuthaeuser Oct 22, 2024
76c64df
fix maven dependency fetching (#5021)
maltek Oct 22, 2024
9e630a4
[console] fix kotlin's extension (#5026)
xavierpinho Oct 23, 2024
23c0d1e
[kotlin2cpg] Improve fullnames. (#4988)
ml86 Oct 24, 2024
3bda95e
[x2cpg] Redirect stdout/stderr to tmp files (#5027)
max-leuthaeuser Oct 24, 2024
54d03ef
[kotlin2cpg] Delete unused file. (#5028)
ml86 Oct 25, 2024
f2a590c
[dataflowengineoss] add Operators.modulo semantics (#5030)
xavierpinho Oct 26, 2024
9f6cc6a
[dataflowengineoss] add Operators.arrayInitializer semantics (#5031)
xavierpinho Oct 26, 2024
7d82f3f
[pysrc2cpg] refactor <module>, ANY and __init__ constants (#4610)
xavierpinho Oct 26, 2024
b200a36
Copy with executable flag (#5033)
max-leuthaeuser Oct 28, 2024
9ee0a39
add "isInline" method for "CallMethods" (#5032)
canliture Oct 28, 2024
784b2fd
[c2cpg] Allow .cxx extension (#5035)
max-leuthaeuser Oct 30, 2024
a792e0b
[javasrc2cpg] Generate TYPE_REF for implicit base of static field acc…
ml86 Oct 31, 2024
023fcdb
Log maven output on failure (#5041)
johannescoetzee Oct 31, 2024
6c169a1
[kotlin2cpg] Add currently failing test case for named arguments. (#5…
ml86 Oct 31, 2024
3e05969
Add --fetch-dependencies override envvar value (#5047)
johannescoetzee Oct 31, 2024
a4f0f5f
[ruby] New `parser` Gem Parser Implementation (#5040)
Nov 1, 2024
b00c030
[kotlin2cpg] Named arguments for KtQualifiedExpression and implicit t…
max-leuthaeuser Nov 2, 2024
eed2101
[gosrc2cpg] Fixed an issue with skipping the statement before the if …
ch0a3 Nov 4, 2024
887e050
[kotlin2cpg] Some cleanup and refactoring (#5052)
max-leuthaeuser Nov 4, 2024
880564c
[c2cpg] Added test for compile commands json with broken file path (#…
max-leuthaeuser Nov 5, 2024
93876e5
sonatype central (#5056)
mpollmeier Nov 5, 2024
80145a8
[ruby] Move lowering of `||=` and `&&=` to `AstCreator` (#5055)
andreimid Nov 5, 2024
17e1425
upgrade deps (#5060)
mpollmeier Nov 6, 2024
99f5c25
Upgrade to Multi-Threaded `ruby_ast_gen` (#5070)
Nov 6, 2024
1bda021
Update jruby-complete to 9.4.9.0 (#5058)
scala-steward Nov 6, 2024
793a509
[kotlin2cpg] Dispose the environment as soon as it's not needed (#5071)
xavierpinho Nov 6, 2024
dd899d0
upgrade deps (#5073)
mpollmeier Nov 7, 2024
7f0140c
Added access modifiers to functions with private/public_class_method …
andreimid Nov 7, 2024
6470dd7
[javasrc2cpg] add basic static field test (#5075)
xavierpinho Nov 7, 2024
6465bfe
[javasrc2cpg] support flows for field accesses with a TYPE_REF base n…
xavierpinho Nov 7, 2024
7ae4998
[ruby] Field Call Target, Fixed Some NPE Exceptions (#5079)
Nov 8, 2024
1b8569c
Fixed regex passing to ruby_ast_gen to ignore db directory (#5080)
andreimid Nov 8, 2024
b5a4ccc
[csharpsrc2cpg] Update dotnetastgen version (#5082)
ricekot Nov 10, 2024
d6c2263
Fixed invalid parameter type in grouped params (#5086)
andreimid Nov 11, 2024
50572b0
[ruby] Bitwise Assignment Operators (#5087)
Nov 11, 2024
0af667a
Fixed call with block using protected keyword (#5094)
andreimid Nov 11, 2024
0b459f2
Implicit return for range expression (#5096)
andreimid Nov 11, 2024
b75354e
[kotlin2cpg] Implemented Lambda Parameter Destruction (#5095)
max-leuthaeuser Nov 12, 2024
df29596
Accept default handling for MemberAccess and IndexAccess on assoc key…
andreimid Nov 12, 2024
16f9541
[kotlin2cpg] JvmClasspathRoot without an actual temporary file (#5097)
xavierpinho Nov 12, 2024
96ad2f2
[ruby] Handle `yield` in Constructor (#5099)
andreimid Nov 12, 2024
3bc433f
Get rid of some compiler warnings (#5101)
max-leuthaeuser Nov 12, 2024
3944cbc
[ruby] Fix lifting of Field Statements (#5102)
andreimid Nov 13, 2024
a564152
[kotlin2cpg][javasrc2cpg] More cleanups (#5103)
max-leuthaeuser Nov 13, 2024
496a2e1
[kotlin2cpg] Refactoring round 2 (#5104)
max-leuthaeuser Nov 13, 2024
2505dcf
[jssrc2cpg] Update astgen (#5105)
max-leuthaeuser Nov 13, 2024
14ff8ac
Added handling on GlobalAssign (#5107)
andreimid Nov 14, 2024
ee95c9a
Added handling for splat field declarations (#5106)
andreimid Nov 14, 2024
958fdd3
upgrade ghidra (#5085)
mpollmeier Nov 14, 2024
0fe79d1
[ruby] Alias Methods via Forwarding (#5111)
Nov 18, 2024
a322bf4
[jssrc2cpg] astgen update (#5112)
max-leuthaeuser Nov 19, 2024
b1fb89d
correct comment in querydb (UseAfterFree query) (#5113)
HamzaMouhcine Nov 19, 2024
14adabf
[jssrc2cpg] Fixed lowering of tagged template expressions (#5119)
max-leuthaeuser Nov 19, 2024
c115e87
help: simplify generated code and make extensible (#5120)
mpollmeier Nov 19, 2024
2df0318
[jssrc2cpg] Refactor call expression info calculation (#5121)
max-leuthaeuser Nov 20, 2024
62b3767
[ruby] `public` in a Method body is lowered to `SimpleCall` (#5122)
andreimid Nov 20, 2024
da447f2
Revert "[kotlin2cpg] JvmClasspathRoot without an actual temporary fil…
ml86 Nov 21, 2024
0b9c068
[kotlin2cpg] Removed duplicated code for destructed params (#5123)
max-leuthaeuser Nov 21, 2024
d65ef4e
[ruby] `FieldsDeclaration` in `included do` block (#5126)
andreimid Nov 22, 2024
225af8c
[jssrc2cpg] Fixes for json exceptions and missing identifier/local li…
max-leuthaeuser Nov 25, 2024
466e763
[pysrc2cpg] Fix captured variable linking into class scopes. (#5129)
ml86 Nov 25, 2024
c73ff51
[ruby] Alias and Method Lowering (#5128)
andreimid Nov 25, 2024
141d8f0
[jssrc2cpg] Improve error handling even further (#5130)
max-leuthaeuser Nov 25, 2024
7bdc62e
upgrade scala-repl-pp (#5131)
mpollmeier Nov 26, 2024
099f4cb
frontends: allow multiple `--exclude` parameters (additionally) (#5133)
mpollmeier Nov 26, 2024
292a25f
fix order of code in `runBefore` (#5132)
mpollmeier Nov 26, 2024
3d4d22c
[jssrc2cpg] Pass excludes to astgen (#5135)
max-leuthaeuser Nov 26, 2024
f48ac0f
fixup initialisation order of cpg generators (#5137)
mpollmeier Nov 27, 2024
c52986f
Add support for java type pattern matching (#5140)
johannescoetzee Nov 27, 2024
07b9785
scripting fix `--import` refers to files, not code (#5141)
mpollmeier Nov 28, 2024
136fc43
[ruby] Array Pattern Matching (#5139)
andreimid Nov 28, 2024
c65e85d
[querydb] Add scan rule for SpEL injection detection (#5108)
piggyctf Nov 28, 2024
a6ce083
[ruby] `MatchVariable` handling (#5143)
andreimid Nov 29, 2024
9605b7e
[pysrc2cpg] add dataflow test (#5147)
xavierpinho Nov 30, 2024
6405512
Add option to disable type fallbacks for javasrc2cpg (#5146)
johannescoetzee Dec 2, 2024
3200b19
Added implicit return handling for MethodAccessModifiers (#5150)
andreimid Dec 3, 2024
c9dd40a
[pysrc2cpg] Create member writes for variables writes in class bodies…
ml86 Dec 3, 2024
4898aa7
Added implicit return for SingletonClass (#5151)
andreimid Dec 3, 2024
3672b6d
[c2cpg] Guard instanceOf casts (#5154)
max-leuthaeuser Dec 3, 2024
4d59a01
[c2cpg] Added MSVC support (#5153)
max-leuthaeuser Dec 3, 2024
c7fce4a
Fix JSON parsing issue due to warning in PHP-Parser output (#5152)
johannescoetzee Dec 3, 2024
a281324
[c2cpg] No resolveBinding() on IASTName (#5156)
max-leuthaeuser Dec 3, 2024
eca8117
[ruby] Fix Call as TypeDecl AST Child (#5157)
Dec 4, 2024
e6b37c5
[ruby] Fixed `Paramater without method` issue (#5159)
andreimid Dec 4, 2024
9a16359
Update Dockerfile (#5160)
itsacoderepo Dec 4, 2024
3bb8548
[c2cpg] Reverted changes to header content cache (#5161)
max-leuthaeuser Dec 5, 2024
b239663
[console] remove rubyDeprecated (#5162)
xavierpinho Dec 5, 2024
90c3300
[console] add csharpsrc (#5163)
xavierpinho Dec 5, 2024
8378c2b
fix joern-server (#5164)
mpollmeier Dec 5, 2024
58838a5
repl: add --runBefore config option (#5165)
mpollmeier Dec 6, 2024
07b7462
eclipse cdt: update deployment script for sonatype central (#5166)
mpollmeier Dec 6, 2024
f68412c
Fix javasrc annotation resolution (#5167)
johannescoetzee Dec 6, 2024
982e7ee
[c#] add `disable-builtin-summaries` (#5168)
xavierpinho Dec 6, 2024
582ede4
eclipse cdt re-publishing: remove original signature (#5170)
mpollmeier Dec 9, 2024
5af4cc0
Add proper support for java record classes (#5171)
johannescoetzee Dec 9, 2024
fcf42dd
[ruby] Fixed issue where implicit require generates floating node (#5…
Dec 10, 2024
ae34bdc
[c2cpg] Fixed implicit this access for nested classes (#5174)
max-leuthaeuser Dec 10, 2024
d10303d
[c2cpg] Fixed creation of locals from broken macros (#5177)
max-leuthaeuser Dec 12, 2024
5cef923
[c2cpg] Fixed logging via CCorePlugin (#5178)
mpollmeier Dec 12, 2024
e0a4ad1
[c2cpg] Safer CCorePlugin.log with null (#5179)
max-leuthaeuser Dec 12, 2024
8fa3240
upgrade deps; scala 3.5.2 (#5176)
mpollmeier Dec 12, 2024
498f895
[x2cpg] Completely overhauled SourceFiles (#5180)
max-leuthaeuser Dec 12, 2024
81d1b31
[ruby] BackRef and Multi-Assign Args (#5181)
Dec 13, 2024
97cc385
[c#] add `external-summary-paths` option (#5169)
xavierpinho Dec 14, 2024
70b610d
C# - update usage of SourceFiles.determine (#5183)
xavierpinho Dec 15, 2024
7c3a05e
[x2cpg] Replace better.File.extension (#5184)
max-leuthaeuser Dec 16, 2024
ec04763
upgrade deps (#5186)
mpollmeier Dec 16, 2024
5b77dea
[c2cpg] Recognize more source file extensions (#5173)
max-leuthaeuser Dec 17, 2024
a2eba41
[c#] support for `global using` directives in `CSharpProgramSummary` …
xavierpinho Dec 18, 2024
bb9e9e9
[ruby] Cyclic Singleton Method AST & Bracket Invocation Fix (#5189)
Dec 18, 2024
8a11988
[c#] support for top-level statements (#5190)
xavierpinho Dec 18, 2024
adba591
[c2cpg] Fix aliasing of named anonymous typedefs (#5188)
max-leuthaeuser Dec 18, 2024
c78eb13
fix github actions runner (#5192)
mpollmeier Dec 24, 2024
793dd44
[x2cpg] add fieldAccessAst (#5191)
xavierpinho Dec 24, 2024
73e73f1
[c#] fix member assignment LHS .code property (#5194)
xavierpinho Dec 31, 2024
c879793
[c#] astForSimpleMemberAccess deals exclusively with SimpleMemberAcce…
xavierpinho Dec 31, 2024
717cd8b
Add support for record pattern matching (#5185)
johannescoetzee Jan 2, 2025
901046c
[querydb] Add scan rule for Twig Template Injection detection (#5148)
piggyctf Jan 2, 2025
af3aa7e
Bump php-parser to 4.15.10 (#5196)
johannescoetzee Jan 2, 2025
e0bdfac
write the php parser version to the manifest for downstream usage: ph…
mpollmeier Jan 2, 2025
ca8d980
write the astgen versions to the manifests for downstream usage (#5199)
mpollmeier Jan 3, 2025
cc0785b
Remove forgotten debug print (#5201)
johannescoetzee Jan 3, 2025
56463fd
markus/koltinBugfixes (#5200)
ml86 Jan 3, 2025
ec2b517
[c#] finish refactoring astForSimpleMemberAccess (#5198)
xavierpinho Jan 5, 2025
51615c7
Add tmp locals for pattern initializers to lambda method bodies (#5204)
johannescoetzee Jan 6, 2025
2d0281b
[c#] support namespace reference in nested field accesses (#5205)
xavierpinho Jan 6, 2025
76dd74a
[c#] create implicit ctor for field inits (#5203)
xavierpinho Jan 6, 2025
578b422
Fix names of anonymous classes defined in lambdas (#5207)
johannescoetzee Jan 6, 2025
2842a88
[ruby] Alias Handling for `alias_method` (#5206)
Jan 7, 2025
937c2ff
[ruby] In Pattern Variable Scoping Fix (#5208)
Jan 7, 2025
bf1cda8
fix joern server by upgrading to the latest cask and repl (#5211)
mpollmeier Jan 8, 2025
166cfab
[c2cpg] C++17 and C++20 features (#5210)
max-leuthaeuser Jan 9, 2025
97806c7
[c2cpg] Improvements for range-based for-statement and local code fie…
max-leuthaeuser Jan 9, 2025
d657796
[javasrc2cpg] Have enums and records extend java.lang.Enum and java.l…
johannescoetzee Jan 10, 2025
d427219
[c2cpg] Fix missing type register call for implicit this access (#5219)
max-leuthaeuser Jan 10, 2025
b73c108
[c2cpg] Fix StackOverflowError within IncludeAutoDiscovery (#5221)
max-leuthaeuser Jan 13, 2025
0d938b3
upgrade deps (#5223)
mpollmeier Jan 13, 2025
da12e7e
[c#] resolve getters in fieldAccesses (#5213)
xavierpinho Jan 13, 2025
4034bb6
[c#] allow resolving fully-qualified names without importing them fir…
xavierpinho Jan 13, 2025
277fc6c
[c#] create implicit ctor for static field inits (#5209)
xavierpinho Jan 13, 2025
a922084
[php2cpg] Try multiple charsets when reading file content (#5222)
johannescoetzee Jan 14, 2025
457d8d8
[c#] support top-level method declarations (#5224)
xavierpinho Jan 14, 2025
03980ff
[ruby] Rework In Pattern Match Overtainting (#5227)
Jan 14, 2025
ef1f547
[ruby] Rework Conditional Assignments (#5226)
Jan 14, 2025
ee19e27
upgrade deps (#5225)
mpollmeier Jan 14, 2025
48d26b5
Fix pattern cast line numbers (#5228)
johannescoetzee Jan 14, 2025
c5c8ef5
[ruby] Lower Array Creation for In Pattern Match (#5229)
Jan 15, 2025
f83f225
[javasrc2cpg] Fix orphan outerClass locals in constructor bodies (#5220)
johannescoetzee Jan 16, 2025
3ce044f
[ruby] Lower Array Creation for All Arrays (#5231)
Jan 17, 2025
fef49d1
[c2cpg] Fix code string for locals from ICPPASTNamedTypeSpecifier (#5…
max-leuthaeuser Jan 17, 2025
d0925e1
[c2cpg] Refactored code string calculation for locals (#5234)
max-leuthaeuser Jan 17, 2025
f7d270d
[c#] provide a filter operation to CSharpProgramSummary (#5235)
xavierpinho Jan 18, 2025
4b5da19
[c#] refactor local summary creator into its own util (#5236)
xavierpinho Jan 19, 2025
55fce4b
[c#] basic support for ImplicitUsings (#5237)
xavierpinho Jan 20, 2025
a498a15
[c#] support for <Using Remove=XXX> in csproj files (#5239)
xavierpinho Jan 20, 2025
03c8d12
[c#] support for <Using Include=XXX> in csproj files (#5240)
xavierpinho Jan 20, 2025
99cecc8
[c2cpg] More C++20 features (#5238)
max-leuthaeuser Jan 21, 2025
6deaf3f
[c2cpg] Fixed function signatures (#5241)
max-leuthaeuser Jan 21, 2025
4339470
[c2cpg] Remaining C++20 features (#5242)
max-leuthaeuser Jan 21, 2025
4da71f8
some minor performance improvements for LinkingUtil. improve logging …
bbrehm Jan 22, 2025
3d82f38
[c#] fix erroneous not-handled-yet warning for MemberBindingExpressio…
xavierpinho Jan 22, 2025
723a8e7
[c#] methodFullName for extension method calls (#5245)
xavierpinho Jan 23, 2025
ff2b57e
Improved DotSerializer layout (#5246)
max-leuthaeuser Jan 23, 2025
16c8afb
[c#] cleaning up around "this" and composeMethodFullName (#5247)
xavierpinho Jan 23, 2025
00d5d2c
[c#] a few more extension method tests (#5248)
xavierpinho Jan 24, 2025
0d15234
[c#] getter access is get_* call (#5250)
xavierpinho Jan 24, 2025
20636ae
[c#] handle `abstract` modifiers (#5251)
xavierpinho Jan 24, 2025
b2bf9bd
[c#] handle ParenthesizedExpression AST nodes (#5252)
xavierpinho Jan 24, 2025
133df78
[c#] laxer extension method matching (#5253)
xavierpinho Jan 24, 2025
c528e8a
[jimple2cpg]Update soot to 4.6.0 (#5249)
sfncat Jan 26, 2025
4c5dce1
[c#] bump dotnetastgen (#5255)
xavierpinho Jan 27, 2025
1c46b3f
[javasrc2cpg] Fixed logged debug command suggestion. (#5243)
ml86 Jan 27, 2025
bdb65e2
[c#] refactor astForSimpleMemberAccessExpression on getters (#5257)
xavierpinho Jan 27, 2025
658933f
[c#] support `protected` modifier (#5258)
xavierpinho Jan 27, 2025
d41b158
[c#] dotnetastgen for linux on arm is linux-arm64 (#5260)
xavierpinho Jan 27, 2025
9165b0f
[c2cpg] Multiple crash fixes for blender sources (#5259)
max-leuthaeuser Jan 27, 2025
428d667
[c#] refactor astForModifiers (#5261)
xavierpinho Jan 28, 2025
2a590e5
[c#] add AttributeArgument{List} to DotNetJsonAst (#5262)
xavierpinho Jan 28, 2025
5ef163c
[c2cpg] Some performance fixes (#5263)
max-leuthaeuser Jan 28, 2025
e2d410d
[sarif] Sarif Conversion from Finding Node (#5256)
Jan 28, 2025
21f2bc7
[c#] lower get accessor declarations to get_* methods (#5265)
xavierpinho Jan 28, 2025
6b9c87e
[c#] refactor composeMethodFullName-alikes (#5267)
xavierpinho Jan 28, 2025
d12e5d3
[sarif] Make SarifConfig Mutable in REPL (#5268)
Jan 29, 2025
720a470
[c#] lower setter declaration into a METHOD node (#5271)
xavierpinho Jan 29, 2025
c1e0793
[c#] void always mapped to System.Void (#5272)
xavierpinho Jan 29, 2025
095bd4e
[sarif] Add Reporting Descriptors & More "Optionality" (#5269)
Jan 29, 2025
449db5b
[sarif] GH Scanning: Fingerprints & Array/Position Validation (#5273)
Jan 30, 2025
4f59572
update codepropertygraph+flatgraph deps (#5270)
bbrehm Jan 30, 2025
b02caa7
[javasrc2cpg] Populate generic signatures roughly following the class…
johannescoetzee Jan 31, 2025
05370a5
[c#] fix top-level main's signature (#5279)
xavierpinho Feb 3, 2025
50465d2
[c#] identify assignments in JsonAst; add operatorCallNode (#5278)
xavierpinho Feb 3, 2025
014f809
markus/handleFunctionRedefinition (#5276)
ml86 Feb 3, 2025
e26672d
[c#] fix anonymous types' fullname (#5283)
xavierpinho Feb 3, 2025
a141820
[c#] basic support for nested method declarations (#5288)
xavierpinho Feb 3, 2025
320cbda
[c2cpg] Fixed fullNames for function problem bindings (#5280)
max-leuthaeuser Feb 3, 2025
164087d
[c#] fix anonymous functions' fullname (#5289)
xavierpinho Feb 3, 2025
2ba3296
[c#] Handle Dependency Download and DotNetAstGen errors gracefully. (…
khemrajrathore Feb 4, 2025
6d3589b
[c#] initial support for replacing setter assignments with setter cal…
xavierpinho Feb 4, 2025
7417125
[c#] Increase robustness - Block AST (#5284)
khemrajrathore Feb 4, 2025
cd84cd9
[JsSrc2Cpg] : Increase robustness of Js frontend (#5282)
khemrajrathore Feb 5, 2025
94d91b6
[JsSrc2Cpg] - Handle runtime exception gracefully when filtering astG…
khemrajrathore Feb 5, 2025
c888e1a
[sarif] Safe URI Construction (#5293)
Feb 5, 2025
b37578d
[c#] refactor astForInvocationExpression (#5292)
xavierpinho Feb 5, 2025
a58462f
[c#] fix object creation involving qualified names (#5291)
xavierpinho Feb 5, 2025
ec17221
[c#] support setter assignments via += et al assignments (#5295)
xavierpinho Feb 5, 2025
91f08be
[c#] support setter assignments whose lhs is an identifier (#5296)
xavierpinho Feb 6, 2025
ec82925
[ruby] Regex Global Var Lowering (#5298)
Feb 7, 2025
e1e007e
upgrade deps (#5300)
mpollmeier Feb 10, 2025
f84df89
[javasrc2cpg] Fix record accessor call receiver in pattern matches (#…
johannescoetzee Feb 10, 2025
cf8498a
[c2cpg] Fix for unknown C++ typename behind macro (#5302)
max-leuthaeuser Feb 11, 2025
c72d37d
[ruby] Regex Match Defines `$N` Vars (#5303)
Feb 12, 2025
d0d51f9
[ruby] Bundled Type Full Name Consistency (#5304)
Feb 13, 2025
1c98d9e
[c#] fix typeFullName for fieldAccess of same-class members (#5306)
xavierpinho Feb 13, 2025
ccbd2de
[c2cpg] Lambda rework (#5299)
max-leuthaeuser Feb 14, 2025
b5fe810
[c#] support chained `?.` expressions (#5310)
xavierpinho Feb 14, 2025
35dacc9
fix tab-completion in distribution (#5308)
mpollmeier Feb 17, 2025
bee0233
Remove afterEvaluate in gradle dependency fetcher init script (#5312)
johannescoetzee Feb 18, 2025
aaf0bb4
Bump ghidra version (#5315)
itsacoderepo Feb 18, 2025
a0870e4
Merge branch 'master' of https://github.com/joernio/joern into 4-0-258
Feb 19, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
6 changes: 4 additions & 2 deletions .github/workflows/master.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,10 @@ jobs:
- name: Set up JDK
uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: '21'
distribution: temurin
java-version: 21
cache: sbt
- uses: sbt/setup-sbt@v1
- name: Set up Ruby
uses: ruby/setup-ruby@v1
with:
Expand Down
38 changes: 22 additions & 16 deletions .github/workflows/pr.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,18 +13,13 @@ jobs:
- name: Set up JDK
uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: '21'
- name: Install sbt
if: matrix.os == 'macos-latest'
run: brew install sbt
distribution: temurin
java-version: 21
cache: sbt
- uses: sbt/setup-sbt@v1
- name: Install php
if: matrix.os == 'macos-latest'
run: brew install php
- name: Set up Ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: 2.7
- name: Set up Go
uses: actions/setup-go@v5
with:
Expand All @@ -36,8 +31,6 @@ jobs:
with:
development: true
swift-version: "5.10"
- name: Install Bundler
run: gem install bundler -v 2.4.22
- name: Delete `.rustup` directory
run: rm -rf /home/runner/.rustup # to save disk space
if: runner.os == 'Linux'
Expand All @@ -61,8 +54,10 @@ jobs:
- name: Set up JDK
uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: '21'
distribution: temurin
java-version: 21
cache: sbt
- uses: sbt/setup-sbt@v1
- uses: actions/cache@v4
with:
path: |
Expand All @@ -75,6 +70,8 @@ jobs:
if: ${{ failure() }}
- name: Validate CITATION.cff
uses: dieghernan/cff-validator@v3
with:
install-r: true

test-scripts:
runs-on: ubuntu-latest
Expand All @@ -85,8 +82,10 @@ jobs:
- name: Set up JDK
uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: '21'
distribution: temurin
java-version: 21
cache: sbt
- uses: sbt/setup-sbt@v1
- uses: actions/cache@v4
with:
path: |
Expand All @@ -100,7 +99,14 @@ jobs:
./joern --src /tmp/foo --run scan
./joern-scan /tmp/foo
./joern-scan --dump
./joern-slice data-flow -o target/slice
- name: Joern Slice Testing
run: |
mkdir /tmp/slice
./joern-slice data-flow tests/code/javasrc/SliceTest.java -o /tmp/slice/dataflow-slice-javasrc.json
echo "checking that the script output contains the content we expect:"
./joern --script "tests/test-dataflow-slice.sc" --param sliceFile=/tmp/slice/dataflow-slice-javasrc.json | grep 'List(boolean b, b, this, s, "MALICIOUS", s, new Foo("MALICIOUS"), s, s, "SAFE", s, b, this, this, b, s, System.out)'
- name: SARIF Export Testing
run: ./tests/finding-to-sarif-test.sh
- run: |
cd joern-cli/target/universal/stage
./schema-extender/test.sh
6 changes: 4 additions & 2 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,10 @@ jobs:
- name: Set up JDK
uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: '21'
distribution: temurin
java-version: 21
cache: sbt
- uses: sbt/setup-sbt@v1
- run: sudo apt update && sudo apt install -y gnupg
- run: echo $PGP_SECRET | base64 --decode | gpg --batch --import
env:
Expand Down
6 changes: 4 additions & 2 deletions .github/workflows/upgrade-deps.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,10 @@ jobs:
- name: Set up JDK
uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: '21'
distribution: temurin
java-version: 21
cache: sbt
- uses: sbt/setup-sbt@v1
- uses: actions/cache@v4
with:
path: |
Expand Down
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -80,3 +80,5 @@ flake.lock
**/.bsp


/joern-cli/frontends/c2cpg/eclipse-cdt/build/
/joern-cli/frontends/c2cpg/eclipse-cdt/org.eclipse.cdt.core-*.jar
4 changes: 2 additions & 2 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
FROM alpine:3.17.3
FROM alpine:latest

# dependencies
RUN apk update && apk upgrade && apk add --no-cache openjdk17-jdk python3 git curl gnupg bash nss ncurses php
RUN ln -sf python3 /usr/bin/python

# sbt
ENV SBT_VERSION 1.8.0
ENV SBT_VERSION 1.10.3
ENV SBT_HOME /usr/local/sbt
ENV PATH ${PATH}:${SBT_HOME}/bin
RUN curl -sL "https://github.com/sbt/sbt/releases/download/v$SBT_VERSION/sbt-$SBT_VERSION.tgz" | gunzip | tar -x -C /usr/local
Expand Down
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ Specification: https://cpg.joern.io

## News / Changelog

- Joern v4.0.0 [migrates from overflowdb to flatgraph](changelog/4.0.0-flatgraph.md)
- Joern v2.0.0 [upgrades from Scala2 to Scala3](changelog/2.0.0-scala3.md)
- Joern v1.2.0 removes the `overflowdb.traversal.Traversal` class. This change is not completely backwards compatible. See [here](changelog/traversal_removal.md) for a detailed writeup.

Expand Down
10 changes: 6 additions & 4 deletions build.sbt
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
name := "joern"
ThisBuild / organization := "io.joern"
ThisBuild / scalaVersion := "3.4.2"
ThisBuild / scalaVersion := "3.5.2"

val cpgVersion = "1.6.16"
val cpgVersion = "1.7.26"

lazy val joerncli = Projects.joerncli
lazy val querydb = Projects.querydb
Expand Down Expand Up @@ -45,7 +45,8 @@ ThisBuild / compile / javacOptions ++= Seq(
ThisBuild / scalacOptions ++= Seq(
"-deprecation", // Emit warning and location for usages of deprecated APIs.
"--release",
"11"
"11",
"-Wshadow:type-parameter-shadow",
)

lazy val createDistribution = taskKey[File]("Create a complete Joern distribution")
Expand Down Expand Up @@ -73,7 +74,8 @@ Global / onChangedBuildSource := ReloadOnSourceChanges

// publishing info for sonatype / maven central
ThisBuild / publishTo := sonatypePublishToBundle.value
sonatypeCredentialHost := "s01.oss.sonatype.org"
ThisBuild / sonatypeCredentialHost := xerial.sbt.Sonatype.sonatypeCentralHost

ThisBuild / scmInfo := Some(ScmInfo(url("https://github.com/joernio/joern"), "scm:git@github.com:joernio/joern.git"))
ThisBuild / homepage := Some(url("https://joern.io/"))
ThisBuild / licenses := List("Apache-2.0" -> url("http://www.apache.org/licenses/LICENSE-2.0"))
Expand Down
43 changes: 43 additions & 0 deletions changelog/4.0.0-flatgraph.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
# 4.0.x: Migration to flatgraph

Joern uses the domain-specific classes from codepropertygraph, which (up to joern 2.x) were generated by overflowdb (specifically https://github.com/ShiftLeftSecurity/overflowdb and https://github.com/ShiftLeftSecurity/overflowdb-codegen).
As of joern 4.0.x we replaced overflowdb with it's successor, [flatgraph](https://github.com/joernio/flatgraph). The most important PRs paving the way for flatgraph are https://github.com/ShiftLeftSecurity/codepropertygraph/pull/1769 and https://github.com/joernio/joern/pull/4630.

### Why the change?
Most importantly, flatgraph brings us about 40% less memory usage as well as faster traversals. The reduced memory footprint is achieved by flatgraph's efficient columnar layout, essentially we hold everything in few (albeit very large) arrays.
The faster traversals account for about 40% performance improvement for many joern use-cases, e.g. running the default passes while importing a large cpg into joern. Some numbers for Linux 4, as an example for a very large codebase. Numbers are based on my workstation and just rough measurements.

Linux 4.1.16, cpg created with c2cpg after `importCpg` into joern:
* 48M nodes with 630M properties (mostly `String` and `Integer`)
* 431M edges with 115M properties (all `String`)

| | joern 2 (overflowdb) | joern 4 (flatgraph) |
| --------------------------------------------|----------------------|-------------------- |
| heap after import (after garbage collection)| 33g | 20g |
| minimum required heap (Xmx) for import | 80g | 30g |
| time for importCpg | 18 minutes | 11 minutes |
| file size on disk | 2600M | 400m |

Linux 5 and 6 are considerably larger, so I wasn't able to import them into joern 2 on my workstation (which has 128G physical memory). With joern 4 it works just fine with `./joern -J-Xmx90g` for linux6 😀

Also worth noting: one of overflowdb's features was the overflowing-to-disk mechanism. While it sounds nice to be able to handle graphs larger than the available memory, in practice it was too slow to be useful, so we didn't reimplement it in flatgraph.

### API changes / upgrade guide
We tried to minimise the joern-user-facing API changes, and depending on your usage you may not notice anything at all. That being said, if your code makes use of the `overflowdb` namespace then you will have to make some changes. In most cases, it's simply a namespace change to `flatgraph`. Since hopefully no joern user used the overflowdb api (with one exception listed below), I won't list the changes here, instead please look at the [joern migration PR](https://github.com/joernio/joern/pull/4630/files) and/or ask us on [discord](https://discord.com/channels/832209896089976854/842699104383533076).

Most relevant changes:
1) `overflowdb.BatchedUpdate.applyDiff` -> `flatgraph.DiffGraphApplier.applyDiff`
1) `io.shiftleft.passes.IntervalKeyPool` -> `io.joern.x2cpg.utils.IntervalKeyPool`

1) `StoredNode.propertyOption` now returns an `Option` rather than a `java.util.Optional` - the API is almost identical, and there's builtin conversions both ways (`.toScala|.toJava` via `import scala.jdk.OptionConverters.*`).

1) the arrow syntax for quickly constructing graphs, e.g. `v0 --- "CFG" --> v1`, quite useful for testing, doesn't exist in flatgraph yet. You'll need to create a diffgraph instead. There's plenty of examples in the [joern migration PR](https://github.com/joernio/joern/pull/4630/files).

1) Edges can only have zero or one properties. Since the codepropertygraph schema never defined more than one property per edge type, this should not affect you as a joern user, unless you've extended the cpg schema...

### Credits and kudos
Flatgraph is based on [@bbrehm](https://github.com/bbrehm)'s great ideas for a memory efficient columnar layout on the jvm. He built a working prototype with very promising benchmarks that convinced us that the effort to migrate is worth-while, and that turned out to be true.

### Why did we leave out version 3?
I'm glad you asked! Version 3 is typically a source for trouble, you know... just look at Gnome 3, Python 3 and many more. The only exception is Scala 3, of course - ymmv :)

71 changes: 33 additions & 38 deletions console/src/main/scala/io/joern/console/BridgeBase.scala
Original file line number Diff line number Diff line change
Expand Up @@ -2,18 +2,21 @@ package io.joern.console

import better.files.*
import io.shiftleft.codepropertygraph.generated.Languages
import io.shiftleft.semanticcpg.sarif.SarifConfig
import org.apache.commons.text.StringEscapeUtils
import replpp.scripting.ScriptRunner

import java.nio.file.{Files, Path}
import scala.collection.mutable
import scala.jdk.CollectionConverters.*
import scala.util.Try

case class Config(
scriptFile: Option[Path] = None,
command: Option[String] = None,
params: Map[String, String] = Map.empty,
additionalImports: Seq[Path] = Nil,
predefFiles: Seq[Path] = Nil,
runBefore: Seq[String] = Nil,
additionalClasspathEntries: Seq[String] = Seq.empty,
addPlugin: Option[String] = None,
rmPlugin: Option[String] = None,
Expand Down Expand Up @@ -70,8 +73,15 @@ trait BridgeBase extends InteractiveShell with ScriptExecution with PluginHandli
.valueName("script1.sc")
.unbounded()
.optional()
.action((x, c) => c.copy(additionalImports = c.additionalImports :+ x))
.text("import (and run) additional script(s) on startup - may be passed multiple times")
.action((x, c) => c.copy(predefFiles = c.predefFiles :+ x))
.text("given source files will be compiled and added to classpath - this may be passed multiple times")

opt[String]("runBefore")
.valueName("'import Int.MaxValue'")
.unbounded()
.optional()
.action((x, c) => c.copy(runBefore = c.runBefore :+ x))
.text("given code will be executed on startup - this may be passed multiple times")

opt[String]("classpathEntry")
.valueName("path/to/classpath")
Expand Down Expand Up @@ -211,14 +221,21 @@ trait BridgeBase extends InteractiveShell with ScriptExecution with PluginHandli
}
}

protected def createPredefFile(additionalLines: Seq[String] = Nil): Path = {
val tmpFile = Files.createTempFile("joern-predef", "sc")
Files.write(tmpFile, (predefLines ++ additionalLines).asJava)
tmpFile.toAbsolutePath
}

/** code that is executed on startup */
protected def predefLines: Seq[String]
protected def runBeforeCode: Seq[String]

protected def buildRunBeforeCode(config: Config): Seq[String] = {
val builder = Seq.newBuilder[String]
builder ++= runBeforeCode
config.cpgToLoad.foreach { cpgFile =>
builder += s"""importCpg("$cpgFile")"""
}
config.forInputPath.foreach { name =>
builder += s"""openForInputPath("$name")""".stripMargin
}
builder ++= config.runBefore
builder.result()
}

protected def greeting: String

Expand All @@ -229,19 +246,10 @@ trait BridgeBase extends InteractiveShell with ScriptExecution with PluginHandli

trait InteractiveShell { this: BridgeBase =>
protected def startInteractiveShell(config: Config) = {
val replConfig = config.cpgToLoad.map { cpgFile =>
"importCpg(\"" + cpgFile + "\")"
} ++ config.forInputPath.map { name =>
s"""
|openForInputPath(\"$name\")
|""".stripMargin
}

val predefFile = createPredefFile(replConfig.toSeq)

replpp.InteractiveShell.run(
replpp.Config(
predefFiles = predefFile +: config.additionalImports,
predefFiles = config.predefFiles,
runBefore = buildRunBeforeCode(config),
nocolors = config.nocolors,
verbose = config.verbose,
classpathConfig = replpp.Config
Expand All @@ -268,10 +276,10 @@ trait ScriptExecution { this: BridgeBase =>
if (!Files.exists(scriptFile)) {
Try(throw new AssertionError(s"given script file `$scriptFile` does not exist"))
} else {
val predefFile = createPredefFile(importCpgCode(config))
val scriptReturn = ScriptRunner.exec(
replpp.Config(
predefFiles = predefFile +: config.additionalImports,
predefFiles = config.predefFiles,
runBefore = buildRunBeforeCode(config),
scriptFile = Option(scriptFile),
command = config.command,
params = config.params,
Expand All @@ -286,18 +294,6 @@ trait ScriptExecution { this: BridgeBase =>
scriptReturn
}
}

/** For the given config, generate a list of commands to import the CPG
*/
private def importCpgCode(config: Config): List[String] = {
config.cpgToLoad.map { cpgFile =>
"importCpg(\"" + cpgFile + "\")"
}.toList ++ config.forInputPath.map { name =>
s"""
|openForInputPath(\"$name\")
|""".stripMargin
}
}
}

trait PluginHandling { this: BridgeBase =>
Expand Down Expand Up @@ -406,10 +402,9 @@ trait PluginHandling { this: BridgeBase =>
trait ServerHandling { this: BridgeBase =>

protected def startHttpServer(config: Config): Unit = {
val predefFile = createPredefFile(Nil)

val baseConfig = replpp.Config(
predefFiles = predefFile +: config.additionalImports,
predefFiles = config.predefFiles,
runBefore = buildRunBeforeCode(config),
verbose = true, // always print what's happening - helps debugging
classpathConfig = replpp.Config
.ForClasspath(inheritClasspath = true, dependencies = config.dependencies, resolvers = config.resolvers)
Expand Down
4 changes: 2 additions & 2 deletions console/src/main/scala/io/joern/console/Commit.scala
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ package io.joern.console
import io.shiftleft.codepropertygraph.generated.Cpg
import io.shiftleft.passes.CpgPass
import io.shiftleft.semanticcpg.layers.{LayerCreator, LayerCreatorContext, LayerCreatorOptions}
import overflowdb.BatchedUpdate.DiffGraphBuilder
import io.shiftleft.codepropertygraph.generated.DiffGraphBuilder

object Commit {
val overlayName: String = "commit"
Expand All @@ -26,7 +26,7 @@ class Commit(opts: CommitOptions) extends LayerCreator {
builder.absorb(opts.diffGraphBuilder)
}
}
runPass(pass, context)
pass.createAndApply()
opts.diffGraphBuilder = Cpg.newDiffGraphBuilder
}

Expand Down
Loading