Skip to content

Commit 5c108e1

Browse files
[WIP] Log errors (#72)
* capture the stderr from the commands executed on running analyse and print that output plus the command that failed to provide useful feedback * Display error on encountering error while generating golist.json * Log Errors * Change to Msg * Elaborate on Go errors * fix typo * dummy commit * trigger-build * log error
1 parent 516f001 commit 5c108e1

File tree

6 files changed

+29
-6
lines changed

6 files changed

+29
-6
lines changed

cmd/root.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@ func Execute() {
5959
}
6060
err := segmentClient.Close()
6161
if err != nil {
62+
log.Debug().Msgf("ERROR: Failed to Close Segment Client: " + err.Error())
6263
return
6364
}
6465
os.Exit(exitCode)
@@ -73,7 +74,8 @@ func init() {
7374

7475
// Initiate segment client
7576
if segmentClient, err = segment.NewClient(); err != nil {
76-
log.Fatal().Err(err).Msgf(err.Error())
77+
78+
log.Fatal().Err(err).Msg("Failed to Create Segment Client: " + err.Error())
7779
}
7880
}
7981

gomanifest/generator/deps.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ func GetDeps(cmd GoList) (map[string]DepPackage, error) {
7474
}
7575
// Wait for the `go list` command to complete.
7676
if err := cmd.Wait(); err != nil {
77-
return nil, fmt.Errorf("%v: `go list` failed, use `go mod tidy` to known more", err)
77+
return nil, fmt.Errorf("%v: `go list` failed, use `go mod tidy` from the directory where the manifest file is present to know more", err)
7878
}
7979
log.Debug().Msgf("Total packages: \t\t%d", len(depPackagesMap))
8080
return depPackagesMap, nil

pkg/analyses/golang/matcher.go

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -62,8 +62,13 @@ func (m *Matcher) GeneratorDependencyTree(manifestFilePath string) string {
6262
}
6363
manifestDir := filepath.Dir(manifestFilePath)
6464
treePath, _ := filepath.Abs(filepath.Join(os.TempDir(), m.DepsTreeFileName()))
65-
generate(golang, manifestDir, treePath)
66-
log.Debug().Msgf("Success: Generate golist.json")
65+
err = generate(golang, manifestDir, treePath)
66+
if err == nil {
67+
log.Debug().Msgf("Success: Generate golist.json")
68+
} else {
69+
log.Fatal().Err(err).Msg("Failed to Generate golist.json")
70+
}
71+
6772
return treePath
6873
}
6974

pkg/analyses/maven/matcher.go

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package maven
22

33
import (
4+
"bytes"
45
"fmt"
56
"os"
67
"os/exec"
@@ -36,13 +37,18 @@ func (m *Matcher) GeneratorDependencyTree(manifestFilePath string) string {
3637
outcmd := fmt.Sprintf("-DoutputFile=%s", treePath)
3738
cleanRepo := exec.Command(maven, "--quiet", "clean", "-f", manifestFilePath)
3839
dependencyTree := exec.Command(maven, "--quiet", "org.apache.maven.plugins:maven-dependency-plugin:3.0.2:tree", "-f", manifestFilePath, outcmd, "-DoutputType=dot", "-DappendOutput=true")
40+
41+
var stdout bytes.Buffer
42+
dependencyTree.Stdout = &stdout
43+
3944
log.Debug().Msgf("Clean Repo Command: %s", cleanRepo)
4045
log.Debug().Msgf("dependencyTree Command: %s", dependencyTree)
4146
if err := cleanRepo.Run(); err != nil {
4247
log.Fatal().Err(err).Msgf(err.Error())
4348
}
4449
if err := dependencyTree.Run(); err != nil {
45-
log.Fatal().Err(err).Msgf(err.Error())
50+
log.Debug().Err(err).Msg("ERROR - Failed to execute: "+dependencyTree.String()+"\n"+stdout.String())
51+
log.Fatal().Err(err).Msgf("Missing, or Unable to Resolve Certain Dependencies or Artifacts")
4652
}
4753
log.Debug().Msgf("Success: buildDepsTree")
4854
return treePath

pkg/analyses/npm/matcher.go

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package npm
22

33
import (
4+
"bytes"
45
"fmt"
56
"os"
67
"os/exec"
@@ -44,10 +45,16 @@ func (m *Matcher) GeneratorDependencyTree(manifestFilePath string) string {
4445
npmList.Stdout = outfile
4546

4647
log.Debug().Msgf("Dependency Tree Command: %s", npmList)
48+
49+
var stderr bytes.Buffer
50+
npmList.Stderr = &stderr
51+
4752
if err := npmList.Run(); err != nil {
48-
log.Fatal().Err(err).Msgf(err.Error())
53+
log.Debug().Msg("ERROR - Failed to Execute "+npmList.String()+"\n"+stderr.String())
54+
log.Fatal().Err(err).Msgf("Missing Dependencies. Hint: Please install the required dependencies with \"npm install\" from the directory of the manifest file")
4955
}
5056
npmList.Wait()
57+
5158
log.Debug().Msgf("Success: buildDepsTree at %s", treePath)
5259
return treePath
5360
}

pkg/analyses/summary/helpers.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,9 @@ func outputSummaryPlain(result *StackSummary, verboseMsg bool) {
122122
blue("Low Vulnerabilities: "), blue(result.LowVulnerabilities), "\n\n",
123123
white("Full Report: "), result.ReportLink, "\n\n",
124124
)
125+
if result.TotalScannedDependencies == 0 {
126+
fmt.Fprint(os.Stdout, yellow("Could not generate Dependency tree, Please make sure all packages present in manifest are installed.\n\n"))
127+
}
125128
fmt.Fprint(os.Stdout, "(Powered by Snyk)\n\n")
126129
if verboseMsg {
127130
fmt.Fprint(os.Stdout, "tip: Register with Snyk and add token by running `crda auth`.\n")

0 commit comments

Comments
 (0)