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

feat: use break cycles logic of depgraph for snyk-gradle #1775

Merged
merged 1 commit into from
Mar 29, 2021

Conversation

anthogez
Copy link
Member

@anthogez anthogez commented Mar 29, 2021

See snyk/snyk-gradle-plugin#172

  • Deleted findCycles and breakCycles logic from snyk-gradle-plugin

  • Multi-config fixture plugin.test.ts has top level deps amount number
    aligned and with correct count, we were appending transitive deps as
    top to avoid loosing them due of lack of cycle/break support in
    dep-graph lib.

  • Dependency org.jetbrains.kotlin:kotlin-stdlib is no longer available as
    direct dep in kotlin.test.ts (it was wrong) as it's a transitive dependency see screenshot below.
    It was being appended as top due of the lack of cycle/break support in dep-graph lib

dependencies

  • Added @snyk/dep-graph changes

    v1.27.1 remove cache in pathsToRoot

    v1.27 break cyclic graphs when converting into tree

    v1.26 support cycles in pkgPathsToRoot and countPathsToRoot

@anthogez anthogez self-assigned this Mar 29, 2021
@anthogez anthogez requested review from a team as code owners March 29, 2021 09:55
  - Deleted findCycles and breakCycles logic from snyk-gradle-plugin
  - Multi-config fixture plugin.test.ts has top level deps amount number
    aligned and with correct count, we were appending transitive deps as
top to avoid loosing them due of lack of cycle/break support in
dep-graph lib.

  - Dependency **org.jetbrains.kotlin:kotlin-stdlib** is no longer available as
  direct dep in **kotlin.test.ts** (it was wrong) as it's a transitive  dependency see screenshot below.
  It was being `appended` as top due of the lack of cycle/break support in dep-graph lib

<img width="542" alt="dependencies" src="https://user-images.githubusercontent.com/40601533/112800442-52873500-9078-11eb-98f9-3b305211e879.png">

  - Added @snyk/dep-graph changes

    v1.27.1 remove cache in pathsToRoot

    v1.27 break cyclic graphs when converting into tree

    v1.26 support cycles in pkgPathsToRoot and countPathsToRoot
@anthogez anthogez force-pushed the feat/use-break-cycles-logic-of-depgraph branch from 5ee755a to a62594b Compare March 29, 2021 09:57
@github-actions
Copy link
Contributor

github-actions bot commented Mar 29, 2021

Expected release notes (by @anthogez)

features:
use break cycles logic of depgraph (a62594b)

others (will not be included in Semantic-Release notes):
format package json to what npm prefers (c37849f)
remove if guard that checks if dir exists (f74a6b5)

  • I hereby acknowledge these release notes are 🥙 AWESOME 🥙

