Skip to content

Add exception for template.Must #33

Open

Description

@zemanlx

Hello,

First, thank you for providing this linter! I am using it as part of golangci-lint. I am now working on a project that have some regex.Must in global variables and have noticed that these are excluded from linter when used as global variables.

I assume that is because they are in this case compile-time errors if something goes wrong.

Now I also need to do same thing with templates for policy documents which are part of HTTP request body. Template documents are defined as consts and in global variable I am doing following:

	adminPolicyTemplate        = template.Must(template.New("AdminPolicy").Parse(AdminPolicy))
	readerPolicyTemplate       = template.Must(template.New("ReaderPolicy").Parse(ReaderPolicy))

which if anything is wrong with AdminPolicy template document or ReaderPolicy template document are compiler-ime errors, same as for regex. Therefore I think it would be nice to have same exception for template.Must as we have for regex.Must.

Activity

  1. zemanlx commented on Mar 3, 2022

    @zemanlx
    Author

    @leighmcculloch I can also do the PR if you agree that it is a good idea.

  2. leighmcculloch commented on Jan 15, 2023

    @leighmcculloch
    Owner

    I'm on the fence on this one. I have seen this be a somewhat common pattern to store these values in global variables, but it continues to perpetuate the idea of using global variables. I don't use templates a whole lot myself though, are there ways that aren't obtuse to using them without globals?

  3. zemanlx commented on Jan 16, 2023

    @zemanlx
    Author

    Not sure I understand what you mean. There are always ways around it, but they would be consts if they could 😉, so the next best thing is global variables. They never change in my package and are the same use case as the regex. Right now, I am disabling your linter for those lines, but I see no harm in allowing them by default as regex-es are.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions