Cette regex fonctionne pour moi:
(?:(?:todo|TODO)(?:\[[A-Z,a-z]+\-\d+\])?\s(\s*\b.*\b)*)|(?:\/\*\s*(?:todo|TODO)(?:\[[A-Z,a-z]+\-\d+\])?\s(?:(?!\*\/)[\s\S])*\*\/)
Il recherche essentiellement les éléments suivants:
- Un mot clé todo ou TODO éventuellement suffixé par un identifiant de ticket / problème entre parenthèses et toute quantité de caractères après un seul caractère d'espace blanc.
- Un commentaire java sur plusieurs lignes commençant par / * suivi de toute quantité d'espace blanc, puis des conditions décrites dans la description de todo sur une seule ligne ci-dessus. Il se termine une fois qu'il trouve * / dans l'une des lignes suivantes.
Exemples sur une seule ligne:
todo some very important stuff
TODO[SAOY-1376] An urgent bug fix described in the SAOY-1376
// todo some very important stuff
// TODO[SAOY-1376] An urgent bug fix described in the SAOY-1376
Exemples multilignes:
/* todo assignee or something
a very important message
another thing
*/
/* TODO[SAO-13]
* a very important message
* another thing
*/