Showing 16 of 16 total issues
Identical blocks of code found in 2 locations. Consider refactoring. Open
switch len(arguments) {
case 0:
if err := tpl.ExecuteTemplate(&renderedTpl, filepath.Base(templatePath), nil); err != nil {
return "", err
}
- Read upRead up
Duplicated Code
Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:
Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.
When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).
Tuning
This issue has a mass of 144.
We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.
The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.
If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.
See codeclimate-duplication
's documentation for more information about tuning the mass threshold in your .codeclimate.yml
.
Refactorings
- Extract Method
- Extract Class
- Form Template Method
- Introduce Null Object
- Pull Up Method
- Pull Up Field
- Substitute Algorithm
Further Reading
- Don't Repeat Yourself on the C2 Wiki
- Duplicated Code on SourceMaking
- Refactoring: Improving the Design of Existing Code by Martin Fowler. Duplicated Code, p76
Identical blocks of code found in 2 locations. Consider refactoring. Open
switch len(arguments) {
case 0:
if err := tpl.ExecuteTemplate(&renderedTpl, filepath.Base(templatePath), nil); err != nil {
return "", err
}
- Read upRead up
Duplicated Code
Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:
Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.
When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).
Tuning
This issue has a mass of 144.
We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.
The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.
If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.
See codeclimate-duplication
's documentation for more information about tuning the mass threshold in your .codeclimate.yml
.
Refactorings
- Extract Method
- Extract Class
- Form Template Method
- Introduce Null Object
- Pull Up Method
- Pull Up Field
- Substitute Algorithm
Further Reading
- Don't Repeat Yourself on the C2 Wiki
- Duplicated Code on SourceMaking
- Refactoring: Improving the Design of Existing Code by Martin Fowler. Duplicated Code, p76
Method Repository.Query
has 8 return statements (exceeds 4 allowed). Open
func (r *Repository) Query(queryLocation string, arguments ...interface{}) ([]map[string]rdf.Term, error) {
query, exists := r.QueryIndex[queryLocation] // QueryIndex includes query/, wanted or not? not?
if !exists {
return nil, errors.New("The given query could not be found. " + queryLocation)
}
Avoid deeply nested control flow statements. Open
if err != nil {
return utils.ErrorExit("Failed to remove find query file.", err)
}
Function GetRemoteWithConfig
has 6 return statements (exceeds 4 allowed). Open
func GetRemoteWithConfig(uri interface{}, config map[interface{}]interface{}) (*string, error) {
preparedUri := cast.ToString(uri)
_, err := url.Parse(preparedUri)
if err != nil {
Function DiscoverQueries
has 6 return statements (exceeds 4 allowed). Open
func DiscoverQueries() (map[string]string, error) {
var index = make(map[string]string)
if _, err := os.Stat("queries"); os.IsNotExist(err) {
printVerbose("Failed to locate query files. Skipping...")
Function include
has 6 return statements (exceeds 4 allowed). Open
func include(templatePath string, arguments ...interface{}) (html_template.HTML, error) {
templatePath = "templates/" + templatePath
if _, err := os.Stat(templatePath); err != nil {
return "", errors.New("Unable to find the template file " + templatePath)
}
Function include_text
has 6 return statements (exceeds 4 allowed). Open
func include_text(templatePath string, arguments ...interface{}) (string, error) {
templatePath = "templates/" + templatePath
if _, err := os.Stat(templatePath); err != nil {
return "", errors.New("Unable to find the template file " + templatePath)
}
Function CountFilesRecursive
has 5 return statements (exceeds 4 allowed). Open
func CountFilesRecursive(dir string) (int, error) {
if _, err := os.Stat(dir); os.IsNotExist(err) {
return 0, nil
}
Method CacheManager.SetCache
has 5 return statements (exceeds 4 allowed). Open
func (cm *CacheManager) SetCache(location string, query string, content string) error {
if cm.CacheStrategy == "never" {
return nil
}
Function ValidatePathSection
has 5 return statements (exceeds 4 allowed). Open
func ValidatePathSection(path string) error {
// throw an error if the path contains illegal characters
if illegalPath.MatchString(path) {
return errors.New("Illegal characters in path: " + path)
}
Function printFileContents
has 5 return statements (exceeds 4 allowed). Open
func printFileContents(path string) error {
fmt.Println(path)
file, err := os.Open(path)
if err != nil {
return err
Method View.RenderPage
has 5 return statements (exceeds 4 allowed). Open
func (v *View) RenderPage(path string, data interface{}) error {
if err := os.MkdirAll(filepath.Dir(path), 0770); err != nil {
return err
}
Function DiscoverViews
has 5 return statements (exceeds 4 allowed). Open
func DiscoverViews(layouts []string) ([]View, error) {
var views []View
data, err := ioutil.ReadFile("views.yaml")
if err != nil {
Method Repository.QueryCall
has 5 return statements (exceeds 4 allowed). Open
func (r *Repository) QueryCall(query string) (*string, error) {
form := url.Values{}
form.Set("query", query)
b := form.Encode()
Function LoadConfig
has 5 return statements (exceeds 4 allowed). Open
func LoadConfig(fileLocation string) error {
if _, err := os.Stat(fileLocation); err != nil {
if fileLocation == "snowman.yaml" {
return utils.ErrorExit("Unable to locate snowman.yaml in the current working directory.", err)
} else {