Author:admin

Date:2014-06-04T00:14:45.000000Z


git-svn-id: https://svn.eiffel.com/eiffel-org/trunk@1371 abb3cda0-5349-4a8f-a601-0c33ac3a8c38
This commit is contained in:
jfiat
2014-06-04 00:14:45 +00:00
parent 077caee92b
commit 8554a25dbb
13 changed files with 421 additions and 6 deletions

View File

@@ -17,10 +17,12 @@ You can get details of the usage and options of the '''ec''' command by executin
The usage and options display gives you information about which options are valid in a particular command context. Use this display along with the table below to choose the options that meet your needs.
Usage and options of the command line compiler vary from version to version in order to accommodate new and changed features. Here is an example of the command line help from version 6.7 of EiffelStudio:
Usage and options of the command line compiler vary from version to version in order to accommodate new and changed features. Here is an example of the command line help from the latest version of EiffelStudio:
<code lang="text">
Usage:
ISE EiffelStudio version 14.05.9.5158 GPL Edition - win64
Usage:
ec [-help | [-compat | -experiment] | -version | -full
-batch | -clean | -verbose | -use_settings |
-freeze | -finalize [-keep] | -precompile [-finalize [-keep]] | -c_compile |
@@ -29,6 +31,7 @@ Usage and options of the command line compiler vary from version to version in o
-flatshort [-filter filtername] [-all | -all_and_parents | class] |
-flat [-filter filtername] [-all | -all_and_parents | class] |
-short [-filter filtername] [-all | -all_and_parents | class] |
-pretty input_filename [output_filename] |
-filter filtername [-all | class] |
-descendants [-filter filtername] class |
-ancestors [-filter filtername] class |
@@ -37,11 +40,12 @@ Usage and options of the command line compiler vary from version to version in o
-implementers [-filter filtername] class feature |
-callers [-filter filtername] [-show_all] [-assigners | -creators] class feature |
-callees [-filter filtername] [-show_all] [-assignees | -creators] class feature |
[-config config.ecf | -target target |
(obsolete) -ace Ace | (obsolete) -project Project_file_name] |
[[-config config.ecf] [-target target] |
-ace Ace (obsolete) | -project Project_file_name (obsolete)] |
[class_file.e [-library library_name]] |
-stop | -no_library |
-project_path Project_directory_path | -file File |
-code-analysis [-cadefaults | -caloadprefs pref_file | -caclasses class ...] |
-gc_stats]
Options:
@@ -59,6 +63,7 @@ Options:
-clients: show the clients of a class.
-compat: enable pre-attached type compatibility.
-config: specify the configuration (ECF) file.
-debug: debug the system as a command loop.
-descendants: show the descendants of a class.
-dversions: show the descendant versions of a feature.
-experiment: enable experimental functionalities.
@@ -77,9 +82,9 @@ Options:
-loop: run ec as a command loop.
-melt: melt the system.
-no_library: do not convert clusters into libraries.
-options: debug the system as a command loop.
-overwrite_old_project: overwrite any existing old project.
-precompile: precompile the system.
-pretty: show the pretty form of a class.
-project: specify the project file to load (obsolete).
-project_path: specify the compilation directory.
-quick_melt: quick melt the system.
@@ -176,6 +181,18 @@ To produce documentation for a view other than ''Text'', use its option in the c
ec -flatshort -filter html-stylesheet -all -config application.ecf
</code>
==Commands for Eiffel Inspector==
To start the Eiffel Inspector you need to pass the '''-code-analysis''' command line options. If no other options are given, it will analyze the whole system. To specify some preferences or analyze part of a system, you will need to provide some more options described below:
<code lang="text">
ec -config project.ecf -code-analysis [-cadefaults | -caloadprefs pref_file | -caclasses class ...]
</code>
; -cadefaults : If provided, all preferences regarding the analysis will be reset to their default values (before the analysis is run). For example this leads to enabling all rules that are enabled by default, no matter whether they have been disabled before.
; -caloadprefs : Use preferences from ''pref_file'', an XML file containing the code analysis preferences. ''pref_file'' can be generated by exporting the current preferences in the GUI.
; -caclass : Followed by a list of class names (without file extension ''.e'') of the classes that shall be analyzed. If omitted then the whole system will be analyzed.
==Command options==

View File

@@ -0,0 +1,63 @@
[[Property:title|Major changes between ISE Eiffel 13.11 and ISE Eiffel 14.05]]
[[Property:link_title|14.05]]
[[Property:weight|8]]
[[Property:uuid|a901f880-4f88-f889-4880-d3687b6939b1]]
==What's new==
* Syntax warnings are now reported for unsupported empty lists such as (), or [], or {}, as well as an empty export clause `export {NONE} end'.
* Added ability to extract the file location of a class in interactive mode.
==Improvements==
* Made workbench code more compact and faster by about 5 to 9% on average.
* Improved memory tool to list all fields of an object.
* Better command line usage that will report why the command line is incorrect instead of displaying the whole help.
* Compiler is now more robust if some required routines/classes are not found as expected by the compiler. It will now report a Library_error error instead of failing.
* Now the compiler reports all VWEQ warnings as before it was only doing it if you were comparing an expanded with a reference.
==Changes==
* In circa 2000, we allowed $x and $(expr) as expression instead of just argument passing. But while this was good for just $x, $(expr) is actually not supported properly in the code generation. In 14.05, we have disallowed $(expr) outside argument passing.
* In workbench mode, if the melted file cannot be found, instead of exiting the application, the application will run as if it had never been melted and will instead print a warning in the console.
==Bug fixes==
===Language issues===
===Compiler issues===
* test#anchor071 - Fixed computation of a qualified anchored type that involves a formal generic parameter and feature redeclaration in a descendant of the formal generic constraint.
* test#anchor077 - Fixed a compiler crash when analyzing the following qualified anchored type '''like x.f''' where f is defined as '''f: like y.z.w'''.
* bug#16991 (test#anchor056) - Fixed a bug that might cause the compiler to report an unknown feature in a qualified anchored type with a formal generic qualifier constrained only by formal generic types.
* test#anchor070 - Fixed a bug that might cause a compiler crash when nested qualified anchored types with a longer feature chain were involved in qualifiers of other qualified anchored types.
* bug#16983 (test#anchor055), bug#17034 (test#anchor057) - Fixed a bug that caused a crash when compiling code with a creation of an object of a qualified anchored type with a formal generic.
* bug#17239 (test#term198) - Fixed a bug that caused a crash when compiling the code that used an inline agent as an iteration expression.
* bug#17233 (test#term196) - Supported iteration on an expression of a formal generic type.
* bug#18759 (test#iteration004) - Changed processing of {ITERABLE}.new_cursor to use a renamed version of the feature in a descendant class rather than the feature having this name.
* test#config028, test#config029 and test#config038 - Fixed a crash when using a cluster/library with an invalid path.
* Fixed a long standing bug where descriptions in external nodes were lost.
* Fixed an issue with interactive mode where displaying all classes was actually not display classes which are part of a recursive cluster.
* bug#18758 (test#anchor073, test#anchor074, and test#anchor059) - Fixed some improper handling of qualified anchors.
* test#anchor050 - Fixed an issue on .NET where the compiler would not properly handle '''like {X}.f'''.
* test#anchor065 - Fixed a compiler crash when processing '''like {G}.value'''.
* Fixed a bug in the interactive mode of the compiler that was preventing the display of classes that belong to a folder of a cluster.
* test#valid265 - Fixed a bogus compilation error when the type of a variant expression is of an anchored type when it should have accepted it.
* bug#18824 (test#anchor075) - Fixed a compiler crash in .NET code generation where '''like {X}.dotnet_query''' would crash the compiler at degree 3.
* text#catcall013 - Fixed an issue with catcall checking which would crash the compiler in the specific case where a type used as argument has some conversion routines.
* Fixed bug#18855 where we used the wrong constant to display the command switch for the `-debug' option.
===SCOOP issues===
===Runtime/code generation issues===
* test#exec341 - Fixed a crash at runtime when performing an assignment using an object-less call, e.g. '''{EXT}.fea := bar'''.
* Fixed a regression that caused a C compilation error after removing a type from the system.
* bug#18758 (test#anchor072) - Fixed crash which only affected .NET code generation of qualified anchor types.
* test#anchor018, test#anchor050, test#anchor054, test#anchor056, test#anchor059, test#anchor063 and other tests - Fixed a code generation issue on .NET where some incorrect casts where generated causing an exception at runtime when the code is actually ok.
* test#freez022 - Fixed a missing conversion at runtime when formal argument type is an anchor.
* Fixed CECIL library creation to take into account the new memory_analyzer.o and offset.o modules of the runtime.
* bug#18785 (test#ccomp089) - Fixed a code generation issue for Linux 32-bit for the generation of the value of NaN, +Infinity and -Infinity for floating numbers.
===Store/Retrieve issues===
* Fixed an issue where retrieving a large amount of objects on a x86 platform, we would crash where restoring one of the store/retrieve stack using ''epop''.
* bug#18835 - Fixed a potential overflow issue with store/retrieve when you have more than 2^31 objects.

