「Watch Words」の無効な正規表現により、どのWatch Wordも機能しません

監視ワードの正規表現 設定を有効にすると、無効な正規表現が特定の監視ワードカテゴリ全体を機能不全に陥らせます。

再現手順

  1. 「監視ワードの正規表現」を有効にします。
  2. 「承認が必要」に監視ワードパターンを追加します(例:same issue)。
  3. 無効な監視ワードパターンを追加します(例:*ban*。これは正規表現を有効にする前にワイルドカードを含む監視ワードを持っていた場合に該当します)。
  4. 「same issue」を含む投稿が承認キューをスキップし、「テスト」フォームでも無視されることに注意してください。
  5. 無効な監視ワードを削除します。
  6. 「same issue」が正しく一致するようになったことを確認してください。

再現手順(より深刻なケース):

  1. 「監視ワードの正規表現」と「タグ」を有効にします。
  2. 「タグ」に無効な監視ワードパターンを追加します(例:*tebex.io*paid)。
  3. 新しいトピックを投稿しようとします。これにより「Error 500」が返され、/logs に以下の結果が表示されます:
RegexpError (target of repeat operator is not specified: /*tebex.io*/)
app/services/word_watcher.rb:116:in `initialize'
app/services/word_watcher.rb:116:in `new'
app/services/word_watcher.rb:116:in `matches?'
lib/topic_creator.rb:184:in `block in setup_tags'
lib/topic_creator.rb:183:in `each'
lib/topic_creator.rb:183:in `setup_tags'
lib/topic_creator.rb:46:in `create'
lib/post_creator.rb:501:in `create_topic'

補足

正規表現が無効な場合でも、例えば / ブロックで囲まれていれば、ワイルドカードと同様に有効な正規表現の入力を許可するとよいと思います。特に、既存の監視ワードにワイルドカードが含まれている場合、この切り替えが深刻な問題を引き起こす可能性があるためです。

「いいね!」 3

うーん、ここに何か保護を追加できるかな @sam

これがサイト設定の奥にあるのには理由があるんだ @blattersturm – 何をしているか理解している必要があるからね… 正規表現はかなり危険なんだ。

「いいね!」 1

設定を変更する前に、監視ワードがゼロであることが必要かもしれませんね、@nbianca さん?

変更を試みて監視ワードがある場合、すべて削除するよう案内しますか?

「いいね!」 3