On 10/15/13 5:09 AM, Jonathan Bernwieser wrote:
Hi there,
I am currently doing my Bachelor thesis at TU Munich, at the Software Engineering chair of Prof. Broy. The goal of this thesis is to create a tool to automatically categorize source code in open source software. Different categories will be “test code”, “generated code” and “productive code” to better evaluate and use the results of quality-check techniques. (Static analyses might detect certain quality problems even though they’re not relevant for a certain code category. One example would be the amount of clones found in a project. It has to be checked what kind of category the evaluated code belongs to as clones aren’t causing quality issues if they occur in “generated code”.)

In order to create and test heuristics to identify code categories, I first need to create manually a collection of different projects (or classes to be more specific) I actually know about what kind of category they belong to.

While manually going through the derby project I found generated files in the following directories:

·derby\derby-10.6.1.0\src\db-derby-10.6.1.0-src\java\engine\org\apache\derby\impl\sql\compile\

·derby\derby-10.6.1.0\src\db-derby-10.6.1.0-src\java\tools\org\apache\derby\impl\tools\ij\

Are there any other generated classes I didn’t recognize?

Thanks you for your help. Looking forward to hearing from you, Regards, Jonathan
Hi Jonathan,

The term "generated code" is overloaded with many meanings. This term can be applied to several kinds of code associated with Derby:

1) The code generated into the "generated" subdirectory when Derby is built. This code includes

a) The code generated by javacc from Derby's SQL dialect (found in generated/java/org/apache/derby/impl/sql/compile)

b) The code generated by javacc for Derby's ij tool (found in generated/java/org/apache/derby/impl/tools/ij)

c) Some shell scripts copied to generated/bin

d) A list of class sizes used to estimate memory usage at run time: generated/java/org/apache/derby/iapi/services/cache/ClassSizeCatalogImpl.java

e) The English message source generated by org.apache.derbyBuild.MessageBuilder from java/engine/org/apache/derby/loc/messages.xml. The English message source is generated into generated/java/org/apache/derby/loc/messages_en.properties

f) Debug information generated into generated/java/org/apache/derby/shared/common/sanity.

g) A demo database generated into generated/toursdb


2) Optimized chunks of localized message files are generated by the localeinfo target of the Derby build into files which have names of the form classes/org/apache/derby/loc/m${partitionNumber}_${languageCode}_${countryCode}.properties

3) Compiled SQL queries, which include generated Java byte code. The byte code is generated into memory in the org.apache.derby.exe package space. This byte code is generated by Derby in production. In some cases, this code is stored in an invisible column of SYS.SYSSTATEMENTS.

4) SQL text which is generated by Derby in production for certain operations like bulk import.

The generated code you have found corresponds to items (1a) and (1b) above.

Hope this helps,
-Rick

Reply via email to