Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merge 4-0-154 to backup_sync #148

Open
wants to merge 268 commits into
base: backup_sync
Choose a base branch
from
Open

Merge 4-0-154 to backup_sync #148

wants to merge 268 commits into from

Conversation

github-actions[bot]
Copy link

Created by Github action

mpollmeier and others added 30 commits July 3, 2024 20:27
…joernio#4729)

```
[warn] -- [E092] Pattern Match Unchecked Warning:
/home/mp/Projects/shiftleft/joern.1/joern-cli/frontends/pysrc2cpg/src/test/scala/io/joern/pysrc2cpg/PySrc2CpgFixture.scala:74:61
[warn] 74 |    path.resultPairs().collect { case (firstElement: String,
secondElement: Option[Integer]) =>
[warn]
|                                                             ^
[warn]    |the type test for Option[Integer] cannot be checked at
runtime because its type arguments can't be determined from Option[Int]
[warn]    |
[warn]    | longer explanation available when compiling with `-explain`
}
```
Earlier, if we pass the directory path which contains multiple go
modules. Processing was done with all the `.go` files mapped to single
`go.mod` file.

With this change, we have segregated the processing by first isolating
all the files mapped to respective `go.mod`. This will also make sure to
cleanup the memory footprint after every module is being processed.
However, this will increase the processing when used with download
dependency as it will process all the `go.mod` files for identifying and
processing used dependencies.
This PR changes the modelling of Singleton methods on objects. Ex:
```ruby
class Animal; end
animal = Animal.new

class << animal
  def bark
    "woof"
  end
end
```
Creates a lambda method for `animal.bark`, and assigns `animal.bark = methodRef(bark)`

Resolves joernio#4721
- we had one stackoverflow in fullname
- evaluation.getOverload may return null
…oernio#4733)

* Fix always-crashing array initializer type resolution

* Fix exception when trying to cast ArrayType to ClassOrInterfaceType

* Fix formatting
…g merge (joernio#4737)

* minify the flatgraph diff by bringing various things in before the big merge

* fmt

* revert accidental change
For new frontends with potentially malformed ASTs, type recovery must safely handle instances where members don't have AST parents.
The parser emits calls to `super` as different from simple calls, this PR handles them.
Also: no more empty method fullnames
* Safely handles the case when `super` call has a `null` argument from the parser
* Shadows keywords when they are used as keys in association keys for named arguments in calls
* Handles singleton methods in implicit returns
This PR fixes a bug where method members were not correctly linked to surrounding methods' bound type decls. Additionally, this handles `return` statements without any proceeding expression.

Resolves joernio#4732
The initial implementation of the edge creation and captured local node was wrongly added to the `Ast` object instead of the diff graph. This PR rectifies this.
Due to Ruby method references being called via a `.call()` method, the type ref that should be emitted, is one that contains the `.call` method, but is not necessarily the same type as the one bound to the actual lambda. This makes that change, however, data-flow no longer works in the open-source data-flow tracker as this is not supported.
* [ruby] Remodelled methods defined on singleton objects to no longer be lambdas

* [ruby] Review comments
* Renamed `:program` to `<main>`
* Replaced `:` method separator to `.`
* Removed `<global>` from full names of types and methods
In the case of a type or method re-definition, the full name is ensured to be unique by a set that tracks all full-names for that compilation unit, and a counter.

Resolves joernio#4742
This PR remodels `yield` calls as explicit invocations of the implicit or explicit block parameter of the surrounding method.

Resolves joernio#4760
Getters and setters were modelled as their CPG operations in isolation, and not using the ordinary AST creator hooks. This PR lowers the getters and setters as their `RubyNode` equivalents, and hands off the AST creation to `astForMethodDeclaration`.
* [php2cpg] Support array/list unpacking in assignment

* [php2cpg] Rename method and fix some tests

* [php2cpg] code clean and improved test

* [php2cpg] improved test
)

* IF Cfg creation for if-statements with empty `then` block.

* Update joern-cli/frontends/c2cpg/src/test/scala/io/joern/c2cpg/passes/cfg/CfgCreationPassTests.scala

Co-authored-by: maltek <[email protected]>

---------

Co-authored-by: maltek <[email protected]>
xavierpinho and others added 30 commits November 7, 2024 16:29
…ode (joernio#5076)

* [javasrc2cpg] support flows for field accesses with a TYPE_REF base node

* scalafmt

* simplify `.where(_.or...)` with `.or(...)` cf. review suggestion

Co-authored-by: maltek <[email protected]>

---------

Co-authored-by: maltek <[email protected]>
* Convert `FieldIdentifier` nodes to `MemberAccess` if they reach AstCreator for call targets
* Handle forwarded args which were a cause for some null pointer exceptions
* Fixed `kwrestarg` null value issue, which turned out to be a `**` parameter

Resolves joernio#5063
Resolves joernio#5064
Resolves joernio#5065
* [ruby] Bitwise Assignment Operators
Added handling for `|=`, `&=`, `<<=`, and `>>=`

* Added tests
* Added handling for yield in Constructor

* Added common fields to traits
* Fixed lifting of fieldStmts causing type recovery to fall over. Changed typerecovery to use lastOption

* Revert iterations to 4
* kotlin2cpg: run cleanupDelombokOutput and clearJavaParserCaches after using the AstCreationPass from javasrc2cpg (somehow it was forgotten there)
* some minor cleanup/refactoring
It's mostly upper-casing constants.
* upgrade ghidra

* new try

* latest
Desugars aliased methods to the form
```ruby
def new_name(*args, &block)
  old_name(*args, &block)
end
```
Resolves joernio#5110
usage example for extension mechanism:
```
echo 'Help.additionalHelpEntries += (("aa", "bb", "cc"))' > test-help.sc
./joern --import test-help.sc

joern> help
...
┌────────────────┬────────────────┬─────────────────────────┐
│command         │description     │example                  │
├────────────────┼────────────────┼─────────────────────────┤
│aa              │bb              │cc                       │
...
```
…5122)

* Fixed warning on calling function that shadows a reserved keyword

* Moved lowering to AstCreator
joernio#5097)" (joernio#5124)

This reverts commit 16f9541.

See source code comment for further details.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.