View File

@@ -0,0 +1,19 @@
[[Property:title|Eiffel Inspector - Analyzing Results]]
[[Property:link_title|Analyzing Results]]
[[Property:weight|-13]]
[[Property:uuid|e4670791-7885-b9a0-6a1c-0d9611eb5f5d]]
= Sorting and Filtering =
The list of rule violations can be sorted by any column by clicking on its header. Click it again to switch the sorting direction. You can hide and show errors, warnings, suggestions, and hints by clicking the corresponding toggle buttons in the middle of the toolbar. Typing in the text field on the right side of the panel toolbar filters the results. The filter takes into consideration the title, the ID, the affected class, and the description of the rule. It is a live filter that filters while you are typing. Press the button on the right of the text field to clear the filter and display again all violations.
[img_assist|nid=2645|title=The results of code analysis as a list of rule violations (example)|desc=|link=node|align=center|width=978|height=361]
= Navigating Through the Results =
In the list of rule violations, formatted elements like classes and features are clickable and draggable like anywhere else. In order to navigate to a specific rule violation just double-click the corresponding row. The corresponding class will be opened (if needed) and the cursor will jump to the exact location of the rule violation (some violations do not have an exact location because they refer to a whole class). You can also navigate through the results using the '''Go to next rule violation''' and '''Go to previous rule violation''' buttons on the right side of the panel toolbar.
= Fixing Rule Violations =
[img_assist|nid=2654|title=Fixing a rule violation.|desc=|link=node|align=center|width=484|height=79]
Some violations provide automatic fixing. Right-clicking the corresponding row in the tool panel opens a context menu where you can choose from one or more possible fixes. When you click on ''Fix: ...'' the source code will be adapted and the project will be recompiled.

View File

