Skip to content

Commit 278f68d

Browse files
committed
fix: Only pass configuration file if created, otherwise fallback to native tool PLUTO-1383
Still needs updates on PMD
1 parent d0b14b3 commit 278f68d

File tree

6 files changed

+76
-12
lines changed

6 files changed

+76
-12
lines changed

tools/eslintRunner.go

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

33
import (
4-
"codacy/cli-v2/config"
54
"os"
65
"os/exec"
76
"path/filepath"
@@ -20,9 +19,10 @@ func RunEslint(repositoryToAnalyseDirectory string, eslintInstallationDirectory
2019
// https://eslint.org/docs/v8.x/use/configure/configuration-files-new
2120
cmd.Env = append(cmd.Env, "ESLINT_USE_FLAT_CONFIG=true")
2221

23-
// Add config file from tools-configs directory
24-
configFile := filepath.Join(config.Config.ToolsConfigDirectory(), "eslint.config.mjs")
25-
cmd.Args = append(cmd.Args, "-c", configFile)
22+
// Add config file from tools-configs directory if it exists
23+
if configFile, exists := ConfigFileExists(repositoryToAnalyseDirectory, "eslint.config.mjs"); exists {
24+
cmd.Args = append(cmd.Args, "-c", configFile)
25+
}
2626

2727
if autoFix {
2828
cmd.Args = append(cmd.Args, "--fix")

tools/pmdRunner.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ func RunPmd(repositoryToAnalyseDirectory string, pmdBinary string, pathsToCheck
2525

2626
// Add config file from tools-configs directory if not specified
2727
if rulesetFile == "" {
28+
// TODO: Check if the config file exists before using it
2829
configFile := filepath.Join(config.Config.ToolsConfigDirectory(), "pmd-ruleset.xml")
2930
cmd.Args = append(cmd.Args, "-R", configFile)
3031
} else {

tools/pylintRunner.go

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,10 @@ func RunPylint(workDirectory string, toolInfo *plugins.ToolInfo, files []string,
1919
// Always use JSON output format since we'll convert to SARIF if needed
2020
args = append(args, "--output-format=json")
2121

22-
// Use the configuration file from .codacy/tools-configs/pylintrc
23-
configPath := filepath.Join(workDirectory, ".codacy", "tools-configs", "pylint.rc")
24-
args = append(args, fmt.Sprintf("--rcfile=%s", configPath))
22+
// Check if a config file exists in the expected location and use it if present
23+
if configFile, exists := ConfigFileExists(workDirectory, "pylint.rc"); exists {
24+
args = append(args, fmt.Sprintf("--rcfile=%s", configFile))
25+
}
2526

2627
// Create a temporary file for JSON output if we need to convert to SARIF
2728
var tempFile string

tools/runnerUtils.go

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package tools
2+
3+
import (
4+
"os"
5+
"path/filepath"
6+
)
7+
8+
// ConfigFileExists checks if a specific configuration file exists in the .codacy/tools-configs/ directory
9+
// of the specified repository.
10+
//
11+
// Parameters:
12+
// - repositoryDir: The repository directory path
13+
// - fileName: The configuration file name to check for
14+
//
15+
// Returns:
16+
// - string: The relative path to the configuration file (for cmd args)
17+
// - bool: True if the file exists, false otherwise
18+
func ConfigFileExists(repositoryDir string, fileName string) (string, bool) {
19+
configFile := filepath.Join(".codacy", "tools-configs", fileName)
20+
configFilePath := filepath.Join(repositoryDir, configFile)
21+
22+
if _, err := os.Stat(configFilePath); err == nil {
23+
return configFile, true
24+
}
25+
26+
return "", false
27+
}

tools/runnerUtils_test.go

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
package tools
2+
3+
import (
4+
"os"
5+
"path/filepath"
6+
"testing"
7+
8+
"github.com/stretchr/testify/assert"
9+
)
10+
11+
func TestConfigFileExists(t *testing.T) {
12+
// Create a test directory structure
13+
tempDir := t.TempDir()
14+
15+
// Create .codacy/tools-configs directory
16+
configDir := filepath.Join(tempDir, ".codacy", "tools-configs")
17+
18+
err := os.MkdirAll(configDir, 0755)
19+
assert.NoError(t, err, "Failed to create test directory structure")
20+
21+
// Create a test config file
22+
testConfigFile := filepath.Join(configDir, "test-config.yaml")
23+
err = os.WriteFile(testConfigFile, []byte("test content"), 0644)
24+
assert.NoError(t, err, "Failed to create test config file")
25+
26+
// Test case 1: Config file exists
27+
configPath, exists := ConfigFileExists(tempDir, "test-config.yaml")
28+
assert.True(t, exists, "Config file should exist")
29+
assert.Equal(t, filepath.Join(".codacy", "tools-configs", "test-config.yaml"), configPath,
30+
"Config path should be correctly formed relative path")
31+
32+
// Test case 2: Config file doesn't exist
33+
configPath, exists = ConfigFileExists(tempDir, "non-existent-config.yaml")
34+
assert.False(t, exists, "Config file should not exist")
35+
assert.Equal(t, "", configPath, "Config path should be empty for non-existent file")
36+
}

tools/trivyRunner.go

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,18 @@
11
package tools
22

33
import (
4-
"codacy/cli-v2/config"
54
"os"
65
"os/exec"
7-
"path/filepath"
86
)
97

108
// RunTrivy executes Trivy vulnerability scanner with the specified options
119
func RunTrivy(repositoryToAnalyseDirectory string, trivyBinary string, pathsToCheck []string, outputFile string, outputFormat string) error {
1210
cmd := exec.Command(trivyBinary, "fs")
1311

14-
// Add config file from tools-configs directory
15-
configFile := filepath.Join(config.Config.ToolsConfigDirectory(), "trivy.yaml")
16-
cmd.Args = append(cmd.Args, "--config", configFile)
12+
// Add config file from tools-configs directory if it exists
13+
if configFile, exists := ConfigFileExists(repositoryToAnalyseDirectory, "trivy.yaml"); exists {
14+
cmd.Args = append(cmd.Args, "--config", configFile)
15+
}
1716

1817
// Add format options
1918
if outputFile != "" {

0 commit comments

Comments
 (0)