  Technical Debt occurs when development teams favour short-term operability
over long-term stability. Since this places software maintainability at risk,
technical debt requires early attention to avoid paying for accumulated
interest. Most of the existing work focuses on detecting technical debt using
code comments, known as Self-Admitted Technical Debt (SATD). However, there are
many cases where technical debt instances are not explicitly acknowledged but
deeply hidden in the code. In this paper, we propose a framework that caters
for the absence of SATD comments in code. Our Self-Admitted Technical Debt
Identification and Description (SATDID) framework determines if technical debt
should be self-admitted for an input code fragment. If that is the case, SATDID
will automatically generate the appropriate descriptive SATD comment that can
be attached with the code. While our approach is applicable in principle to any
type of code fragments, we focus in this study on technical debt hidden in
conditional statements, one of the most TD-carrying parts of code. We explore
and evaluate different implementations of SATDID. The evaluation results
demonstrate the applicability and effectiveness of our framework over multiple
benchmarks. Comparing with the results from the benchmarks, our approach
provides at least 21.35%, 59.36%, 31.78%, and 583.33% improvements in terms of
Precision, Recall, F-1, and Bleu-4 scores, respectively. In addition, we
conduct human evaluation to the SATD comments generated by SATDID. In 1-5 and
0-5 scales for Acceptability and Understandability, the total means achieved by
our approach are 3.128 and 3.172, respectively.
