<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/151887>151887</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            [clang-tidy] `ClangTidyOptions` should not contain `optional` values
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            clang-tidy
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          carlosgalvezp
      </td>
    </tr>
</table>

<pre>
    This leads to each and every client of the options having to check if that optional contains a value, and make a decision about a default value, to be able to use the options. Or else assume there's a value and just get the value directly, risking UB if there was no value to begin with.

For example, [here](https://github.com/llvm/llvm-project/blob/main/clang-tools-extra/clang-tidy/ClangTidyOptions.h#L92):

```
std::optional<bool> SystemHeaders;
```

The value for this option must either `true` or `false`, there's no such thing as an "unknown" value. The same probably applies to all other options, but I haven't checked carefully.


</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJyUU01v4zgM_TXKhWigyHESH3xI2zV2gQXmsN0fQFmMraksBaKUTvbXL6SkH-htgACxKIqPfO8Rme3kiXrRPor2eYU5zSH2I0YXeEJ3of_OKx3MtX-ZLYMjNAwpAOE4A3oDdKF4hdFZ8gnCCdJMEM7JBs8w48X6qaSPM42vYMs1pvs9OhiDT2g9A8IFXSahnmrRBV8JEAyNlm3wgDrkVAMnzC59JqcAmgC1o_KZmb7ir-FHBHJMgMx5qXeRhNp_4FWwn5kTTJTq01vY2EhjctcCES2_lin-fbz1T5HgDRl8uCfXHibr4c2meS3kUcjjECLQL1zOrrYp2scK3T4LdZhTOrNojkINQg2TTXPW6zEsQg3OXd7_Hs4x_KQxCTVoF7RQw4LWCzWMDv30kEJw_EC_UsTPmDVXoYancnix5vrjTsMsVPN3p4TqCmrtT-zk_SePnEyJN8d3WUTzpENwovkD_rlyouVPQkORRfP47amQx5cP0k4hQiomudWBpfBKtjAGYidTzCR2EkI9ndBxOVYRP2TxATiPcynjJ0AG9CCUyv7VhzcvlLpBraGgMi4E5xg0ancFPJ-dpepNdA5Chb0boYDonOCv4kjyQu3TzZFkYMRIp-zc9a7cyvSN6ZoOV9Rv9u1Wtdt2t1_NvZRkuo1EVN3YbLutOWz2J93pk2522hizsr2SqpUH2SjZ7uR-LSWpDuXWbLQhtT-IraQFrVsXfdchTivLnKnftJvDYb9yqMlxXUSlviqqymLGvrpC54nFVjrLiT_rJJtcXeEvz9rnwvN3MxQFeA7ZGfAhvS9gyfxQfydvLPMqR9f_tlvrTCzUcB_r0qv_AwAA__84QXQ7">