Skip to content

Commit cdfb58b

Browse files
authored
✨ Allow incomplete local checks (#4423)
* ✨ allow incomplete localdir checks (#3832) Signed-off-by: Luke Harrison <luke.harrison1@ibm.com> * ✨ fixes as per @spencerschrock (#3832) Signed-off-by: Luke Harrison <Luke.Harrison1@ibm.com> * ✨ fixed linting issues (#3832) Signed-off-by: Luke Harrison <Luke.Harrison1@ibm.com> --------- Signed-off-by: Luke Harrison <luke.harrison1@ibm.com> Signed-off-by: Luke Harrison <Luke.Harrison1@ibm.com>
1 parent cae6d48 commit cdfb58b

File tree

14 files changed

+88
-38
lines changed

14 files changed

+88
-38
lines changed

checks/dangerous_workflow.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,8 @@ const CheckDangerousWorkflow = "Dangerous-Workflow"
2929
//nolint:gochecknoinits
3030
func init() {
3131
supportedRequestTypes := []checker.RequestType{
32-
checker.FileBased,
3332
checker.CommitBased,
33+
checker.FileBased,
3434
}
3535
if err := registerCheck(CheckDangerousWorkflow, DangerousWorkflow, supportedRequestTypes); err != nil {
3636
// this should never happen

checks/fuzzing.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,10 @@ const CheckFuzzing = "Fuzzing"
2828

2929
//nolint:gochecknoinits
3030
func init() {
31-
if err := registerCheck(CheckFuzzing, Fuzzing, nil); err != nil {
31+
supportedRequestTypes := []checker.RequestType{
32+
checker.FileBased,
33+
}
34+
if err := registerCheck(CheckFuzzing, Fuzzing, supportedRequestTypes); err != nil {
3235
// this should never happen
3336
panic(err)
3437
}

checks/license.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ const CheckLicense = "License"
3030
func init() {
3131
supportedRequestTypes := []checker.RequestType{
3232
checker.CommitBased,
33+
checker.FileBased,
3334
}
3435
if err := registerCheck(CheckLicense, License, supportedRequestTypes); err != nil {
3536
// this should never happen

checks/packaging.go

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import (
2121
"github.com/ossf/scorecard/v5/checks/raw/gitlab"
2222
"github.com/ossf/scorecard/v5/clients/githubrepo"
2323
"github.com/ossf/scorecard/v5/clients/gitlabrepo"
24+
"github.com/ossf/scorecard/v5/clients/localdir"
2425
sce "github.com/ossf/scorecard/v5/errors"
2526
"github.com/ossf/scorecard/v5/probes"
2627
"github.com/ossf/scorecard/v5/probes/zrunner"
@@ -31,18 +32,34 @@ const CheckPackaging = "Packaging"
3132

3233
//nolint:gochecknoinits
3334
func init() {
34-
if err := registerCheck(CheckPackaging, Packaging, nil); err != nil {
35+
supportedRequestTypes := []checker.RequestType{
36+
checker.FileBased,
37+
}
38+
if err := registerCheck(CheckPackaging, Packaging, supportedRequestTypes); err != nil {
3539
// this should never happen
3640
panic(err)
3741
}
3842
}
3943

4044
// Packaging runs Packaging check.
4145
func Packaging(c *checker.CheckRequest) checker.CheckResult {
42-
var rawData checker.PackagingData
43-
var err error
46+
var rawData, rawDataGithub, rawDataGitlab checker.PackagingData
47+
var err, errGithub, errGitlab error
4448

4549
switch v := c.RepoClient.(type) {
50+
case *localdir.Client:
51+
// Performing both packaging checks since we dont know when local
52+
rawDataGithub, errGithub = github.Packaging(c)
53+
rawDataGitlab, errGitlab = gitlab.Packaging(c)
54+
// Appending results of checks
55+
rawData.Packages = append(rawData.Packages, rawDataGithub.Packages...)
56+
rawData.Packages = append(rawData.Packages, rawDataGitlab.Packages...)
57+
// checking for errors
58+
if errGithub != nil {
59+
err = errGithub
60+
} else if errGitlab != nil {
61+
err = errGitlab
62+
}
4663
case *githubrepo.Client:
4764
rawData, err = github.Packaging(c)
4865
case *gitlabrepo.Client:

checks/permissions.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,8 @@ const CheckTokenPermissions = "Token-Permissions"
2929
//nolint:gochecknoinits
3030
func init() {
3131
supportedRequestTypes := []checker.RequestType{
32-
checker.FileBased,
3332
checker.CommitBased,
33+
checker.FileBased,
3434
}
3535
if err := registerCheck(CheckTokenPermissions, TokenPermissions, supportedRequestTypes); err != nil {
3636
// This should never happen.

checks/pinned_dependencies.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,8 @@ const CheckPinnedDependencies = "Pinned-Dependencies"
2929
//nolint:gochecknoinits
3030
func init() {
3131
supportedRequestTypes := []checker.RequestType{
32-
checker.FileBased,
3332
checker.CommitBased,
33+
checker.FileBased,
3434
}
3535
if err := registerCheck(CheckPinnedDependencies, PinningDependencies, supportedRequestTypes); err != nil {
3636
// This should never happen.

checks/raw/fuzzing.go

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -338,6 +338,8 @@ func getProminentLanguages(langs []clients.Language) []clients.LanguageName {
338338
numLangs := len(langs)
339339
if numLangs == 0 {
340340
return nil
341+
} else if len(langs) == 1 && langs[0].Name == clients.All {
342+
return getAllLanguages()
341343
}
342344
totalLoC := 0
343345
// Use a map to record languages and their lines of code to drop potential duplicates.
@@ -361,6 +363,14 @@ func getProminentLanguages(langs []clients.Language) []clients.LanguageName {
361363
return ret
362364
}
363365

366+
func getAllLanguages() []clients.LanguageName {
367+
allLanguages := make([]clients.LanguageName, 0, len(languageFuzzSpecs))
368+
for l := range languageFuzzSpecs {
369+
allLanguages = append(allLanguages, l)
370+
}
371+
return allLanguages
372+
}
373+
364374
func propertyBasedDescription(language string) *string {
365375
s := fmt.Sprintf("Property-based testing in %s generates test instances randomly or exhaustively "+
366376
"and test that specific properties are satisfied.", language)

checks/raw/github/packaging.go

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
package github
1616

1717
import (
18+
"errors"
1819
"fmt"
1920
"io"
2021
"path/filepath"
@@ -23,6 +24,7 @@ import (
2324

2425
"github.com/ossf/scorecard/v5/checker"
2526
"github.com/ossf/scorecard/v5/checks/fileparser"
27+
"github.com/ossf/scorecard/v5/clients"
2628
"github.com/ossf/scorecard/v5/finding"
2729
)
2830

@@ -73,7 +75,12 @@ func Packaging(c *checker.CheckRequest) (checker.PackagingData, error) {
7375

7476
runs, err := c.RepoClient.ListSuccessfulWorkflowRuns(filepath.Base(fp))
7577
if err != nil {
76-
return data, fmt.Errorf("Client.Actions.ListWorkflowRunsByFileName: %w", err)
78+
// assume the workflow will have run for localdir client
79+
if errors.Is(err, clients.ErrUnsupportedFeature) {
80+
runs = append(runs, clients.WorkflowRun{})
81+
} else {
82+
return data, fmt.Errorf("Client.Actions.ListWorkflowRunsByFileName: %w", err)
83+
}
7784
}
7885

7986
if len(runs) > 0 {

checks/raw/sast.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ import (
2828

2929
"github.com/ossf/scorecard/v5/checker"
3030
"github.com/ossf/scorecard/v5/checks/fileparser"
31+
"github.com/ossf/scorecard/v5/clients"
3132
sce "github.com/ossf/scorecard/v5/errors"
3233
"github.com/ossf/scorecard/v5/finding"
3334
)
@@ -92,6 +93,10 @@ func sastToolInCheckRuns(c *checker.CheckRequest) ([]checker.SASTCommit, error)
9293
var sastCommits []checker.SASTCommit
9394
commits, err := c.RepoClient.ListCommits()
9495
if err != nil {
96+
// ignoring check for local dir
97+
if errors.Is(err, clients.ErrUnsupportedFeature) {
98+
return sastCommits, nil
99+
}
95100
return sastCommits,
96101
sce.WithMessage(sce.ErrScorecardInternal, fmt.Sprintf("RepoClient.ListCommits: %v", err))
97102
}

checks/sast.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,10 @@ const CheckSAST = "SAST"
2828

2929
//nolint:gochecknoinits
3030
func init() {
31-
if err := registerCheck(CheckSAST, SAST, nil); err != nil {
31+
supportedRequestTypes := []checker.RequestType{
32+
checker.FileBased,
33+
}
34+
if err := registerCheck(CheckSAST, SAST, supportedRequestTypes); err != nil {
3235
// This should never happen.
3336
panic(err)
3437
}

0 commit comments

Comments
 (0)