@@ -0,0 +1,51 @@
[[Property:title|Eiffel Inspector - Customization]]
[[Property:link_title|Customization]]
[[Property:weight|-12]]
[[Property:uuid|ed86093e-fed0-04b8-6fd4-b05d5de849fc]]
= General Preferences =
The ''Preferences'' button in the toolbar opens a dialog containing all preferences for the Eiffel Inspector. There you can enable and disable all rules of a certain severity, you can choose colors for the results, and there are many preferences that control the behavior of individual rules.
[img_assist|nid=2651|title=Preferences|desc=|link=node|align=center|width=640|height=460]
= Rule-specific Preferences =
The rule-specific preferences are located in the ''Rules'' subfolder. Two preferences can be found for every rule: ''Enabled/disabled'' and the ''severity score''. Some rules have additional integer or boolean preferences like thresholds.
[img_assist|nid=2652|title=Rule-specific Preferences|desc=|link=node|align=center|width=572|height=268]
= Exporting and Importing Preference Profiles =
Using the buttons in the preferences dialog one can export these preferences to an XML file or import them. This can be used for creating profiles that stretch across multiple machines. Just set the desired preferences on one machine, export them to a file, distribute this file, and import it.
{{note| The Eiffel Inspector preferences are separate from the general EiffelStudio preferences. Pressing ''Restore Defaults'', ''Import ...'', or ''Export ...'' ''only'' affects preferences for the Eiffel Inspector.''}}
= Class Options =
There are cases in which you might want to customize the Eiffel Inspector for ''parts of your code'' only. The Eiffel Inspector provides a way to set options ''per class''. You can exclude a class from being checked by certain rules. Also you can declare a class to be a ''library'' or a ''non-library'' class. All class-wide options for the Eiffel Inspector are set in the ''note clause'' (after the <e>note</e> keyword).
== Library and Non-Library Classes ==
If the programmer uses the default values then a rule checks all classes. But a rule can be defined (hard-coded) not to check either ''library'' or ''non-library'' classes. How does the Eiffel Inspector now know which classes are ''library'' classes and which classes are ''non-library'' classes? This is defined by the user. If, for a certain class, the user does ''not'' define anything then the class will be analyzed in every case. Only if the user declares a class to be a ''library'' class then this class will not be checked by a rule that has disabled checking library classes. The same goes for classes that are declared as ''non-library''.
* To declare a class to be a ''library'' class add <e>ca_library : "true"</e> to the (top or bottom) indexing clause.
* To declare a class to be a ''non-library'' class add <e>ca_library : "false"</e> to the (top or bottom) indexing clause.
<e>note
ca_library: true
class TEST
end
</e>
== Classes Ignored by Rules ==
You can declare a class to be ''ignored'' by certain rules, which is equivalent to saying that some rules shall be ''disabled'' for a class.
To let a class be ignored by certain rules, add the <e>ca_ignoredby</e> tag to the (top or bottom) note clause. Then put all the relevant ''rule IDs'' separated by commas in the content. It may look like this:
<e>note
ca_ignoredby : "CA005, CA092"
class TEST
end</e>

View File

@@ -0,0 +1,17 @@
[[Property:title|Eiffel Inspector - Getting Started]]
[[Property:link_title|Getting Started]]
[[Property:weight|-15]]
[[Property:uuid|81ae12fd-f643-c5ba-825c-7750929f6978]]
==Eiffel Inspector Tool==
After opening an existing project with EiffelStudio, go to View->Tools->Eiffel Inspector to show the tool. It will look like this:
[img_assist|nid=2643|title=Eiffel Inspector - Tool Panel|desc=The Inspector Eiffel tool panel before the analysis.|link=node|align=center|width=1119|height=324]
== A Simple Analysis ==
Press the '''Analyze System''' button. If needed, the system will be compiled now. A successful compilation is required for the Eiffel Inspector to run. After a successful compilation the analysis will start and will check all classes of your system. The status bar shows the progress by displaying the class currently being analyzed. As soon as the analysis is complete, results will show up in the panel as a list of ''rule violations''.
[img_assist|nid=2645|title=Eiffel Inspector - Simple Analysis|desc=The results of code analysis as a list of rule violations (example).|link=node|align=center|width=978|height=361]
A double-click on a row will update the EiffelStudio editor to go to the position in the code where the issue lies. You may expand the row to see more details.

View File

@@ -0,0 +1,23 @@
[[Property:title|CA001 - Self Assignment]]
[[Property:link_title|CA001]]
[[Property:weight|0]]
[[Property:uuid|d98b7fb8-37a1-05b3-a58f-baacefd5dce6]]
__NOTOC__
=Description=
Assigning a variable to itself is a meaningless instruction due to a typing error. Most probably, one of the two variable names was misspelled. One example among many others: the programmer wanted to assign a local variable to a class attribute and used one of the variable names twice.
=Details=
*Scope: Instruction
*Enabled: Yes
*Severity: Warning
*Applicability: All
*Score: 70
=Example=
<e>a := a</e>
=Suggested Fix=
Replace source or target with proper expression.
{{SeeAlso | [[CA071 - Self-comparison]]}}

View File

@@ -0,0 +1,25 @@
[[Property:title|CA071 - Self-comparison]]
[[Property:link_title|CA071]]
[[Property:weight|0]]
[[Property:uuid|02a649b3-0e4e-6fdf-388d-c411a06fc787]]
__NOTOC__
=Description=
An expression comparing a variable to itself always evaluates to the same boolean value. The comparison is thus redundant. In an Until expression it may lead to non-termination. Usually it is a typing error.
=Details=
*Scope: Instruction
*Enabled: Yes
*Severity: Warning
*Applicability: All
*Score: 70
=Example=
<e>if a >= a then
...
end</e>
=Suggested Fix=
Replace left or right-hand side of comparison with proper expression.
{{SeeAlso | [[CA001 - Self Assignment]]}}

View File

@@ -0,0 +1,6 @@
[[Property:title|Eiffel Inspector - Rules]]
[[Property:link_title|Rules]]
[[Property:weight|15]]
[[Property:uuid|109ca62a-212d-8a85-eea8-ddf0f89177a1]]

View File

@@ -0,0 +1,68 @@
[[Property:title|Eiffel Inspector - Running the Analyzer]]
[[Property:link_title|Running the Analyzer]]
[[Property:weight|-14]]
[[Property:uuid|d672c769-57fb-6b87-2781-83daff3ab9e7]]
= General =
There are several different ways of running the Eiffel Inspector. Most importantly, you can select the scope of the analysis. For example it is possible to analyze a single class, a cluster or a whole system. Also for the same scope there are different ways of running the analyzer depending on your personal preferences. To perform the analysis the Eiffel system which will be analyzed must compile without any error.
There are two ways of running the Eiffel Inspector
# Using the GUI, the Eiffel Inspector Tool appears as a panel. The panel is mainly used for displaying analysis results. The command to perform the analysis can be found not only in the panel but also in various context menus making it easy to analyze specific classes or sets of classes.
# Using command-line arguments with the command-line version of EiffelStudio. The system is compiled (if necessary) and then analyzed. The output of the analysis will be directed to the terminal window.
= GUI =
== Analyzing the System ==
If you want to analyze the whole system of the currently open project press the '''Analyze System''' button in the toolbar. Every compiled classes of the system will be analyzed.
[img_assist|nid=2647|title=Analyze System|desc=|link=node|align=center|width=368|height=84]
== Analyzing a Class or Group ==
=== Current Class ===
Left-clicking the '''Analyze Item''' button in the toolbar will start an analysis of the class that is currently opened in the editor.
[img_assist|nid=2647|title=Analyze Item|desc=|link=node|align=center|width=368|height=84]
=== Any Class ===
There are two ways of analyzing an arbitrary class (either from your system or from a library):
* Right-click on a class name and select '''Run Eiffel Inspector on Class...''' from the context menu:
[img_assist|nid=2648|title=Class Context Menu|desc=|link=node|align=center|width=371|height=487]
* Pick a class and drop it on the '''Analyze Item''' button.
=== Clusters ===
To analyze a cluster there are two possibilities, like for classes:
* You can either right-click the cluster and select '''Run Eiffel Inspector on cluster''' from the context menu:
[img_assist|nid=2649|title=Cluster Context Menu|desc=|link=node|align=center|width=247|height=220]
* Pick a cluster and drop it on the '''Analyze Item''' button.
=== Others ===
Not only clusters but any other elements of a project (such as a library) can be analyzed by pick-and-dropping it on the '''Analyze Item''' button in the panel.
=Command Line=
The Eiffel Inspector is also available from the EiffelStudio command line compiler by using the '''-code-analysis''' command. The results will be displayed in the terminal window or to a file.
== Execution / Command Line Options ==
The following command will perform a code analysis:
ec.exe -config project.ecf -code-analysis [-cadefaults] [-caloadprefs ''preffile''] [-caclass ''CLASS1 CLASS2 ...'']
The arguments in brackets are optional. For a complete description of the Eiffel inspector command line options see [[EiffelStudio: Using command line options|Using command line compiler options]].
EiffelStudio will try to compile the system if needed. The analysis will only work with syntactically correct code and a compiled system. Should the compilation fail, EiffelStudio will abort and the analysis will not start.
== Output ==
Upon a successful compilation either the whole system or the classes mentioned in the arguments will be analyzed. The class that is currently being analyzed will be displayed so that the user can follow the progress.
As soon as everything needed has been analyzed the results will be displayed as a list of rule violations. These rule violations are sorted by class and by location. In addition to the name of the violated rule and the rule ID, a description of the concrete violation will be displayed as well.
[img_assist|nid=2650|title=Eiffel Inspector - Command Line|desc=|link=node|align=center|width=640|height=627]
=== Output to file ===
Appending "> ''filename''" to the command above will redirect the output to a text file.
In addition, a file '''last_analysis_result.csv''' will be saved in the current working directory with the same content as '''filename''' that can be processed by a spreadsheet tool.

View File

@@ -0,0 +1,6 @@
[[Property:title|Eiffel Inspector]]
[[Property:weight|-9]]
[[Property:uuid|3d9edb08-a7dd-7df9-2b1e-b5c30add6529]]
The Inspector Eiffel is a static analyzer that will help maintain a high code quality. It is capable of detecting many different kinds of issues in the source code. These issues relate to possibly dangerous run-time behavior, performance problems, coding style, and more.

View File

@@ -0,0 +1,95 @@
[[Property:title|Release notes for EiffelStudio 14.05]]
[[Property:link_title|14.05]]
[[Property:weight|8]]
[[Property:uuid|f82eb6d2-c4ee-7243-7295-80dcdc584db7]]
==Graphical environment==
===What's new===
* ''' [[Eiffel Inspector]]''': A static analysis tool to help you maintain a high code quality. Currently there are 35 rules that can detect coding style, performance, or runtime issues.
* '''Automatic Fixing''': EiffelStudio can fix some class of errors automatically. Currently we fix unused local variables and missing types to the declaration of local variables.
* Added support for SSL to EiffelNet.
===Improvements===
* Made sure to show the groups content very early in the compilation process.
* Reduced size of project file in EIFGENs directory to speed up loading and saving of Eiffel projects after each compilation.
* Better handling of multiple monitor to ensure EiffelStudio is opened on the same screen as it was at last launch.
* AutoTest: Made it possible to run test cases outside of the AutoTest framework by simply calling them from a normal class.
* compile_all: Made it easier to compile a project for the various platforms we support. This is done by using the new '''-platform''' option where a platform name can be either ''unix'', ''windows'', ''macintosh'', or ''vxworks''. If you suffix the platform name with '''!''' it will only compile projects that are sets for this platform. If a project specify a platform and the '''-platform''' has been set and is different, the project will be ignored.
===Changes===
* Support for .ACE and .EPR files have been dropped from EiffelStudio. A tool '''ace2ecf''' is now available to convert .ACE to .ECF if needed.
* AutoTest: EiffelStudio will never saved generated test classes in the EIFGENs directory, user will have to specify a directory. This is to avoid losing tests after deleting an EIFGENs directory.
* New created projects are set to the complete void-safety level.
===Bug fixes===
* Fixed slow formatting of classes/features after editing the corresponding class.
* Made sure to show the feature comment when showing the contracts during code completion.
* Fixed improper display of conditions in task and external nodes of the Eiffel Project Settings dialog.
* Fixed an issue with preferences where setting them to a value, you will never be able to set it back to its default value.
* Fixed an editor issue where saving a class would force a refresh of the editor instead of just saving.
* Fixed an editor where copy/pasting code containing new lines with some leading tabs, the cursor would be improperly positioned after pasting.
* Fixed crash when searching for a feature while the editor hasn't finished loading (bug#18792, bug#18501, and bug#17626)
* Fixed wrong newline characters on Windows when creating a new class from our templates.
* Fixed the "Evaluator Died" error when running AutoTest on Unix systems (bug#18078).
* Prevented a crash when trying to run AutoTest and no executable is present (e.g. case of compiling a project as a library instead of as an application) (bug#18838).
* Fixed crash when you start running a test that was just renamed it (bug#18686).
==Compiler==
* Click [[Major changes between ISE Eiffel 13.11 and ISE Eiffel 14.05|here]] for the compiler release notes.
==Debugger==
N/A
==EiffelBuild==
* Click [[EiffelBuild Version History|here]] for the EiffelBuild release notes.
==Libraries==
===General===
Most libraries do now compile in the highest level of void-safety except the following ones:
* docking
* editor
* edk
* graph
* memory_analyzer
===Arguments ===
* Changed the default display of help by showing first the option arguments and then the non-switched arguments.
===Base===
* Added <e>{READABLE_STRING_GENERAL}.is_whitespace</e> and <e>{READABLE_STRING_GENERAL}.is_substring_whitespace</e>.
* Added <e>epsilon</e> and <e>machine_epsilon</e> queries as requested by users in REAL_32 and REAL_64.
* Added missing <e>min_value</e> and <e>max_value</e> from the .NET version of REAL_32 and REAL_64.
* Removed obsolete feature <e>{TUPLE}.make</e>.
* Fixed <e>{FILE_UTILITIES}.files_end_with</e> to respect the depth level specified in argument.
* Fixed issues with the handling of the Unicode escape character. If the escaped UTF-32 string contains the escape sequence and it is trying to escape something that could fit the UTF-16 or UTF-8 encoding, then we store the content as is. This is to avoid the case for UTF-16 where if you have: '''?61''' it would yield '''a''' after round-tripping. Now if the UTF-16 or UTF-8, contains the escape character, the resulting string would have it twice, which again preventing proper roundtriping.
===Regexp===
* Renamed CHARACTER_SET and BYTE_CODE into PCRE_CHARACTER_SET and PCRE_BYTE_CODE to avoid name conflicts with libraries that have the same class names.
===Ribbon===
* Added ability to assign hot keys to ribbon elements.
===Store===
* Improved the behavior of storing binary data by not imposing the user to convert its binary stream to hexadecimal in the case of stored procedures and prepared statements. This is a breaking change as now it will store whatever you provide as is. For traditional SQL statements it remains the same and binary data needs to be converted.
* Better handling of conversion of REAL_32 and REAL_64 to decimal when the associated column is a decimal.
* Removed precondition <e>is_allocatable</e>, <e>descriptor_available</e>, or <e>descriptor_is_available</e> to many EiffelStore routines. If a descriptor cannot be allocated, the execution of the routine will fail and an error code and message will be reported.
* Fixed issue with ODBC when storing large strings when using a prepared statement or a stored procedure, only the first 4000 bytes would be stored.
* Fixed issue with ODBC when storing a string into a binary column of the database which would fail with a mismatch.
* Fixed issue when the length of a table or column name is more than 50 characters.
* Fixed issue with ODBC where a large ASCII data would have their first byte missing.
* Added support for handling NULL values in a database using ODBC when using a mapping in DB_SELECTION, DB_DYN_SELECTION, DB_CHANGE or DB_DYN_CHANGE.
===Vision2===
* [[Revisions and Bug Fixes|Click here for EiffelVision2 release notes.]]
===WEL===
* Optimized performance of <e>WEL_RICH_EDIT_BUFFER_SAVER</e>.
* Fixed issue in <e>{WEL_STRING}.set_string_with_newline_conversion</e> with Unicode characters above the 65535 range, the result of the conversion to UTF-16 requires more space and when you have to replace %N into %R%N we forgot to resize the content before inserting the %R%N characters.
* Fixed issue in <e>{WEL_STRING}.set_string_with_newline_conversion</e> where if the input string had only one character after the last %N, that character would be discarded. That is to say "%Na" would yield "%R%N" instead of "%R%Na" (bug#18783).
* Fixed incorrect signatures for the wrapping of PostMessage, GetCurrentProcessId and GetWindowThreadProcessID which do not return a pointer but an integer type.
===XML===
* Fixed XML parser when the input file is exactly the same size as the xml file input stream chunk size (default 4096 bytes).
[[EiffelStudio release notes|Click here to check out what was new in other versions]]

View File

@@ -1,7 +1,7 @@
[[Property:title|EiffelBuild Version History]]
[[Property:weight|2]]
[[Property:uuid|8cc0540e-8ee7-c005-0534-a2ed62f41c96]]
==13.11 Release==
==14.05 and 13.11 Release==
No changes.
== 7.3 Release ==

View File

@@ -3,6 +3,31 @@
[[Property:uuid|eb11a237-0c75-0427-452a-303d4f276b97]]
This document contains details of modifications and bug fixes to the EiffelVision 2 library listed by the release version of EiffelStudio. All bug fixes and modifications are relative to the previously released version
==EiffelStudio 14.05==
'''Improvements'''
* Made it possible to query <e>{EV_TEXT_COMPONENT}.start_selection</e> and <e>{EV_TEXT_COMPONENT}.end_selection</e> even if there is no selection. In that case they return the same value which is the caret position.
* Created a set of classes to make it easier to develop AutoTest tests for code based on Vision2.
'''Changes'''
* Made <e>{EV_TEXT_COMPONENT}.selection_start</e> and <e>{EV_TEXT_COMPONENT}.selection_end</e> obsolete because '''selection_end''' was returning a character position and not a caret position which is counter-intuitive since '''set_selection''' is using caret positions. Introduced '''start_selection''' and '''end_selection''' instead that return the selection start and end in caret positions.
'''Bug fixes'''
*'''Platform Independent'''
** Fixed a bug that would allow pick and drop on disabled items because code allowed to be dropped on.
*'''GTK''':
** Fixed issue where if a menu entry is of the form '''my_entry''', then only '''myentry''' will appear ( bug#18716).
** Fixed a bug in <e>{EV_TEXT}.selected_text</e> where if the text contained non-ASCII character, then it will just return the UTF-8 sequence of those Unicode characters instead of the Unicode characters.
** Fixed <e>{EV_DRAWABLE}.draw_sub_pixel_buffer</e> and <e>{EV_PIXEL_BUFFER}.sub_pixel_buffer</e> when the rectangle provided is larger than the image it would cause a crash.
** Fixed a precondition violation in the implementation of <e>{EV_PIXEL_BUFFER}.get_pixel</e>.
*'''Windows''':
** Fixed contract violations when closing/destroying a dialog.
** Fixed contract violation when wiping out a notebook.
** Fixed various issues on Windows with <e>EV_TEXTABLE</e> components when the text contains Unicode characters that generate a surrogate pair in UTF-16, the Windows API always refers to UTF-16 code units while at the Eiffel level we still refer to character position.
** Fixed a by one error when mapping a caret position to the actual caret position of the underlying Windows implementation which has %R%N and not just %N.
==EiffelStudio 13.11==
'''Improvements'''
* Added support for GTK3.