{"schemaVersion":"1.2.0","pkgManager":{"name":"gradle"},"pkgs":[{"id":"workspaces@unspecified","info":{"name":"workspaces","version":"unspecified"}},{"id":"axis:axis-jaxrpc@1.3","info":{"name":"axis:axis-jaxrpc","version":"1.3"}},{"id":"axis:axis-saaj@1.3","info":{"name":"axis:axis-saaj","version":"1.3"}},{"id":"commons-logging:commons-logging@1.0.4","info":{"name":"commons-logging:commons-logging","version":"1.0.4"}},{"id":"commons-discovery:commons-discovery@0.2","info":{"name":"commons-discovery:commons-discovery","version":"0.2"}},{"id":"wsdl4j:wsdl4j@1.5.1","info":{"name":"wsdl4j:wsdl4j","version":"1.5.1"}},{"id":"axis:axis@1.3","info":{"name":"axis:axis","version":"1.3"}},{"id":"batik:batik-dom@1.6","info":{"name":"batik:batik-dom","version":"1.6"}},{"id":"com.android.tools.analytics-library:protos@25.3.0","info":{"name":"com.android.tools.analytics-library:protos","version":"25.3.0"}},{"id":"com.android.tools.analytics-library:shared@25.3.0","info":{"name":"com.android.tools.analytics-library:shared","version":"25.3.0"}},{"id":"com.google.protobuf:protobuf-java@3.0.0","info":{"name":"com.google.protobuf:protobuf-java","version":"3.0.0"}},{"id":"com.android.tools:annotations@25.2.0","info":{"name":"com.android.tools:annotations","version":"25.2.0"}},{"id":"com.android.tools:common@25.3.0","info":{"name":"com.android.tools:common","version":"25.3.0"}},{"id":"com.google.code.gson:gson@2.2.4","info":{"name":"com.google.code.gson:gson","version":"2.2.4"}},{"id":"com.google.guava:guava@18.0","info":{"name":"com.google.guava:guava","version":"18.0"}},{"id":"com.android.tools.analytics-library:tracker@25.3.0","info":{"name":"com.android.tools.analytics-library:tracker","version":"25.3.0"}},{"id":"com.android.tools.build:builder-model@2.3.0","info":{"name":"com.android.tools.build:builder-model","version":"2.3.0"}},{"id":"com.android.tools.build:builder-test-api@2.3.0","info":{"name":"com.android.tools.build:builder-test-api","version":"2.3.0"}},{"id":"net.sf.kxml:kxml2@2.3.0","info":{"name":"net.sf.kxml:kxml2","version":"2.3.0"}},{"id":"com.android.tools.ddms:ddmlib@25.3.0","info":{"name":"com.android.tools.ddms:ddmlib","version":"25.3.0"}},{"id":"com.intellij:annotations@12.0","info":{"name":"com.intellij:annotations","version":"12.0"}},{"id":"com.android.tools.layoutlib:layoutlib-api@25.3.0","info":{"name":"com.android.tools.layoutlib:layoutlib-api","version":"25.3.0"}},{"id":"com.android.tools:dvlib@25.3.0","info":{"name":"com.android.tools:dvlib","version":"25.3.0"}},{"id":"com.google.jimfs:jimfs@1.1","info":{"name":"com.google.jimfs:jimfs","version":"1.1"}},{"id":"org.apache.commons:commons-compress@1.8.1","info":{"name":"org.apache.commons:commons-compress","version":"1.8.1"}},{"id":"com.android.tools:repository@25.3.0","info":{"name":"com.android.tools:repository","version":"25.3.0"}},{"id":"commons-codec:commons-codec@1.4","info":{"name":"commons-codec:commons-codec","version":"1.4"}},{"id":"commons-logging:commons-logging@1.1.1","info":{"name":"commons-logging:commons-logging","version":"1.1.1"}},{"id":"org.apache.httpcomponents:httpcore@4.1","info":{"name":"org.apache.httpcomponents:httpcore","version":"4.1"}},{"id":"org.apache.httpcomponents:httpclient@4.1.1","info":{"name":"org.apache.httpcomponents:httpclient","version":"4.1.1"}},{"id":"org.apache.httpcomponents:httpmime@4.1","info":{"name":"org.apache.httpcomponents:httpmime","version":"4.1"}},{"id":"com.android.tools:sdklib@25.3.0","info":{"name":"com.android.tools:sdklib","version":"25.3.0"}},{"id":"org.bouncycastle:bcprov-jdk15on@1.48","info":{"name":"org.bouncycastle:bcprov-jdk15on","version":"1.48"}},{"id":"org.bouncycastle:bcpkix-jdk15on@1.48","info":{"name":"org.bouncycastle:bcpkix-jdk15on","version":"1.48"}},{"id":"com.android.tools:sdk-common@25.3.0","info":{"name":"com.android.tools:sdk-common","version":"25.3.0"}},{"id":"com.android.tools.build:manifest-merger@25.3.0","info":{"name":"com.android.tools.build:manifest-merger","version":"25.3.0"}},{"id":"com.android.tools.jack:jack-api@0.13.0","info":{"name":"com.android.tools.jack:jack-api","version":"0.13.0"}},{"id":"com.android.tools.jill:jill-api@0.10.0","info":{"name":"com.android.tools.jill:jill-api","version":"0.10.0"}},{"id":"com.squareup:javawriter@2.5.0","info":{"name":"com.squareup:javawriter","version":"2.5.0"}},{"id":"org.ow2.asm:asm@5.0.4","info":{"name":"org.ow2.asm:asm","version":"5.0.4"}},{"id":"org.ow2.asm:asm-tree@5.0.4","info":{"name":"org.ow2.asm:asm-tree","version":"5.0.4"}},{"id":"com.android.tools.build:builder@2.3.0","info":{"name":"com.android.tools.build:builder","version":"2.3.0"}}],"graph":{"rootNodeId":"root-node","nodes":[{"nodeId":"root-node","pkgId":"workspaces@unspecified","deps":[{"nodeId":"axis:axis@1.3"},{"nodeId":"batik:batik-dom@1.6"},{"nodeId":"com.android.tools.build:builder@2.3.0"},{"nodeId":"com.google.guava:guava@18.0"},{"nodeId":"commons-discovery:commons-discovery@0.2"}]},{"nodeId":"axis:axis-jaxrpc@1.3","pkgId":"axis:axis-jaxrpc@1.3","deps":[]},{"nodeId":"axis:axis-saaj@1.3","pkgId":"axis:axis-saaj@1.3","deps":[]},{"nodeId":"commons-logging:commons-logging@1.0.4","pkgId":"commons-logging:commons-logging@1.0.4","deps":[]},{"nodeId":"commons-discovery:commons-discovery@0.2","pkgId":"commons-discovery:commons-discovery@0.2","deps":[{"nodeId":"commons-logging:commons-logging@1.0.4"}]},{"nodeId":"wsdl4j:wsdl4j@1.5.1","pkgId":"wsdl4j:wsdl4j@1.5.1","deps":[]},{"nodeId":"axis:axis@1.3","pkgId":"axis:axis@1.3","deps":[{"nodeId":"axis:axis-jaxrpc@1.3"},{"nodeId":"axis:axis-saaj@1.3"},{"nodeId":"commons-discovery:commons-discovery@0.2"},{"nodeId":"commons-logging:commons-logging@1.0.4"},{"nodeId":"wsdl4j:wsdl4j@1.5.1"}]},{"nodeId":"batik:batik-dom@1.6","pkgId":"batik:batik-dom@1.6","deps":[]},{"nodeId":"com.android.tools.analytics-library:protos@25.3.0|1","pkgId":"com.android.tools.analytics-library:protos@25.3.0","deps":[],"info":{"labels":{"pruned":"true"}}},{"nodeId":"com.android.tools.analytics-library:protos@25.3.0|2","pkgId":"com.android.tools.analytics-library:protos@25.3.0","deps":[{"nodeId":"com.google.protobuf:protobuf-java@3.0.0"}]},{"nodeId":"com.android.tools.analytics-library:shared@25.3.0|1","pkgId":"com.android.tools.analytics-library:shared@25.3.0","deps":[],"info":{"labels":{"pruned":"true"}}},{"nodeId":"com.android.tools.analytics-library:shared@25.3.0|2","pkgId":"com.android.tools.analytics-library:shared@25.3.0","deps":[{"nodeId":"com.android.tools.analytics-library:protos@25.3.0|2"},{"nodeId":"com.android.tools:annotations@25.2.0"},{"nodeId":"com.android.tools:common@25.3.0|1"},{"nodeId":"com.google.code.gson:gson@2.2.4"},{"nodeId":"com.google.guava:guava@18.0"}]},{"nodeId":"com.google.protobuf:protobuf-java@3.0.0","pkgId":"com.google.protobuf:protobuf-java@3.0.0","deps":[]},{"nodeId":"com.android.tools:annotations@25.2.0","pkgId":"com.android.tools:annotations@25.2.0","deps":[]},{"nodeId":"com.android.tools:common@25.3.0|1","pkgId":"com.android.tools:common@25.3.0","deps":[],"info":{"labels":{"pruned":"true"}}},{"nodeId":"com.android.tools:common@25.3.0|2","pkgId":"com.android.tools:common@25.3.0","deps":[{"nodeId":"com.android.tools:annotations@25.2.0"},{"nodeId":"com.google.guava:guava@18.0"}]},{"nodeId":"com.google.code.gson:gson@2.2.4","pkgId":"com.google.code.gson:gson@2.2.4","deps":[]},{"nodeId":"com.google.guava:guava@18.0","pkgId":"com.google.guava:guava@18.0","deps":[]},{"nodeId":"com.android.tools.analytics-library:tracker@25.3.0","pkgId":"com.android.tools.analytics-library:tracker@25.3.0","deps":[{"nodeId":"com.android.tools.analytics-library:protos@25.3.0|1"},{"nodeId":"com.android.tools.analytics-library:shared@25.3.0|2"},{"nodeId":"com.android.tools:annotations@25.2.0"},{"nodeId":"com.android.tools:common@25.3.0|1"},{"nodeId":"com.google.guava:guava@18.0"},{"nodeId":"com.google.protobuf:protobuf-java@3.0.0"}]},{"nodeId":"com.android.tools.build:builder-model@2.3.0|1","pkgId":"com.android.tools.build:builder-model@2.3.0","deps":[],"info":{"labels":{"pruned":"true"}}},{"nodeId":"com.android.tools.build:builder-model@2.3.0|2","pkgId":"com.android.tools.build:builder-model@2.3.0","deps":[{"nodeId":"com.android.tools:annotations@25.2.0"}]},{"nodeId":"com.android.tools.build:builder-test-api@2.3.0|1","pkgId":"com.android.tools.build:builder-test-api@2.3.0","deps":[],"info":{"labels":{"pruned":"true"}}},{"nodeId":"com.android.tools.build:builder-test-api@2.3.0|2","pkgId":"com.android.tools.build:builder-test-api@2.3.0","deps":[{"nodeId":"com.android.tools.ddms:ddmlib@25.3.0|1"}]},{"nodeId":"net.sf.kxml:kxml2@2.3.0","pkgId":"net.sf.kxml:kxml2@2.3.0","deps":[]},{"nodeId":"com.android.tools.ddms:ddmlib@25.3.0|1","pkgId":"com.android.tools.ddms:ddmlib@25.3.0","deps":[{"nodeId":"com.android.tools:common@25.3.0|2"},{"nodeId":"net.sf.kxml:kxml2@2.3.0"}]},{"nodeId":"com.android.tools.ddms:ddmlib@25.3.0|2","pkgId":"com.android.tools.ddms:ddmlib@25.3.0","deps":[],"info":{"labels":{"pruned":"true"}}},{"nodeId":"com.intellij:annotations@12.0","pkgId":"com.intellij:annotations@12.0","deps":[]},{"nodeId":"com.android.tools.layoutlib:layoutlib-api@25.3.0","pkgId":"com.android.tools.layoutlib:layoutlib-api@25.3.0","deps":[{"nodeId":"com.android.tools:annotations@25.2.0"},{"nodeId":"com.android.tools:common@25.3.0|1"},{"nodeId":"com.intellij:annotations@12.0"},{"nodeId":"net.sf.kxml:kxml2@2.3.0"}]},{"nodeId":"com.android.tools:dvlib@25.3.0","pkgId":"com.android.tools:dvlib@25.3.0","deps":[{"nodeId":"com.android.tools:common@25.3.0|1"}]},{"nodeId":"com.google.jimfs:jimfs@1.1","pkgId":"com.google.jimfs:jimfs@1.1","deps":[{"nodeId":"com.google.guava:guava@18.0"}]},{"nodeId":"org.apache.commons:commons-compress@1.8.1","pkgId":"org.apache.commons:commons-compress@1.8.1","deps":[]},{"nodeId":"com.android.tools:repository@25.3.0","pkgId":"com.android.tools:repository@25.3.0","deps":[{"nodeId":"com.android.tools:common@25.3.0|1"},{"nodeId":"com.google.jimfs:jimfs@1.1"},{"nodeId":"org.apache.commons:commons-compress@1.8.1"}]},{"nodeId":"commons-codec:commons-codec@1.4","pkgId":"commons-codec:commons-codec@1.4","deps":[]},{"nodeId":"commons-logging:commons-logging@1.1.1","pkgId":"commons-logging:commons-logging@1.1.1","deps":[]},{"nodeId":"org.apache.httpcomponents:httpcore@4.1","pkgId":"org.apache.httpcomponents:httpcore@4.1","deps":[]},{"nodeId":"org.apache.httpcomponents:httpclient@4.1.1","pkgId":"org.apache.httpcomponents:httpclient@4.1.1","deps":[{"nodeId":"commons-codec:commons-codec@1.4"},{"nodeId":"commons-logging:commons-logging@1.1.1"},{"nodeId":"org.apache.httpcomponents:httpcore@4.1"}]},{"nodeId":"org.apache.httpcomponents:httpmime@4.1","pkgId":"org.apache.httpcomponents:httpmime@4.1","deps":[{"nodeId":"commons-logging:commons-logging@1.1.1"},{"nodeId":"org.apache.httpcomponents:httpcore@4.1"}]},{"nodeId":"com.android.tools:sdklib@25.3.0|1","pkgId":"com.android.tools:sdklib@25.3.0","deps":[{"nodeId":"com.android.tools.layoutlib:layoutlib-api@25.3.0"},{"nodeId":"com.android.tools:dvlib@25.3.0"},{"nodeId":"com.android.tools:repository@25.3.0"},{"nodeId":"com.google.code.gson:gson@2.2.4"},{"nodeId":"org.apache.commons:commons-compress@1.8.1"},{"nodeId":"org.apache.httpcomponents:httpclient@4.1.1"},{"nodeId":"org.apache.httpcomponents:httpmime@4.1"}]},{"nodeId":"com.android.tools:sdklib@25.3.0|2","pkgId":"com.android.tools:sdklib@25.3.0","deps":[],"info":{"labels":{"pruned":"true"}}},{"nodeId":"org.bouncycastle:bcprov-jdk15on@1.48","pkgId":"org.bouncycastle:bcprov-jdk15on@1.48","deps":[]},{"nodeId":"org.bouncycastle:bcpkix-jdk15on@1.48|1","pkgId":"org.bouncycastle:bcpkix-jdk15on@1.48","deps":[{"nodeId":"org.bouncycastle:bcprov-jdk15on@1.48"}]},{"nodeId":"org.bouncycastle:bcpkix-jdk15on@1.48|2","pkgId":"org.bouncycastle:bcpkix-jdk15on@1.48","deps":[],"info":{"labels":{"pruned":"true"}}},{"nodeId":"com.android.tools:sdk-common@25.3.0|1","pkgId":"com.android.tools:sdk-common@25.3.0","deps":[{"nodeId":"com.android.tools.build:builder-model@2.3.0|2"},{"nodeId":"com.android.tools.build:builder-test-api@2.3.0|2"},{"nodeId":"com.android.tools:sdklib@25.3.0|1"},{"nodeId":"org.bouncycastle:bcpkix-jdk15on@1.48|1"},{"nodeId":"org.bouncycastle:bcprov-jdk15on@1.48"}]},{"nodeId":"com.android.tools:sdk-common@25.3.0|2","pkgId":"com.android.tools:sdk-common@25.3.0","deps":[],"info":{"labels":{"pruned":"true"}}},{"nodeId":"com.android.tools.build:manifest-merger@25.3.0","pkgId":"com.android.tools.build:manifest-merger@25.3.0","deps":[{"nodeId":"com.android.tools:common@25.3.0|1"},{"nodeId":"com.android.tools:sdk-common@25.3.0|1"},{"nodeId":"com.android.tools:sdklib@25.3.0|2"},{"nodeId":"com.google.code.gson:gson@2.2.4"},{"nodeId":"net.sf.kxml:kxml2@2.3.0"}]},{"nodeId":"com.android.tools.jack:jack-api@0.13.0","pkgId":"com.android.tools.jack:jack-api@0.13.0","deps":[]},{"nodeId":"com.android.tools.jill:jill-api@0.10.0","pkgId":"com.android.tools.jill:jill-api@0.10.0","deps":[]},{"nodeId":"com.squareup:javawriter@2.5.0","pkgId":"com.squareup:javawriter@2.5.0","deps":[]},{"nodeId":"org.ow2.asm:asm@5.0.4","pkgId":"org.ow2.asm:asm@5.0.4","deps":[]},{"nodeId":"org.ow2.asm:asm-tree@5.0.4","pkgId":"org.ow2.asm:asm-tree@5.0.4","deps":[{"nodeId":"org.ow2.asm:asm@5.0.4"}]},{"nodeId":"com.android.tools.build:builder@2.3.0","pkgId":"com.android.tools.build:builder@2.3.0","deps":[{"nodeId":"com.android.tools.analytics-library:protos@25.3.0|1"},{"nodeId":"com.android.tools.analytics-library:shared@25.3.0|1"},{"nodeId":"com.android.tools.analytics-library:tracker@25.3.0"},{"nodeId":"com.android.tools.build:builder-model@2.3.0|1"},{"nodeId":"com.android.tools.build:builder-test-api@2.3.0|1"},{"nodeId":"com.android.tools.build:manifest-merger@25.3.0"},{"nodeId":"com.android.tools.ddms:ddmlib@25.3.0|2"},{"nodeId":"com.android.tools.jack:jack-api@0.13.0"},{"nodeId":"com.android.tools.jill:jill-api@0.10.0"},{"nodeId":"com.android.tools:common@25.3.0|1"},{"nodeId":"com.android.tools:sdk-common@25.3.0|2"},{"nodeId":"com.android.tools:sdklib@25.3.0|2"},{"nodeId":"com.squareup:javawriter@2.5.0"},{"nodeId":"org.bouncycastle:bcpkix-jdk15on@1.48|2"},{"nodeId":"org.bouncycastle:bcprov-jdk15on@1.48"},{"nodeId":"org.ow2.asm:asm@5.0.4"},{"nodeId":"org.ow2.asm:asm-tree@5.0.4"}]}]}}
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This DepGraph has enhanced data as outcome of snyk-gradle-plugin changes

@anthogez anthogez changed the title feat: use break cycles logic of depgraph feat: use break cycles logic of depgraph for snyk-gradle Mar 29, 2021
@anthogez anthogez merged commit 7afa49c into master Mar 29, 2021
@anthogez anthogez deleted the feat/use-break-cycles-logic-of-depgraph branch March 29, 2021 10:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants