Skip to content

Commit d3659d6

Browse files
refactor: centralize tool language mapping in language_config.go
- Moved the tool language mapping from the CreateLanguagesConfigFile function to a new global variable, defaultToolLanguageMap, for better organization and maintainability. - Updated references in CreateLanguagesConfigFile to use the new centralized mapping. - Enhanced the GetDefaultToolLanguageMapping function to return a copy of the default mapping, preventing unintended modifications.
1 parent 913d227 commit d3659d6

File tree

1 file changed

+55
-100
lines changed

1 file changed

+55
-100
lines changed

tools/language_config.go

Lines changed: 55 additions & 100 deletions
Original file line numberDiff line numberDiff line change
@@ -14,57 +14,57 @@ import (
1414
"gopkg.in/yaml.v3"
1515
)
1616

17+
// defaultToolLanguageMap defines the default mapping of tools to their supported languages and file extensions
18+
var defaultToolLanguageMap = map[string]domain.ToolLanguageInfo{
19+
"cppcheck": {
20+
Name: "cppcheck",
21+
Languages: []string{"C", "CPP"},
22+
Extensions: []string{".c", ".cpp", ".cc", ".h", ".hpp"},
23+
},
24+
"pylint": {
25+
Name: "pylint",
26+
Languages: []string{"Python"},
27+
Extensions: []string{".py"},
28+
},
29+
"eslint": {
30+
Name: "eslint",
31+
Languages: []string{"JavaScript", "TypeScript", "JSX", "TSX"},
32+
Extensions: []string{".js", ".jsx", ".ts", ".tsx"},
33+
},
34+
"pmd": {
35+
Name: "pmd",
36+
Languages: []string{"Java", "JavaScript", "JSP", "Velocity", "XML", "Apex", "Scala", "Ruby", "VisualForce"},
37+
Extensions: []string{".java", ".js", ".jsp", ".vm", ".xml", ".cls", ".trigger", ".scala", ".rb", ".page", ".component"},
38+
},
39+
"trivy": {
40+
Name: "trivy",
41+
Languages: []string{"Multiple"},
42+
Extensions: []string{},
43+
},
44+
"dartanalyzer": {
45+
Name: "dartanalyzer",
46+
Languages: []string{"Dart"},
47+
Extensions: []string{".dart"},
48+
},
49+
"lizard": {
50+
Name: "lizard",
51+
Languages: []string{"C", "CPP", "Java", "C#", "JavaScript", "TypeScript", "VueJS", "Objective-C", "Swift", "Python", "Ruby", "TTCN-3", "PHP", "Scala", "GDScript", "Golang", "Lua", "Rust", "Fortran", "Kotlin", "Solidity", "Erlang", "Zig", "Perl"},
52+
Extensions: []string{".c", ".cpp", ".cc", ".h", ".hpp", ".java", ".cs", ".js", ".jsx", ".ts", ".tsx", ".vue", ".m", ".swift", ".py", ".rb", ".ttcn", ".php", ".scala", ".gd", ".go", ".lua", ".rs", ".f", ".f90", ".kt", ".sol", ".erl", ".zig", ".pl"},
53+
},
54+
"semgrep": {
55+
Name: "semgrep",
56+
Languages: []string{"C", "CPP", "C#", "Generic", "Go", "Java", "JavaScript", "JSON", "Kotlin", "Python", "TypeScript", "Ruby", "Rust", "JSX", "PHP", "Scala", "Swift", "Terraform"},
57+
Extensions: []string{".c", ".cpp", ".h", ".hpp", ".cs", ".go", ".java", ".js", ".json", ".kt", ".py", ".ts", ".rb", ".rs", ".jsx", ".php", ".scala", ".swift", ".tf", ".tfvars"},
58+
},
59+
"codacy-enigma-cli": {
60+
Name: "codacy-enigma-cli",
61+
Languages: []string{"Multiple"},
62+
Extensions: []string{},
63+
},
64+
}
65+
1766
// CreateLanguagesConfigFile creates languages-config.yaml based on API response
1867
func CreateLanguagesConfigFile(apiTools []domain.Tool, toolsConfigDir string, toolIDMap map[string]string, initFlags domain.InitFlags) error {
19-
// Map tool names to their language/extension information
20-
toolLanguageMap := map[string]domain.ToolLanguageInfo{
21-
"cppcheck": {
22-
Name: "cppcheck",
23-
Languages: []string{"C", "CPP"},
24-
Extensions: []string{".c", ".cpp", ".cc", ".h", ".hpp"},
25-
},
26-
"pylint": {
27-
Name: "pylint",
28-
Languages: []string{"Python"},
29-
Extensions: []string{".py"},
30-
},
31-
"eslint": {
32-
Name: "eslint",
33-
Languages: []string{"JavaScript", "TypeScript", "JSX", "TSX"},
34-
Extensions: []string{".js", ".jsx", ".ts", ".tsx"},
35-
},
36-
"pmd": {
37-
Name: "pmd",
38-
Languages: []string{"Java", "JavaScript", "JSP", "Velocity", "XML", "Apex", "Scala", "Ruby", "VisualForce"},
39-
Extensions: []string{".java", ".js", ".jsp", ".vm", ".xml", ".cls", ".trigger", ".scala", ".rb", ".page", ".component"},
40-
},
41-
"trivy": {
42-
Name: "trivy",
43-
Languages: []string{"Multiple"},
44-
Extensions: []string{},
45-
},
46-
"dartanalyzer": {
47-
Name: "dartanalyzer",
48-
Languages: []string{"Dart"},
49-
Extensions: []string{".dart"},
50-
},
51-
"lizard": {
52-
Name: "lizard",
53-
Languages: []string{"C", "CPP", "Java", "C#", "JavaScript", "TypeScript", "VueJS", "Objective-C", "Swift", "Python", "Ruby", "TTCN-3", "PHP", "Scala", "GDScript", "Golang", "Lua", "Rust", "Fortran", "Kotlin", "Solidity", "Erlang", "Zig", "Perl"},
54-
Extensions: []string{".c", ".cpp", ".cc", ".h", ".hpp", ".java", ".cs", ".js", ".jsx", ".ts", ".tsx", ".vue", ".m", ".swift", ".py", ".rb", ".ttcn", ".php", ".scala", ".gd", ".go", ".lua", ".rs", ".f", ".f90", ".kt", ".sol", ".erl", ".zig", ".pl"},
55-
},
56-
"semgrep": {
57-
Name: "semgrep",
58-
Languages: []string{"C", "CPP", "C#", "Generic", "Go", "Java", "JavaScript", "JSON", "Kotlin", "Python", "TypeScript", "Ruby", "Rust", "JSX", "PHP", "Scala", "Swift", "Terraform"},
59-
Extensions: []string{".c", ".cpp", ".h", ".hpp", ".cs", ".go", ".java", ".js", ".json", ".kt", ".py", ".ts", ".rb", ".rs", ".jsx", ".php", ".scala", ".swift", ".tf", ".tfvars"},
60-
},
61-
"codacy-enigma-cli": {
62-
Name: "codacy-enigma-cli",
63-
Languages: []string{"Multiple"},
64-
Extensions: []string{},
65-
},
66-
}
67-
6868
// Build a list of tool language info for enabled tools
6969
var configTools []domain.ToolLanguageInfo
7070

@@ -81,7 +81,7 @@ func CreateLanguagesConfigFile(apiTools []domain.Tool, toolsConfigDir string, to
8181
}
8282

8383
// Get language info for this tool
84-
langInfo, exists := toolLanguageMap[shortName]
84+
langInfo, exists := defaultToolLanguageMap[shortName]
8585
if exists {
8686
// Special case for Trivy - always include it
8787
if shortName == "trivy" {
@@ -118,7 +118,7 @@ func CreateLanguagesConfigFile(apiTools []domain.Tool, toolsConfigDir string, to
118118

119119
// If we have no tools or couldn't match any, include all known tools
120120
if len(configTools) == 0 {
121-
for _, langInfo := range toolLanguageMap {
121+
for _, langInfo := range defaultToolLanguageMap {
122122
configTools = append(configTools, langInfo)
123123
}
124124
}
@@ -146,55 +146,10 @@ func CreateLanguagesConfigFile(apiTools []domain.Tool, toolsConfigDir string, to
146146

147147
// GetDefaultToolLanguageMapping returns a copy of the default tool to language/extension mapping.
148148
func GetDefaultToolLanguageMapping() map[string]domain.ToolLanguageInfo {
149-
// toolLanguageMap is defined in CreateLanguagesConfigFile
150-
// We are recreating it here to avoid making it a global variable or changing CreateLanguagesConfigFile signature significantly for now.
151-
// Ideally, this map would be initialized once and stored, or CreateLanguagesConfigFile would be refactored.
152-
toolMap := map[string]domain.ToolLanguageInfo{
153-
"cppcheck": {
154-
Name: "cppcheck",
155-
Languages: []string{"C", "CPP"},
156-
Extensions: []string{".c", ".cpp", ".cc", ".h", ".hpp"},
157-
},
158-
"pylint": {
159-
Name: "pylint",
160-
Languages: []string{"Python"},
161-
Extensions: []string{".py"},
162-
},
163-
"eslint": {
164-
Name: "eslint",
165-
Languages: []string{"JavaScript", "TypeScript", "JSX", "TSX"},
166-
Extensions: []string{".js", ".jsx", ".ts", ".tsx"},
167-
},
168-
"pmd": {
169-
Name: "pmd",
170-
Languages: []string{"Java", "JavaScript", "JSP", "Velocity", "XML", "Apex", "Scala", "Ruby", "VisualForce"},
171-
Extensions: []string{".java", ".js", ".jsp", ".vm", ".xml", ".cls", ".trigger", ".scala", ".rb", ".page", ".component"},
172-
},
173-
"trivy": {
174-
Name: "trivy",
175-
Languages: []string{"Multiple"},
176-
Extensions: []string{},
177-
},
178-
"dartanalyzer": {
179-
Name: "dartanalyzer",
180-
Languages: []string{"Dart"},
181-
Extensions: []string{".dart"},
182-
},
183-
"lizard": {
184-
Name: "lizard",
185-
Languages: []string{"C", "CPP", "Java", "C#", "JavaScript", "TypeScript", "VueJS", "Objective-C", "Swift", "Python", "Ruby", "TTCN-3", "PHP", "Scala", "GDScript", "Golang", "Lua", "Rust", "Fortran", "Kotlin", "Solidity", "Erlang", "Zig", "Perl"},
186-
Extensions: []string{".c", ".cpp", ".cc", ".h", ".hpp", ".java", ".cs", ".js", ".jsx", ".ts", ".tsx", ".vue", ".m", ".swift", ".py", ".rb", ".ttcn", ".php", ".scala", ".gd", ".go", ".lua", ".rs", ".f", ".f90", ".kt", ".sol", ".erl", ".zig", ".pl"},
187-
},
188-
"semgrep": {
189-
Name: "semgrep",
190-
Languages: []string{"C", "CPP", "C#", "Generic", "Go", "Java", "JavaScript", "JSON", "Kotlin", "Python", "TypeScript", "Ruby", "Rust", "JSX", "PHP", "Scala", "Swift", "Terraform"},
191-
Extensions: []string{".c", ".cpp", ".h", ".hpp", ".cs", ".go", ".java", ".js", ".json", ".kt", ".py", ".ts", ".rb", ".rs", ".jsx", ".php", ".scala", ".swift", ".tf", ".tfvars"},
192-
},
193-
"codacy-enigma-cli": {
194-
Name: "codacy-enigma-cli",
195-
Languages: []string{"Multiple"},
196-
Extensions: []string{},
197-
},
149+
// Create a copy of the map to prevent modifications to the original
150+
toolMap := make(map[string]domain.ToolLanguageInfo, len(defaultToolLanguageMap))
151+
for k, v := range defaultToolLanguageMap {
152+
toolMap[k] = v
198153
}
199154
return toolMap
200155
}

0 commit comments

Comments
 (0)