Comments Analysis and Programming Errors
IEEE Transactions on Software Engineering
C4.5: programs for machine learning
C4.5: programs for machine learning
Efficient flow-sensitive interprocedural computation of pointer-induced aliases and side effects
POPL '93 Proceedings of the 20th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Performance assertion checking
SOSP '93 Proceedings of the fourteenth ACM symposium on Operating systems principles
Points-to analysis in almost linear time
POPL '96 Proceedings of the 23rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Eraser: a dynamic data race detector for multithreaded programs
ACM Transactions on Computer Systems (TOCS)
Foundations of statistical natural language processing
Foundations of statistical natural language processing
Quickly detecting relevant program invariants
Proceedings of the 22nd international conference on Software engineering
Protecting privacy using the decentralized label model
ACM Transactions on Software Engineering and Methodology (TOSEM)
Bugs as deviant behavior: a general approach to inferring errors in systems code
SOSP '01 Proceedings of the eighteenth ACM symposium on Operating systems principles
A system and language for building system-specific, static analyses
PLDI '02 Proceedings of the ACM SIGPLAN 2002 Conference on Programming language design and implementation
Machine Learning
Summarizing scientific articles: experiments with relevance and rhetorical status
Computational Linguistics - Summarization
The effect of modularization and comments on program comprehension
ICSE '81 Proceedings of the 5th international conference on Software engineering
Pi: A Path Identification Mechanism to Defend against DDoS Attacks
SP '03 Proceedings of the 2003 IEEE Symposium on Security and Privacy
Performance debugging for distributed systems of black boxes
SOSP '03 Proceedings of the nineteenth ACM symposium on Operating systems principles
RacerX: effective, static detection of race conditions and deadlocks
SOSP '03 Proceedings of the nineteenth ACM symposium on Operating systems principles
A cross-collection mixture model for comparative text mining
Proceedings of the tenth ACM SIGKDD international conference on Knowledge discovery and data mining
CMC: a pragmatic approach to model checking real code
OSDI '02 Proceedings of the 5th symposium on Operating systems design and implementationCopyright restrictions prevent ACM from being able to make the PDFs for this conference available for downloading
Proceedings of the 10th European software engineering conference held jointly with 13th ACM SIGSOFT international symposium on Foundations of software engineering
MSR '05 Proceedings of the 2005 international workshop on Mining software repositories
Examining the evolution of code comments in PostgreSQL
Proceedings of the 2006 international workshop on Mining software repositories
Data Mining: Practical Machine Learning Tools and Techniques, Second Edition (Morgan Kaufmann Series in Data Management Systems)
Debugging operating systems with time-traveling virtual machines
ATEC '05 Proceedings of the annual conference on USENIX Annual Technical Conference
Pulse: a dynamic deadlock detection mechanism using speculative execution
ATEC '05 Proceedings of the annual conference on USENIX Annual Technical Conference
SafeDrive: safe and recoverable extensions using language-based techniques
OSDI '06 Proceedings of the 7th USENIX Symposium on Operating Systems Design and Implementation - Volume 7
From uncertainty to belief: inferring the specification within
OSDI '06 Proceedings of the 7th USENIX Symposium on Operating Systems Design and Implementation - Volume 7
The necessity of syntactic parsing for semantic role labeling
IJCAI'05 Proceedings of the 19th international joint conference on Artificial intelligence
Developing natural language-based program analyses and tools to expedite software maintenance
Companion of the 30th international conference on Software engineering
SNIFF: A Search Engine for Java Using Free-Form Queries
FASE '09 Proceedings of the 12th International Conference on Fundamental Approaches to Software Engineering: Held as Part of the Joint European Conferences on Theory and Practice of Software, ETAPS 2009
Improving API documentation usability with knowledge pushing
ICSE '09 Proceedings of the 31st International Conference on Software Engineering
Listening to programmers Taxonomies and characteristics of comments in operating system code
ICSE '09 Proceedings of the 31st International Conference on Software Engineering
Analyzing the co-evolution of comments and source code
Software Quality Control
Detecting large-scale system problems by mining console logs
Proceedings of the ACM SIGOPS 22nd symposium on Operating systems principles
Extracting paraphrases of technical terms from noisy parallel software corpora
ACLShort '09 Proceedings of the ACL-IJCNLP 2009 Conference Short Papers
Expect the unexpected: error code mismatches between documentation and the real world
Proceedings of the 9th ACM SIGPLAN-SIGSOFT workshop on Program analysis for software tools and engineering
Applications of data mining in software engineering
International Journal of Data Analysis Techniques and Strategies
Proceedings of the sixth conference on Computer systems
Do time of day and developer experience affect commit bugginess?
Proceedings of the 8th Working Conference on Mining Software Repositories
Do comments explain codes adequately?: investigation by text filtering
Proceedings of the 8th Working Conference on Mining Software Repositories
aComment: mining annotations from comments and code to detect interrupt related concurrency bugs
Proceedings of the 33rd International Conference on Software Engineering
An empirical study on evolution of API documentation
FASE'11/ETAPS'11 Proceedings of the 14th international conference on Fundamental approaches to software engineering: part of the joint European conferences on theory and practice of software
Canadian AI'11 Proceedings of the 24th Canadian conference on Advances in artificial intelligence
Proceedings of the 19th ACM SIGSOFT symposium and the 13th European conference on Foundations of software engineering
Inferring specifications for resources from natural language API documentation
Automated Software Engineering
BLR-D: applying bilinear logistic regression to factored diagnosis problems
SLAML '11 Managing Large-scale Systems via the Analysis of System Logs and the Application of Machine Learning Techniques
Configuration coverage in the analysis of large-scale system software
PLOS '11 Proceedings of the 6th Workshop on Programming Languages and Operating Systems
Configuration coverage in the analysis of large-scale system software
ACM SIGOPS Operating Systems Review
BLR-D: applying bilinear logistic regression to factored diagnosis problems
ACM SIGOPS Operating Systems Review
Iterative mining of resource-releasing specifications
ASE '11 Proceedings of the 2011 26th IEEE/ACM International Conference on Automated Software Engineering
Mining effective temporal specifications from heterogeneous API data
Journal of Computer Science and Technology - Special issue on Natural Language Processing
Characterizing logging practices in open-source software
Proceedings of the 34th International Conference on Software Engineering
A history-based matching approach to identification of framework evolution
Proceedings of the 34th International Conference on Software Engineering
Rule-based assignment of comments to AST nodes in C++ programs
Proceedings of the Fifth Balkan Conference in Informatics
What should developers be aware of? An empirical study on the directives of API documentation
Empirical Software Engineering
Software—Practice & Experience
Automatically mining software-based, semantically-similar words from comment-code mappings
Proceedings of the 10th Working Conference on Mining Software Repositories
Inferring project-specific bug patterns for detecting sibling bugs
Proceedings of the 2013 9th Joint Meeting on Foundations of Software Engineering
Detecting API documentation errors
Proceedings of the 2013 ACM SIGPLAN international conference on Object oriented programming systems languages & applications
On death, taxes, and sleep disorder bugs in smartphones
Proceedings of the Workshop on Power-Aware Computing and Systems
Data & Knowledge Engineering
WHYPER: towards automating risk assessment of mobile applications
SEC'13 Proceedings of the 22nd USENIX conference on Security
Hi-index | 0.00 |
Commenting source code has long been a common practice in software development. Compared to source code, comments are more direct, descriptive and easy-to-understand. Comments and sourcecode provide relatively redundant and independent information regarding a program's semantic behavior. As software evolves, they can easily grow out-of-sync, indicating two problems: (1) bugs -the source code does not follow the assumptions and requirements specified by correct program comments; (2) bad comments - comments that are inconsistent with correct code, which can confuse and mislead programmers to introduce bugs in subsequent versions. Unfortunately, as most comments are written in natural language, no solution has been proposed to automatically analyze commentsand detect inconsistencies between comments and source code. This paper takes the first step in automatically analyzing commentswritten in natural language to extract implicit program rulesand use these rules to automatically detect inconsistencies between comments and source code, indicating either bugs or bad comments. Our solution, iComment, combines Natural Language Processing(NLP), Machine Learning, Statistics and Program Analysis techniques to achieve these goals. We evaluate iComment on four large code bases: Linux, Mozilla, Wine and Apache. Our experimental results show that iComment automatically extracts 1832 rules from comments with 90.8-100% accuracy and detects 60 comment-code inconsistencies, 33 newbugs and 27 bad comments, in the latest versions of the four programs. Nineteen of them (12 bugs and 7 bad comments) have already been confirmed by the corresponding developers while the others are currently being analyzed by the developers.